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

随着《魔兽世界》(以下简称wow)在全球的火爆,剧本也逐渐被人们所熟悉。Lua,一种脚本语言,因为wow强大的自定义界面系统而出名。\x0d\\x0d\其实早在Lua脚本语言为大众所知之前,游戏行业的人就已经开始使用脚本开发游戏了。很多我们熟悉的国产网游,大多采用脚本开发。比如网游《梦幻西游》《大话西游2》的常青树,大量使用脚本技术。尤其是《大话西游2》,其基于Lua脚本的游戏开发要比《魔兽世界》早很多。在脚本技术方面,中国和国外其实是在同一起跑线上,没有差距,这也为国内游戏产业赶超国外游戏产业提供了强有力的技术保障。\ x0d \ x0d \在单机游戏时代,剧本这个词很少出现,为什么在网游时代却成了业界的宠儿?原因有很多。\x0d\\x0d\在单机游戏时代,无论是游戏机还是PC的性能都很低,需要使用执行效率高的编译语言来“压榨”机器的性能。随着科技的发展和硬件性能的不断提升,脚本逐渐被开发者接受和使用,但这并不是脚本流行的决定性因素。真正的原因在于游戏市场的需求。\x0d\\x0d\网游时代市场竞争激烈,变幻莫测。如果在单机时代一年左右开发出新版本的开发方法,就会被游戏行业激烈的市场竞争所淘汰。正是这种游戏市场的旺盛需求和开发工具的低效率之间的矛盾,推动了脚本语言的快速发展。脚本的兴起,使得在硬件效率大幅提升的今天,传统编译语言(ASNGC/C)的性能优势不复存在。\x0d\\x0d\除了市场和硬件这两个因素,还有一点我们不能忽视。那就是用C/C进行游戏开发的高成本和高项目风险.随着Java/的逐渐普及。NET,学习C/C编程语言的人越来越少,但是网游市场的需求却越来越大,导致在编程人才大量的情况下,C和C人才的成本很高。即使是有能力雇佣大量C/C程序员的公司,在开发游戏的过程中,也不能忽视C/C的高级特性和高灵活性带来的高项目风险。C/C是一种易学但难掌握的编程语言。在开发大型项目时,由于程序员水平参差不齐,容易造成沟通不畅。不仅如此,C和C滥用的高级特性也容易引入大量bug。正是基于这些原因,游戏公司开始在游戏中使用脚本,希望通过脚本解决这些高成本高风险的问题。\x0d\\x0d\ II。scripts \x0d\\x0d\ Scripts的现状不仅解决了c/C无法解决的开发效率问题,还降低了开发成本和风险。因此,脚本技术在游戏行业蓬勃发展,成为游戏行业不可或缺的一部分。纵观脚本技术的现状,形势一片大好,不仅语言争鸣,书籍种类也越来越多;不仅在游戏行业,在web等其他应用领域也是如此。\x0d\\x0d\首先我们来看看现在比较流行的脚本:Python,Lua,ruby,Erlang。Python和Lua是网游开发的中坚力量;Ruby依托rubyonrails的web开发框架的强大力量,在游戏行业的发展前景不容小觑。Erlang在高并发方面的原生优势吸引了无数追求高性能网游服务器的开发者的目光。\ x0d \ x0d \其次,我们来看看书。众所周知,文字对语言的普及起着催化作用,甚至可以视为语言的有机组成部分。Python因其丰富多样的相关书籍,经过基金会多年的运作,得到了美国国家航空航天局和谷歌的重用。Ruby随着RoR的走红,这两年市场看好,出书越来越多;Erlang是典型的小众语言,但随着多核时代的到来和高并发网络应用的需求,Erlang有着光明的发展前景。现在>:书已经在策划出版了;另一方面,目前Lua越来越流行,但由于其接口设计晦涩难懂,缺乏大规模应用的支持,相关书籍很少。\x0d\\x0d\最后,我们再次聚焦游戏开发行业。其实不难发现,除了上面提到的《魔兽世界》和网易经典《西游记系列》之外,现在大部分比较热门的节目也使用脚本,比如腾讯的QQgame和搜狐的《龙族》。不仅如此,现在的游戏引擎也都提供脚本接口,无论是商业虚幻引擎还是开源OGRE,无一例外。\x0d\\x0d\ III。脚本的优势\x0d\\x0d\脚本能在游戏行业找到自己的位置是因为网游市场需要一个快速的开发计划,避免C/C开发带来的项目高成本、高风险。那么,脚本相对于C/C等编译语言有什么优势呢?\ x0d \ x0d \ I易学,代码可维护。\ x0d \ x0d \脚本的语法通常非常简单,没有太多的高级功能。学习门槛比C/C低很多,比如Python可能只需要一个下午就能学会。这使得游戏开发公司可以招聘到完全没有脚本和编程经验的新手,通过低成本的培训,让他们快速上岗。脚本代码除了简单易学之外,还具有很强的可维护性(虽然写没人看得懂的Lua代码并不难)。因为脚本没有很多高阶特性(比如C中的模板元编程就是高阶特性),脚本程序员有更多的精力去做架构、模式、复用和测试方面的工作,从而提高代码的可维护性。相应的,正是因为没有那么多令人困惑的高阶特征,脚本代码才显得“简洁”。\x0d\\x0d\ 2。降低开发成本\ x0d \ \ x0d \如上所述,由于脚本简单易学,游戏开发公司可以大量使用新手,这是降低成本的有效手段。那么如何保证新手写的代码质量呢?众所周知,不管新手用什么语言写程序,肯定都会有bug,但是对比C/C和Python,可以看出,用C/C写的新手程序,bug肯定会比用Python写的多。因为C程序需要编译,脚本(大部分)可以直接解释执行,所以脚本在消除bug方面也有一定的优势,这也使得脚本在降低成本的同时可以更好的保证代码质量。\x0d\\x0d\ 3。形成人才壁垒\ x0d \ \ x0d \软件开发行业是一个相当动荡的行业,无数程序员都生活在跳槽和跳槽的状态中。利用剧本开发形成人才壁垒是游戏行业减少人才流动的有效手段。因为现在游戏行业很流行脚本,但是在其他行业还没有广泛应用(虽然在web开发上有燎原之势,但毕竟没有在游戏行业那么高)。这使得游戏程序员很少考虑非游戏行业的工作,而其他行业的程序员可能会因为脚本的易学习惯而转行到游戏行业。剧本可以有效形成行业和企业之间的人才壁垒。由于现有的脚本种类繁多,不同的公司往往会有不同的选择,甚至有的公司会使用自己的脚本语言,所以从A公司跳槽到B公司的程序员可能要学习使用另一种脚本,增加了跳槽的成本,减少了人才的流动。\x0d\\x0d\ IV。脚本语言的发展趋势\x0d\\x0d\按照现在的趋势,脚本语言会更加普及,会逐渐渗透到其他行业。随着网游从业人数的增长,脚本程序员的数量不断增加,Web2和0热潮引发的网络需求也促成了一批新的脚本程序员的诞生。网游市场像滚雪球一样,推动了剧本的流行。\x0d\\x0d\随着脚本在游戏行业的日益普及,市场对制作效率的需求也会相应增加。虽然剧本在一定程度上缓解了制作效率和制作工具之间的矛盾,但仍然不够完美。由于市场竞争越来越激烈,而且网络游戏很多功能的实现都差不多,比如网络、数据库、图形甚至一些逻辑,这必然会导致网络游戏制作的组装——大量的中间件相互组合,形成一个新的网络游戏。目前比较流行的网游中间件有Bigwofld,PhysX,Unreal。脚本语言是一种很好的粘合中间件的胶水语言,所以随着网游的制作和组装,脚本会有更大的发展空间。\x0d\\x0d\那么,当脚本如火如荼的时候,有没有可能取代C/C之类的编译语言呢?我不这么认为。脚本语言和编译语言都擅长生产效率和执行效率。网络游戏既需要可以快速改编的脚本,也需要可以快速执行的编译语言,以提供更精美的游戏效果。未来他们一定会保持长期和谐互补的关系,相得益彰。\x0d\\x0d\五、结语\x0d\\x0d\综上所述,网游时代是上天给予脚本语言发展的绝佳机遇,脚本语言即将迎来一个光芒四射的时代。脚本语言具有编译语言无可比拟的生产力优势,因此它们将相互补充,并肩战斗在游戏的最前沿。