2

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

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

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

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

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

我正在考虑投票支持 javascript,因为每个人都可以阅读和编写它。

你怎么认为?

4

7 回答 7

5

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

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

于 2009-09-16T07:31:03.980 回答
5

使用 Lua。它是一门优美的语言,被游戏行业广泛采用

大多数平台都有 Lua 绑定:

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

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

于 2009-09-16T08:30:15.687 回答
3

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

于 2009-09-16T07:22:12.237 回答
0

我认为您的意思是“集成”解释器,而不是“实现”它。根据您的技能,为脚本语言创建解释器可能需要很多时间。

于 2009-09-16T07:26:20.340 回答
0

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

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

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

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

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

于 2009-09-16T07:40:11.373 回答
0

这取决于你的代码有多复杂(NPC 的行为会变得多复杂)。Tcl、Lua 和 JavaScript 用于简单的任务。用这些语言编写大量代码很快就会变得无法维护(尤其是对于临时用户)。

Squirrel 使用大多数人都会习惯的类 C 语法,但是工具支持呢?如果你必须用记事本写所有东西,那也会严重限制你。

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

于 2009-09-16T08:01:34.310 回答
0

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

于 2009-09-16T12:32:50.457 回答