当前位置:首页 » 网页前端 » 一体化脚本和lua
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

一体化脚本和lua

发布时间: 2023-05-14 11:20:20

1. 为什么用 lua 替换 luajit

1、新建一个名为1.lua的文件春笑或,里面只有一句话print("Hello Lua"),新建一个空的out.lua脚本文件
2、开始--运行--cmd
3、luac -o out.lua 1.lua
注: luac -o [编译后脚本名] [脚本名],必要时带上脚本路径,如:回车之后,再打开out.lua就可以看到编译好的字节码了然后实验一下,执行这个字节码脚本,可以看到lua原生的解释器可以直接解析luac编译出来的bytecode脚本,很方便!重点:
做完了以上的一系列之后,我照着这个方法编译项目中的脚本,然后在cocos2dx环境下使用,发现不行!于是又查了一下资料,发现2dx使用的是luajit,lua原生编译出来的bytecode和luajit是不兼容的,所以照着上面方法编译出来的bytecode脚本无法在2dx中使用。
解决这个问题其实很简单,就是用2dx自带的luajit编译lua脚本,下面附上luajit编译bytecode的方法:
1、在cocos2d-x-2.2.3\scripting\扒伍lua\luajit\LuaJIT-2.0.1\src目录下有个msvcbuild.bat批处理文件,需要先把luajit.exe这个东西给编译出来。
2、打开visual studio的命令行工具,这个只要装了vs都会有,在安装目录里面可以找到。
3、用vs的命令行工具cd到luajit的src目录
4、执行msvcbuild.bat批处理文件,编译出luajit.exe编译完成之后,会在src目录下生成一系列文件,其中有一个luajit.exe接下来就可以使用luajit.exe编译lua脚本的bytecode了:luajit -b [脚本名] [编译后的脚本名],执行完后会在src目录下生成一个已经编译成bytecode的jit.lua文件
下面把编译之后的jit.lua放在2dx中试一下,以HelloLua工程为基础,把jit.lua放到\samples\Lua\HelloLua\Resources下升早,修改AppDelegate.cpp中的lua调用为std::string path = CCFileUtils::sharedFileUtils()->fullPathForFilename("jit.lua");

2. javascript和LUA这两个脚本语言哪个强一些

lua运行更快。
lua经常和c/c++一册盯渗掘起用,而js主要用州喊和于web编程。至于强大,其实都差不多的,只是用途不同而已。

3. lua语言和易语言哪个做游戏辅助好,哪个更容易学 大伙给点建议

当者瞎态然是lua语言了。易首源语言不开放,怎么嵌入到你的游戏神纯中都是个问题。所以觉得很多学易语言的真心没思考清楚。

4. 浅谈游戏脚本策划的职能

脚本,是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。下面我们就来谈谈游戏脚本策划究竟是干什么的。想了解更多相关资讯请持续关注我们应届毕业生培训网。

游戏脚本策划主要干什么?

脚本策划近几年逐渐被重视。越来越多的引擎,越来越多的游戏,对游戏脚本的定义和开发的支持,让脚本的功能越来越强大,也成为游戏策划开发游戏的利器之一。 在介绍脚本策划之前,我有必要先解释一下什么叫脚本。

通俗点说,脚本就是利用程序实现一个简单的循环。放在游戏中的具体例子就是:大家都知道,网络游戏中的练级场所会定时、定点刷新怪物。但这怪物是怎么刷新出来的?当然不是由GM上线刷新,而是利用事先设计好的脚本,系统将自动按时间和地点刷新怪物。 而脚本策划所要做的,就是制作游戏中不同的脚本,比如上面提到的怪物刷新脚本、任务脚本等等。

游戏脚本策划是策划团队中的“程序员”

脚本策划一般需要有一定的编程基础,因为脚本本身其实就是一种程序。

脚本策划的工作内容比较单一,属于偏执行方面的策划,是策划团队中的“程序员”,主要负责游戏中脚本程序的编写。

脚本策划类同于程序员但又不同于程序员,因为会负责游戏概念上的一些设计工作。通常是游戏设计的执行者。因此游戏脚本策划必须要有编程功底,他的工作是任务等的脚本编写,以及管理程序提供的各种需要策划维护的脚本接口。

脚本语言就是游戏世界得以运行的基石

如果说开发语言是游戏程序得以运行的基石,那么脚本语言就是游戏世界得以运行的基石。一切剧本、图片、音乐、动画等皆是由脚本语言整合在一起并由程序解释执行的。所以可以说脚本是程序与剧本之间的桥梁,所以也是主程序与剧情负责必须共同掌握的部分。

脚本是如何形成的?程序设计的本身拓展和设计越来越复杂,而且分划出不同的类型,同时在继承发扬中丢失着,底层的构架被越来越多的人所抛弃,程序的东西,让人望而却步,无法驾驭,而脚本就如程序管理员一样抓住程序设计本身一些最基本的构成思路和运行机理,是一种总结概括,把重点提炼,把相关归类,把过程简化,保留一般的`规则。 脚本简单地说就是一条条的文字命令,这些文字命令是我们可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。

各个游戏公司常用的脚本有:LUA和PYTHON

有些游戏公司的脚本,是由公司程序员自己编写的一种开发工具。

常用游戏脚本中,目前应用比较广泛的有几种,一个是LUA,一个是PYTHON。

LUA脚本,在魔兽世界中发扬光大(后来的征途中好像也采用LUA脚本),好多游戏都开始接受并且学习这种脚本知识,以期能应用到自己游戏中,游戏脚本的好处就是,能够快速的调动一些游戏资源,利用自己手上的关键字段进行指挥,统领,运营部门最适用。

lua脚本与python脚本对比分析

1、两者的定位不同。python的定位在于自身的独立开发,即是说python定位于自己能解决所有的问题。lua定位在与其它的代码,尤其是C++代码进行相互配合的编译,单独的Lua本身没有任何的意义。

2、站在解决问题的角度上看。python依靠自身越来越强大的库,让编程者能实现越来越多,越来越复杂的问题。lua本身则必须与其它的编译语言结合,才能解决问题。以C+++lua来举例。单独的C++,因为C++的复杂性,在其解决问题提供方便的同时,也给程序员带来了很大的麻烦,这些麻烦主要有两个方面:1,C++本身,特别是能用好C++,对程序员就来说就是一个很高的要求。2,在解决复杂问题时,C++程序结构的复杂性和逻辑实现的复杂性,给程序员对程序的改进和维护带来了很大的麻烦。而C++与Lua的结合,让C++可以只负责为lua提供各种基本的功能函数库,而Lua调用这些库来实现各种逻辑功能。这种分工可以让程序员将程序中的基本代码库和逻辑实现代码进行分离,使程序的效率和可维护有了很大的提高。所以,如果真的要站在解决问题的角度来对python和lua进行对比的话。实际上,是C++与python进行对比,而与lua无关。

3、python与C++对比,我觉得python与C++对比的优势就在于其所提供的基本库,大大的降低了程序复杂度与可维护性对程序员本身的要求。比如,同样的功能,如果是C++来做的话,可能其程序员必须具备三年的经验,如果是python来做,而python又有解决问题所需要的库的话,一个具有一年程序经验的程序员可能就能完成了。但是,同样的,如果是C++与Lua结合来解决问题的话,可能就只需要半个高级程序员和一个只有c语言一年经验的程序员就可以了。半个高级程序员负责提供lua的函数库,另一个程序员,只需要用这些代码库实现逻辑就行了。

综上所述,C+++lua的开发模式,和python源代码库开发+python脚本开发模式其实是一样的。但是站在程序员的角度上来说,C+++lua就更为简单一些,因为除去基本的lua解释代码外,C++可以为lua动态提供各种函数库。而python程序员则必须受制于python所提供的各种功能库。所以,如果解决一些具有普遍性和重复性的问题时,python是有优势的,因为有很多的代码可以不用重写,而C+++lua则必须重构。如果是解决一些非普遍的问题,如果python本身没有提供解决这些问题的库的话,python程序员,就必须走回C++的老路。

5. 游戏开发中常用哪种脚本语言

随着《魔兽世界》(以下简称wow)在世界范围内流行,脚本渐渐被人们所熟知。由于wow强大的自定义界面系统,Lua这一脚本语言一举成名。x0dx0ax0dx0a其实早在Lua脚本语言被大众所熟知以前,游戏业内人士就已经开始使用脚本来开发游戏了。我们熟悉的很多国内的网络游戏大都运用了脚本开发,比如网游的长青树“梦幻西游和《大话西游2就大量应用了脚本技术。特别是《大话西游2》,其实现基于Lua脚本游戏开发的时间要远早于《魔兽世界》。在脚本技术上,国内与国外其实是站在同一起跑线上的,并不存在什么差距,这也为国内游戏产业赶超国外游戏产业提供了强有力的技术保证。x0dx0ax0dx0a在单机游戏时代,脚本这个词几乎很少出现,那么,为什么在网络游戏时代它却成了业界的宠儿呢?原因是多方面的。x0dx0ax0dx0a单机游戏时代,无论游戏主机还是PC机,它们的性能都非常低下,从而需要具有较高执行效率的编译型语言对机器的性能进行“压榨”。随着科技发展和硬件性能的不断提升,脚本逐渐被开发者所接受并利用,但这并不是脚本流行起来的决定性因素,真正的原因还在于游戏市场有这方面的需求。x0dx0ax0dx0a网络游戏时代的市场竞争激烈、变化莫测,如果延用单机时代一年半载才出一个新版本的开发方式,必然会被游戏行业激烈的市场竞争所淘汰。正是这种游戏市场需求旺盛和开发工具效率底下之间的矛盾,促使脚本语言迅速地发展起来。脚本的兴起使得传统编译吵碰型语言(asngC/C )的性能优势在硬件功效大幅攀升的今天已经不复存在。x0dx0ax0dx0a除了市场和硬件这两个因素之外,还有一点我们不能忽略。那就是用C/C 进行游戏开发的高成本和高项目风险。随着java/.net逐渐流行,学习C/C 编程语言的人越来越少,而网络游戏市场的需求却越来越庞大,在程序人才大量匮乏的情况下,造成了c,C 人才的高成本。即便是有能力雇佣大量C/C 程序员的公司,在开发游戏的过程中,也不能无视C/C 的高级特性和高度灵活性带来的高项目风险。C/C 是易学难精的编程语言,在开发大型项目的时候由于程序员的水平参差不齐,所以极易造成沟通不畅。不仅如此,c,C 滥用的高级特性也容易引入大量bug。正是由于这些原因,游戏公司开始在游戏中使用脚本,希望通过脚本来解决这些高成本、高风险的问题。x0dx0ax0dx0a二.脚本的现状x0dx0ax0dx0a脚本不仅解决了c/C 无法解决的开发效率难题,还降低了开发的成本和风险。因此脚本技术在游戏业内蓬勃发展起来,乎槐并且已经成为游戏业中不可或缺的一环。纵观当前脚本技术现状,形势一片大好,不仅语言百家争鸣,而且书籍种类也越来越多;不仅在游戏业界开花结果,在web等其它应用领域也大放异彩。x0dx0ax0dx0a首先,我们来看看目前比较流行的脚本:Python、Lua、ruby和Erlang。Python和Lua是网络游戏开发的中坚力量;ruby凭借 rubyonrails的web开发框架的强劲力量,其在游戏业的发展前途亦不可小视;Erlang在高并发性上的原生优势吸引了无数追求高性能网游服务器的开发人员的目光。x0dx0ax0dx0a其次,我们来看看书籍方面。大家都知道,文字对语言的普及起到了催化剂的作用,甚至可以看作是语言的有机组成部分。Python经过基金会的多年经营而得到NASA、Google重用的原因,就是由于其相关书籍种类比较丰富;Ruby随着升顷谈RoR的流行,这两年行情看好,书籍也出版得越来越多了;Erlang是典型的少众语言,但随着多核时代的来临和高并发网络应用的需求,Erlang有着光明的发展前景,现在<>等书也已经在策划出版了;反观Lua,虽然目前越来越流行,但由于它晦涩的接口设计和缺乏大型应用的支持,使得相关书籍寥寥无几。x0dx0ax0dx0a最后,我们把焦点重新聚集到游戏开发行业中,其实不难发现,除了前文提到的《魔兽世界》和网易经典“西游系列”使用了脚本外,现在大多数比较流行的程序也都使用了脚本,如腾讯的QQgame))和搜狐的《天龙八部》等。不仅如此,现今的游戏引擎也都提供了脚本接口,无论是商业的unreal引擎还是开源的 OGRE,无一例外。x0dx0ax0dx0a三.脚本的优势x0dx0ax0dx0a脚本之所以能够在游戏业中找到自己的一席之地,是因为网络游戏市场需要一个快速开发方案来避免C/C 开发带来的项目高成本和高风险。那么,脚本相对于C/C 这类编译型语言到底有什么优势呢?x0dx0ax0dx0aI易于学习,代码可维护性强x0dx0ax0dx0a脚本的语法通常都非常简单,也没有太多高阶的特性,学习的门槛较C/C 低得多,比如Python可能只需要花一个下午即可学会。这使得游戏开发公司可以招聘完全没有脚本、编程经验的新手,通过低成本的培训,他们便能迅速地走上工作岗位。除易于学习外,脚本代码也有较强的可维护陛(尽管写出没有人看得懂的Lua代码也非难事)。因为脚本没有很多高阶特性(如c 里的模板元编程就是高阶特性),所以脚本程序员就有更多的精力去架构、模式、重用和测试等工作,从而提高了代码的可维护性。相应地,正因为没有那么多让人困惑的高阶特性,也使得脚本代码“简洁”不少。x0dx0ax0dx0a2.降低开发成本x0dx0ax0dx0a如上所言,由于脚本易于学习,游戏开发公司可以大量起用新手,这正是降低成本的有效手段。那么如何来确保新手所写代码的质量呢?众所周知,新手无论用什么语言写程序肯定会出现bug,但用C/C 和Python做比较,可以看出,一个新手用C/c 编写出的程序所出现的bug肯定会比用Python编写出现的bug要多。由于c程序需要编译,而脚本程序(大部分)都可以直接解释执行,所以在排除 bug方面脚本也占有一定的优势,这也使脚本在降低成本的同时能够更好地保证代码质量。x0dx0ax0dx0a3.形成人才壁垒x0dx0ax0dx0a软件开发行业是一个颇为动荡的行业,无数的程序员都在跳槽和谋划跳槽的状态中生活,使用脚本开发形成人才壁垒是游戏业减少人才流动的有效手段。因为现在脚本除了在游戏业中非常流行外,并没有在其它行业形成广泛应用(虽然在web开发方面也有燎原之势,但终究不如在游戏业中的地位高)。这就使得游戏程序员很少会考虑非游戏行业的职位,但其它行业的程序员却可能会因为脚本的易学习性而转投游戏业。脚本除了能有效形成行业间的人才壁垒外,也能有效地形成企业间的人才壁垒。由于现有的脚本种类繁多,不同公司往往有不同的选择,甚至有些公司使用自己开发的脚本语言,所以程序员从公司A跳槽到公司B可能要学习使用另一种脚本,这就提高了跳槽的成本,从而减少了人才的流动。x0dx0ax0dx0a四.脚本的发展趋势x0dx0ax0dx0a依照目前趋势来看,脚本语言一定会更加的普及,而且会逐渐渗透到其它行业中。随着网络游戏从业人员数量的增长,脚本程序员也一直增加,而且Web2、0热潮引起的网络需求,也促成了一批批新脚本程序员的诞生。网络游戏市场就像一个正在滚动的雪球,推动着脚本的普及。x0dx0ax0dx0a随着脚本在游戏业中越来越流行,市场对生产效率的需要也会相应提高。脚本虽然在一定程度上缓解了生产效率与生产工具之间的矛盾,但仍然不够完善。由于市场竞争日趋激烈,而网络游戏在很多功能上的实现又都相差无几,如网络、数据库、图形甚至部分逻辑,这必然会引起网络游戏生产的组装化一一大量中间件相互组合形成新的网络游戏。从目前来看,Bigwofld、PhysX和Unreal等都是比较流行的网络游戏中间件。脚本语言则是粘合各个中间件的良好胶水语言,所以随着网络游戏的生产组装化,脚本将有更大的发展空间。x0dx0ax0dx0a那么,当脚本发展到如日中天的时候,可能取代C/C 这些编译型语言吗?笔者认为不会。脚本语言和编译型语言在生产效率和执行效率上各擅胜场,网络游戏既需要能快速应变的脚本,也需要能快速执行以提供更绚丽游戏效果的编译型语言。未来,它们之间一定会保持长久的和谐互补关系,相辅相成。x0dx0ax0dx0a五.结语x0dx0ax0dx0a综上所述,网络游戏时代是上帝赐予脚本语言发展的绝好时机,脚本语言很快将迎来光芒四射的时代。脚本语言拥有编译型语言无可比拟的生产效率优势,所以它们将互补互助并肩奋战在游戏的最前线。

6. 什么是Lua

Lua是一种 简单橡缓、可扩展、可移植及高效的脚本滑仔语言

是一种面向 C 的 API 存在一个特别的 虚拟栈 ,通过这个栈与lua交换数据
栈大大简化了C API 的设计与使用,还能保证 其他语言与lua 有效的隔离开

从设计目的来讲:
1.就是梁让模某一个功能模块,通过lua进行扩展
2.想只靠lua开发程序,是不太现实的

7. 请问自己的软件如何运行Lua脚本

programming in lua 有相关的例子,一般脚本语言和c/c++之类的互相调用分两类,一类是扩展,就是将c/c++模块封装起来给脚本语言用,用swig做封装很方便的,一类是嵌入,就是在c/c++等应用中嵌入lua引擎,一般是用来分离经常变化的逻辑部分,比如WOW就是用lua语言作为扩展,用户可以编写lua脚本来完成一些特定功能的机器人。你要做的就是使用lua c api来在你的程序中执行lua。类似这种:

int iErr = 0;
lua_State *lua = lua_open (); // Open Lua
luaopen_io (lua); // Load io library
if ((iErr = luaL_loadfile (lua, "test.lua")) == 0)
{
// Call main...
if ((iErr = lua_pcall (lua, 0, LUA_MULTRET, 0)) == 0)
{
// Push the function name onto the stack
lua_pushstring (lua, "helloWorld");
// Function is located in the Global Table
lua_gettable (lua, LUA_GLOBALSINDEX);
lua_pcall (lua, 0, 0, 0);
}
}
lua_close (lua);

8. 游戏脚本语言,是不是lua超越python了

哪个语言好 哪个语言不好 都是不客观的,片面的
但是在实际应用上lua确实比python更加普遍,只是因为更适合
lua本身的定位 就是嵌入其他程序,完成一部分的逻辑的功能 而本身不提供强大的机制,因此lua本身就只有200K左右
而python的定位则完全相反,python需要能独立完成所有工作,因此它的定位是大而全,不同于小而精的lua,它的大小 有好几十M,这样的大小,对于大部分的游戏而言,不能被接受,所以lua使用的更多