关于lua:游戏引擎脚本语言

关于lua:游戏引擎脚本语言

Game Engine Scripting Languages

我正在尝试从Ogre3d渲染引擎中构建出一个有用的3d游戏引擎,以模拟我提出的一些想法,并且已经出现了一些十字路口。有许多可用的脚本语言,我想知道是否有一种或两种经过审查并且有适当的关注者。

LUA和Squirrel似乎更受审查,但我对所有人开放。

最理想的情况是,为该语言提供一种便于分发和易于加载的编译形式。


一个有趣的选项是stackless-python。这是在《夏娃在线》游戏中使用的。


语法是个问题,Lua类似于Javascript,但花括号用类似Pascal的关键字替换。它具有很好的语法功能,不需要分号,但空格也不重要,因此您甚至可以删除所有换行符并使它仍然有效。作为以C开头的人,我会说Python比起其他所有语言都具有深奥的语法。

LuaJIT的速度也大约是Python的10倍,而Lua解释器要小得多(150kb或大约15,000行C,您可以实际阅读和理解)。您可以让用户编写游戏脚本,而无需嵌入大量语言。另一方面,如果将解析器部分从Lua中撕裂,则它会变得更小。


Python / C API手册比整个Lua手册(包括Lua / C API)更长。

Lua的另一个原因是对协同程序的内置支持(一个OS线程内的协作式多任务处理)。它可以使大约1000多个看似独立的脚本彼此并排运行。就像每个怪物/武器一个脚本一样。

(为什么人们在SO上用大写字母写Lua?它是" Lua"(请参见此处)。)


对Lua再投票一次。体积小,速度快,易于集成,这对于现代控制台来说很重要-您可以轻松控制其内存操作。


由于它是C库,因此我建议使用JavaScript或Squirrel,后者是我个人最喜欢的两者,因为它们与C的距离更近,尤其是在处理表/结构和类的方式方面。由于所有相似之处,最容易习惯C编码器。

但是,如果您使用JavaScript并找到了Ogre3D的HTML5版本,则您只需最少的更改(如果有的话)就可以将游戏代码直接移植到Web版本中。

这两个都是不错的选择,并且都有各自的优缺点,但是由于您可能已经在C中工作,所以两者绝对是最容易学习的。如果您使用的是Java,则同样适用;如果是Game Maker,则不需要任何一个,除非您尝试制作一个人们不需要Game Maker本身即可运行的可执行文件,在这种情况下,祝您找到可以运行这些扩展程序的扩展名。


python也很不错,因为它具有实际的OGRE绑定,以防万一您需要即时修改较低级别的内容。我不知道Lua有任何等效的绑定。


嵌入解释器没有问题。目前,我对功能和性能更感兴趣。 LUA和Squirrel都被解释了,这很好,因为我正在开发的游戏之一是包含可修改的代码,该代码在游戏中具有编辑器。

我很想听听python的知识,因为我相信它在战场系列中的使用。


我不推荐LUA,它具有独特的语法,因此需要一些时间来习惯。根据谁来编写脚本,这可能不是问题,但是我会尝试使用相当容易访问的内容。

我可能会选择python。它通常编译为字节码,因此您需要嵌入解释器。但是,如果必须,则可以使用PyPy例如将代码转换为C,然后进行编译。


我会选择Lua,因为编写绑定非常容易,许可证非常友好(MIT),并且现有库也倾向于使用该许可证。 Scheme也很好并且易于绑定,这就是为什么将它选作Gimp图像编辑器的原因。但是Lua很棒。魔兽世界使用它作为一个非常著名的例子。 LuaJIT为您提供本机编译的性能。小于纯C的一个数量级。


推荐阅读