游戏内脚本将控制 NPC/AI 逻辑。

如果我要实现游戏内脚本功能,它应该支持哪种语言?

请记住,我的实现将在多个平台上运行,例如 .net、flash、javascript 和 java。

列出的可能性的优点和缺点是什么?实施解释器需要多长时间?

游戏脚本编写者正在寻找哪些功能?其他游戏正在实施什么?

我想投票给 javascript,因为每个人都可以读写它。

你怎么看?

有帮助吗?

解决方案

我会使用 Lua,因为它非常容易嵌入。嵌入 Python 似乎很复杂,我并没有真正追求这一点。

关联 如果您想了解更多有关嵌入 Lua 及其优点/缺点的信息,可能会进一步有用。

其他提示

使用Lua。 它是一种美丽的语言,在游戏行业广泛采用.

大多数平台都有 Lua 绑定:

还有 llvm-lua项目, ,这可能有助于将Lua移植到其他平台。

至于 JavaScript 作为宿主平台......这个主题经常出现在 Lua 邮件列表, ,但尚未发布正式的解决方案。如果你 真的 需要在 JS 中托管 Lua,请在 Lua 邮件列表中询问,也许有人可以分享他们在该主题上的经验。

我更喜欢 Python,因为它可以绑定多种语言。

我认为你的意思是“集成”解释器,而不是“实现”它。根据您的技能,为脚本语言创建解释器可能会花费大量时间。

我确信 Python 和 Lua 具有 .NET 和 Java 的绑定——您可以嵌入解释器。不知道Javascript和Flash是否有绑定。

Python 的问题在于它有三种变体,都是由不同的人制作的。

  • 用于 .NET 的 IronPython
  • 用于 Java 的 Jython
  • 和常规的 CPython

我没有参与过 Jython,所以我不会对此发表评论。但 IronPython 和 CPython 之间存在某些可移植性问题。例如:IronPython 不支持本机 C 扩展。如果用 CPython 编写的脚本使用了这些脚本,那么将很难将它们移植到 IronPython。此外,如果 IronPython 脚本使用任何 .NET 库,您将很难将它们移植到 CPython。

另一方面,Lua 的实现来自一个地方,我预计不会出现这样的问题。

这取决于您的代码的复杂程度(NPC 的行为会变得多么复杂)。Tcl、Lua 和 JavaScript 用于简单任务。用这些语言快速编写大量代码往往会变得难以维护(特别是对于临时用户而言)。

Squirrel 使用类似 C 的语法,大多数人都会熟悉这种语法,但是工具支持怎么样?如果您必须用记事本编写所有内容,那也会严重限制您。

Python 是一种成熟的语言,易于学习(只需将 Lua“教程”与 Python 附带的“教程”进行比较即可)。虽然各种 Python 版本可能看起来令人生畏(请参阅 罗希特的回答),游戏中的 Python 代码对于所有这些都是相同的。它附带一个 IDE (IDLE),还有其他支持 Python 的 IDE,可以为您提供代码完成、调试、运行测试用例等。

如果你想使用 Python 考虑使用 无堆栈 因为它在线程方面比普通的 CPython 更好。它被用在一些 MMORPG(EVE Online、IIRC)中,因此它在游戏中有一些记录。另外,它非常适合延续(这是它最初开发的部分原因),这是游戏中使用的“模拟”类型逻辑的一个很好的模型。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top