4

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

我的问题是我不知道脚本应该如何与游戏交互。我使用的脚本语言是angelscript

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

在编写它时,我意识到使用脚本进行大部分更新需要我将大部分游戏引擎的模块注册到脚本中,并且几乎将大部分代码移动到脚本语言中。就个人而言,我宁愿让 C++ 部分完成大部分工作,并让脚本语言提出要在公式/绘图/其他中使用的数字。

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

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

4

4 回答 4

6

这么大的问题真的没有正确的答案。你这样做的方式与在 C++ 中进行引擎/游戏逻辑分离的方式相同。定义一个脚本可以调用的 API,允许它做任何你想让它做的事情。使用脚本注册该 API 中的函数,并在 angelscript 中使用该 API。该 API 应该是什么完全取决于您的需求以及您想赋予脚本编写者什么样的权力。

于 2009-12-07T03:40:57.377 回答
2

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

于 2009-12-07T03:44:17.280 回答
2

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

旁白:最好的游戏脚本语言恕我直言是Lua。它提供了与 C/C++ 的轻松集成,文档非常完善,并且对 Javascript 用户来说很熟悉。

我已经为此目的使用了 Lua,它做得很好。查看所有使用 Lua 编写的游戏。 此外,它的速度非常快。

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

于 2009-12-08T07:36:00.700 回答
1

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

于 2009-12-07T03:49:52.430 回答