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