我是游戏开发人员,目前正处理为我们公司编写跨平台,多线程引擎的过程。可以说,游戏引擎中最强大的工具之一就是它的脚本系统,因此我正在寻找一种新的脚本语言来集成到我们的引擎中(目前使用相对基本的内部引擎)。
所需脚本系统的主要功能(按重要性排序)为:
到目前为止,我已经积累/使用Lua,Squirrel(OO语言,基于Lua)并编写了一个ActionScript 2虚拟机。
那么,您推荐哪种脚本系统符合上述标准? (如果可能的话,您是否也可以发布或链接到您可能拥有的其他脚本语言的任何比较)
谢谢, 格兰特
答案 0 :(得分:9)
答案 1 :(得分:7)
Lua 多年来一直用于视频游戏行业。轻巧高效。
话虽如此,ChaiScript和Falcon可以满足您的需求,并且语言水平高于Lua,但历史和社区支持较少。
答案 2 :(得分:7)
Lua非常适合您的需求。我会以相同的顺序接受它们。
Lua是最快的脚本语言之一。编译速度快,运行速度快。
Lua在任何具有ANSI C编译器的平台上编译,其中afaik包括所有游戏平台。
Lua可以预编译,但作为一种非常动态的语言,大多数错误只能在运行时检测到。预编译的代码(作为字节码)在大小方面通常比源代码更大。
有许多Lua / C ++绑定工具。
它不支持多线程(你不能从多个线程访问解释器的单个实例),但你可以有多个解释器实例,每个线程一个,甚至每个游戏对象一个。
答案 3 :(得分:6)
答案 4 :(得分:3)
到目前为止,我们已经与Squirrel好运了。 Lua非常受欢迎,正在成为一个标准。
我建议你更关心内存而不是速度。大多数脚本语言都“足够快”,如果它们变慢,你总是可以将一些功能推回到C ++中。但是,它们中的许多都会耗费大量内存,并且在控制台内存上比CPU时间更加稀缺。无限的内存消耗最终会让你崩溃,如果你只需要为解释器分配4MB,那就像必须从窗口中抛出30个纹理来腾出空间。
答案 5 :(得分:2)
只是不要期望自动C ++绑定库太多,大多数都是缓慢和限制性的。最好为自己的对象做自己的绑定。
至于并发,LuaLanes或自己滚动。如果您的C ++程序已经是多线程的,只需从每个线程调用单独的LuaStates,并在需要时使用您自己的C ++共享结构作为通信通道。
你可能已经知道,Lua中最经常重复的答案是“滚动你自己的”,这通常是最好的建议!除非它是关于绑定到常见的C / C ++库,在这种情况下很可能已经有一个。
答案 6 :(得分:2)
如果您还没看过,我建议您查看Angelscript。
我已经在跨平台环境(仅使用重新编译的Windows和Linux)中成功使用它,它可以很好地与C ++(对象和代码)集成。
它是轻量级的,支持多线程(从某种意义上说是问题),运行良好并编译为可以提前完成的字节代码。
答案 7 :(得分:1)
从Python开始。
如果您能证明自己需要更快的速度,请查看Stackless Python。这就是EVE Online用于游戏的内容。
答案 8 :(得分:0)
JavaScript可能是一个合理的选择,因为大量的努力已经用于优化用于Web浏览器的各种实现。
答案 9 :(得分:0)
这些想到了: