如何在游戏中实现脚本?

时间:2009-12-07 03:36:01

标签: c++ scripting logic game-engine

我正在尝试编写游戏并实现脚本编写,以便稍后在开发中,当我想要更改数字时,我不必重新编译所有内容。

我的问题是我不知道脚本应该如何与游戏接口。我正在使用的脚本语言是angelscript

现在,我有一个状态:介绍状态,我用它来测试游戏“引擎”中的大多数模块(它更像是一个松散的类集合)。它将加载并绘制图片并绘制文本,并使用脚本来更新自身,然后可能会切换到虚拟状态以测试状态管理器。

在编写它时,我意识到使用脚本进行大部分更新需要我register most of my game engine's modules使用脚本,并且几乎将大部分代码移动到脚本语言。就个人而言,我宁愿让C ++部分完成大部分工作,并且使用脚本语言提出要在公式/绘图/中使用的数字。

然而,如果我是对的,那么这样做将需要许多不同的更新模块,用于游戏中需要更新的大部分内容,并要求它们都被加载,并且C ++代码必须单独运行每个更新功能。

或者,有一种方法可以实现我忽略的脚本和程序互操作性。无论哪种方式,有人可以帮我弄清楚在我的游戏中实现脚本的最佳方法是什么?

4 个答案:

答案 0 :(得分:6)

真的没有对这么大的问题给出正确答案。你这样做就像在C ++中进行引擎/游戏逻辑分离一样。定义脚本可以调用的API,允许它根据您的要求进行操作。使用脚本在该API中注册函数,并在angelscript中使用API​​。该API应该完全取决于您的需求以及您希望为脚本编写者提供哪种功能。

答案 1 :(得分:3)

如果你想让AngelCode(或你选择的任何其他脚本方法)只是“想出一些数字”,嘿,就这样使用它 - 例如,在AngelCode中,通过向它们公开单个C ++来编译脚本你的函数,说“void ProvideNumberFor(字符串原因,数字值)”,脚本将负责根据需要多次调用该函数来“提供数字”,仅此而已。

答案 2 :(得分:2)

如果您熟悉Qt4 / Javscript,您可以随时使用QtScript http://qt.nokia.com/doc/4.5/qtscript.html

答案 3 :(得分:2)

如果你看一下像Garry的mod或用UnrealScript编写的游戏这样的真实例子,你会发现现代游戏中的相当多的逻辑是在脚本中实现的。 C / C ++代码最适合引擎的“静态”和容易出现瓶颈的部分,如渲染器,物理引擎,低级网络等。脚本最适合内容(即游戏逻辑)。

旁白:最好的游戏脚本语言恕我直言Lua。它提供了易于使用C / C ++的编译,具有良好的文档记录,并且对Javascript用户来说很熟悉。

我已经将Lua用于此目的,并且它做得非常好。看看所有的games programmed using Lua.而且,它的速度非常快。

编辑:我没有完全阅读这个问题......对不起。这是我的真实答案;)