3

我正在开发简单的游戏作为一种爱好。对于我的新项目,我希望某些部分可以编写脚本。我熟悉python,但不介意学习新语言。这是问题:

我计划在 C++ 中实现寻路、视野、碰撞检测等,但希望将脚本用于 AI 状态机、脚本事件。这种工作使用什么类型的结构?我想我可以让 C++ 程序运行一个 python 进程,该进程又调用 C++ 方法,但它似乎效率低下。另一个想法是开发一个从 python 调用的库,这听起来也不是很吸引人。这样做的常规方法是什么(除了编写我自己的语言和解析器?)我听说 lua 很流行嵌入到 C 程序中。

4

4 回答 4

6

根据我的个人经验,luatcl都有很棒的 C API 用于嵌入。两种语言都非常简单。如果您正在编写命令接口,我可能会说使用 tcl,但如果您只是使用嵌入式解释器,我会推荐 lua。鉴于您使用的是 C++,您可能还想查看luabind API,我听说过关于它的好消息。

对于 AI 脚本或其他状态机类型的东西,Zed Shaw 的这篇博文非常适合阅读。对于复杂的脚本,基于协程的 AI 代码看起来要好得多,而不是管理大量的状态及其转换。

如果你使用 python,你最好扩展而不是嵌入

于 2010-10-28T08:36:26.080 回答
4

运行 Python 进程?不...

嵌入.

于 2010-10-28T08:29:19.450 回答
3

根据个人经验,我强烈推荐 Google 的 Javascript 引擎 V8。它非常高效,用 C++ 编写,非常容易嵌入,没有其他依赖项和非常漂亮的本机界面。

http://code.google.com/p/v8/

于 2010-10-28T08:30:54.390 回答
2

我同意 Tcl 和 Lua 是最容易嵌入到 ac/c++ 应用程序中的一种。主要是因为这从一开始就是一个设计决定。另一种为嵌入而设计的语言是Guile。

如果您对在您的 c++ 应用程序中嵌入脚本语言感兴趣,请查看Swig。Swig 可以自动为许多脚本语言创建胶水代码,包括你已经知道的 python。主要优点是它可以处理许多不同的脚本语言。

于 2010-10-28T11:48:35.543 回答