游戏引擎脚本语言
我正在尝试从Ogre3d渲染引擎中构建出一个有用的3d游戏引擎,以模拟我提出的一些想法,并且已经出现了一些十字路口。有许多可用的脚本语言,我想知道是否有一种或者两种经过审查并且有适当的关注者。
LUA和Squirrel似乎更受审查,但我对所有人开放。
最佳的情况是,最好有一种用于分发和易于加载的语言的编译形式。
解决方案
回答
我会选择Lua,因为编写绑定非常容易,许可证非常友好(MIT),并且现有库也倾向于使用该许可证。 Scheme也很好并且易于绑定,这就是为什么将它选作Gimp图像编辑器的原因。但是Lua真是太棒了。魔兽世界使用它作为一个非常著名的例子。 LuaJIT为我们提供本机编译的性能。距离纯C语言还不到一个数量级。
回答
我不推荐LUA,它具有奇特的语法,因此需要一些时间来习惯。取决于谁将执行脚本编写,这可能不是问题,但是我将尝试使用相当容易使用的工具。
我可能会选择python。它通常编译为字节码,因此我们需要嵌入解释器。但是,如果必须,则可以使用PyPy例如将代码转换为C,然后进行编译。
回答
嵌入解释器没有问题。目前,我对功能和性能更感兴趣。 LUA和Squirrel都被解释了,这很好,因为我正在开发的游戏之一就是包含可修改的代码,该代码在游戏中具有编辑器。
我很想听听python,因为我相信它在战场系列中的使用。
回答
语法只是个趣味,Lua就像Javascript,但是花括号用类似Pascal的关键字代替。它具有很好的语法功能,即不需要分号,但空格仍然不重要,因此我们甚至可以删除所有换行符并使其仍然有效。作为以C开头的人,我会说Python与其他所有语言相比都是具有深奥的语法的人。
LuaJIT的速度也大约是Python的10倍,而Lua解释器要小得多(150kb或者大约15,000行C语言,我们可以实际阅读和理解)。我们可以让用户编写游戏脚本,而无需嵌入大量语言。另一方面,如果将解析器部分从Lua中撕裂,它会变得更小。
回答
一种有趣的选择是stackless-python。这是在《夏娃在线》游戏中使用的。
回答
Python / C API手册比整个Lua手册(包括Lua / C API)更长。
Lua的另一个原因是对协程的内置支持(一个OS线程内的协作式多任务处理)。它可以使大约1000多个看似独立的脚本彼此并排运行。像每个怪物/武器一个脚本左右。
(为什么人们在SO上这么大写Lua?它是" Lua"(请参见此处)。)
回答
对Lua再投一票。体积小,速度快,易于集成,对于现代控制台而言,重要的是我们可以轻松控制其内存操作。