什么是很好的脚本语言可以集成到高性能应用程序中?

Gra*_*ers 8 c++ scripting performance cross-platform

我是游戏开发人员,现在正在为我们公司编写跨平台,多线程引擎.可以说,游戏引擎中最强大的工具之一就是它的脚本系统,因此我正在寻找一种新的脚本语言来集成到我们的引擎中(目前使用相对基本的内部引擎).

所需脚本系统的主要功能(按重要性顺序)是:

  • 性能 - 必须快速调用和更新脚本
  • 跨平台 - 需要相对容易地移植到多个平台(不介意一点工作,但只需要几天时间移植到每个平台)
  • 离线编译 - 能够脱机预解析脚本代码几乎是必不可少的(有助于文件大小和加载时间)
  • 能够与c ++很好地集成 - 应该能够支持语言中的OO代码,并将此功能与c ++集成
  • 多线程 - 不是必需的,但是需要的.最好能够在不会相互干扰的多个线程上运行它的单独实例(即底层代码中没有需要在运行时更改的全局变量).基于Critical Section和Mutex的解决方案无需适用.

到目前为止,我已经积累了使用Lua,Squirrel(OO语言,基于Lua)并编写了一个ActionScript 2虚拟机的经验.

那么,您建议哪种脚本系统符合上述标准?(如果可能的话,您是否也可以发布或链接到您可能拥有的其他脚本语言的任何比较)

谢谢,格兰特

Yes*_*ke. 9

由于Blizzard-Activision将其作为开发魔兽世界加载项的主要平台,Lua的优势在于受到众多知名视频游戏开发人员和知识渊博的开发人员的良好基础的时间考验.


Kla*_*aim 7

Lua多年来一直用于视频游戏行业.轻巧高效.

话虽这么说,ChaiScriptFalcon是很好的候选人,可以满足您的需求和比Lua更高级别的语言,但历史和社区支持较少.


Dou*_*oub 7

Lua非常适合您的需求.我会以同样的顺序接受它们.

Lua是最快的脚本语言之一.编译速度快,运行速度快.

Lua在任何具有ANSI C编译器的平台上编译,其中afaik包括所有游戏平台.

Lua可以预编译,但作为一种非常动态的语言,大多数错误只能在运行时检测到.预编译代码(作为字节码)在大小方面通常比源代码更大.

有许多Lua/C++绑定工具.

它不支持多线程(您不能从多个线程访问解释器的单个实例),但是您可以拥有多个解释器实例,每个线程一个实例,甚至每个游戏对象一个实例.


Cra*_*rks 3

到目前为止,我们与Squirrel 的合作非常顺利。Lua 非常受欢迎,它正在成为一种标准。

我建议您更多地担心内存而不是速度。大多数脚本语言都“足够快”,如果它们变慢,您总是可以将其中一些功能推回到 C++ 中。然而,其中许多都会消耗大量内存,而在控制台上,内存是比 CPU 时间更稀缺的资源。无限制的内存消耗最终会让你崩溃,如果你必须为解释器分配 4MB,那就相当于必须将 30 个纹理扔出窗外以腾出空间。