是否有任何脚本语言快速,易于嵌入,并且非常适合高级游戏编程?

时间:2011-06-16 00:07:34

标签: performance scripting scripting-language

首先,我知道有很多与此相关的问题,但它们似乎都没有帮助我的具体情况。特别是,lua和python不能满足我的需求,我也希望如此。可能没有符合我要求的语言,但在得出结论之前,听到更多意见是很好的。 :)

正如您可能已经猜到的那样,我需要这样一种语言来构建我正在尝试创建的游戏引擎。这个游戏引擎的目的是为用户提供构建游戏的基本工具,同时让她可以自由创建许多不同类型的游戏。

出于这个原因,脚本语言应该能够直观地处理游戏概念。除此之外,应该很容易定义各种类型,子类型略有不同的属性,动态查询和修改对象,等等。

此外,游戏开发者应该可以处理他们在脚本语言中遇到的每种情况。虽然渲染器和网络等基本组件将在C ++中实现,但游戏特定的机制(如围绕行星旋转几百个对象)将使用脚本语言进行处理。这意味着脚本语言必须非常快,1/10 C速度可能是最小的。

然后是调试问题。有关发生错误的函数,堆栈跟踪和变量状态的信息应该是可访问的。

最后但并非最不重要的是,这是一个由一个人完成的项目。即使我想,我也没有资源在胶水代码上花费数周时间。将语言与我的项目集成起来应该比集成lua更难。

检查两种建议的语言,lua和python,lua是快速的(luajit)并且易于集成,但它的标准调试工具似乎缺乏。更糟糕的是,lua默认情况下根本没有类型系统。当然你可以自己实现它,但语法总是很奇怪而且不直观。

另一方面,Python使用起来非常舒服并且具有基本的类系统。然而,它并不容易集成,它的范例并不真正涉及类型检查,对于更复杂的游戏来说它绝对不够快。我再次指出一切都将在python中完成。我很清楚python对于90%的代码来说可能足够快。

还有Scala,到目前为止我还没有看过。 Scala似乎实际上满足了大多数要求,但是使用C嵌入Java VM似乎并不容易,而且通常看起来java希望您围绕java而不是相反的方式构建应用程序。我也不确定Scala的功能范例是否适合直观的游戏开发。

编辑:请注意,这个问题不是不惜任何代价寻找解决方案。如果没有比lua更好的语言,我只会妥协并使用它(我实际上已经把这个东西链接到我的程序中)。我只是想确保在这样做之前我没有错过任何更合适的东西,因为lua对我来说远非完美的解决方案。

4 个答案:

答案 0 :(得分:2)

您可以考虑mono。我只知道这种方法的一个成功案例,但它是一个很大的问题:带有单脚本的C ++引擎是Unity中采用的方法。

答案 1 :(得分:1)

对于可嵌入性,您可以查看Tcl,或者如果您使用的是Scheme,请查看SIODGuile。当然,我会建议使用Lua或Python,但是你的问题排除了它们。

答案 2 :(得分:1)

由于似乎没有人比lua / luajit更了解一个组合,我想我会留下它。感谢大家对此的投入。我个人觉得lua作为游戏编程的高级语言非常缺乏,但它可能是最好的选择。所以对于任何人发现这个问题并且具有相同的要求(快速,易用,易于嵌入),你要么必须使用lua / luajit,要么自己制作。 :)

答案 3 :(得分:1)

尝试使用Ring编程语言 http://ring-lang.net

它是通用的多范式脚本语言,可以嵌入到C / C ++项目中,使用C / C ++代码扩展和/或用作独立语言。支持的编程范例是势在必行,程序化,面向对象,功能,元编程,使用嵌套结构的声明式编程和自然编程。

语言简单,试图自然,鼓励组织,并提供透明的实施。它具有紧凑的语法和一组功能,使程序员能够在很短的时间内创建自然界面和声明性域特定语言。它非常小,速度快,并配有智能垃圾收集器,可将内存置于程序员控制之下。它支持许多编程范例,附带有用且实用的库。该语言旨在提高生产力并开发可扩展的高质量解决方案。

编译器+虚拟机是15,000行C代码

在C / C ++程序中嵌入Ring Interpreter https://en.wikibooks.org/wiki/Ring/Lessons/Embedding_Ring_Interpreter_in_C/C%2B%2B_Programs