4

首先,我知道有很多与此相关的问题,但似乎没有一个对我的具体情况有所帮助。特别是,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

4 回答 4

2

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

于 2011-06-18T08:12:02.430 回答
2

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

它是一种通用的多范式脚本语言,可以嵌入到 C/C++ 项目中,使用 C/C++ 代码进行扩展和/或用作独立语言。支持的编程范例是命令式、过程式、面向对象、函数式、元编程、使用嵌套结构的声明式编程和自然编程。

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

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

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

于 2016-03-22T07:30:15.267 回答
1

由于似乎没有人比 lua/luajit 更了解组合,我想我会留在那里。感谢大家对此的意见。我个人觉得 lua 作为游戏编程的高级语言非常缺乏,但它可能是最好的选择。因此,无论谁发现这个问题并具有相同的要求(快速、易于使用、易于嵌入),您都必须使用 lua/luajit 或自己制作。:)

于 2011-06-17T19:47:26.400 回答
1

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

于 2011-06-16T00:23:53.857 回答