1.3为什么使用Lua
对于游戏开发而言,Lua是较好的选择,其设计的核心目标是可扩展性,因此在最初设计时就考虑到要能够集成在大型应用中。因为有了这样的设计目标,所以非常容易在应用程序中加入Lua脚本。Lua的易集成的特性还使得Lua可以很方便地与父程序通信。游戏程序员都希望脚本语言能够简单地实现游戏设计,在这方面,Lua也能够胜任。
Lua免费、小巧、快速且易移植。所有的游戏开发者和游戏公司都喜欢“免费”的工具。通常讲,一分钱一分货,但是对于Lua来说,它完全超出你的预期。Lua采用了非常灵活的发布协议,它有极少的源代码,运行轨迹十分紧凑,在编译时间和运行时内存占用上都有很好的性能表现。
要说Lua最让人惊喜的地方,应该是它的执行速度。对于任何脚本语言的技术方案,游戏开发者的第一反应就是:“脚本语言太慢了,帧率一定不会很理想。”但这个说法对Lua是不成立的,事实上,我们还没有看到任何一个项目因为Lua的使用而造成瓶颈。最后,游戏开发界正在迎接一次新的硬件周期,我们将要学习如何使用一组新的平台。因为Lua的易移植性,当我们的技术储备转移到新的平台时,至少有一部分是不会过时的。
Lua是非常容易学习的语言。不需要了解很高级的编程概念(如对象和继承),大部分具有计算机学习背景的人都可以在短期内掌握它的基础知识并且马上投入正式的工作。如果团队成员熟悉其他的语言,那么Lua可以轻松上手,很适合那些非程序员背景的团队成员,它们也能对游戏功能和美术部分进行修改或创建。
在我们公司,最近刚刚发布了第13款使用Lua开发的游戏。我们的团队虽然很小,但是也有程序员、美术师和设计师的标准构成。当我们开始一个新的项目时,首先要确定项目的技术需求(什么是我们还没有而需要去实现的?)和设计需要的功能。程序员可以负责技术设计部分,专注于那些他们擅长的技术难题。同时,设计师和美术师可以马上开始着手界面流程和核心游戏功能的设计工作。通常,美术师(包括2D和3D)还会花一部分时间确定游戏的视觉需求。与此同时,3位熟悉Lua的设计师开始构建游戏基础、游戏数据及核心游戏系统。他们甚至都不需要等着程序员,如果需要什么功能一般就直接先用Lua代替。这样我们就可以进行非常高效率的游戏开发,因为团队的每个人都能从一开始就“热火朝天”干起来。
有一个项目要特别提起,在我们为2004年美国总统大选开发选举游戏模拟器的时候,我们已经可以用Lua开发出完整的游戏原型来验证AI和游戏流程,然后再回过头来重新用C++实现那些核心的部分。快速的原型开发可以让一个开发者就能够完成设计和开发环节最有价值的部分,这也是业界少有的高效率。