我该如何在我的游戏中实现脚本编写?

4
我正在尝试编写一个游戏并实现脚本,以便在开发后期更改数字时无需重新编译所有内容。
我的问题是我不知道脚本应该如何与游戏进行接口。我正在使用的脚本语言是angelscript
目前,我有一个状态:介绍状态,我正在将其用作游戏“引擎”中大多数模块的测试(它更像是一组松散的类)。它将加载和绘制图片和文本,并使用脚本更新自己,然后可能切换到虚拟状态以测试状态管理器。
在编写过程中,我意识到使用脚本来完成大部分更新需要将我的游戏引擎的大部分模块注册到脚本,并且几乎将大部分代码移动到脚本语言中。就个人而言,我宁愿让C++部分完成大部分工作,并让脚本语言提供要在公式/绘图/其他方面使用的数字。
然而,如果我是正确的,那么这样做将需要大量不同的更新模块来更新游戏中需要更新的大部分内容,并要求它们全部被加载,并且C++代码必须单独运行每个更新函数。或者,有一种实现脚本和程序互操作性的方法我正在忽视。无论哪种方式,有人能帮我找出将脚本实现到我的游戏中的最佳方式吗?

1
谢谢大家的帮助。我正在注册游戏引擎的所有部分中的函数,以便让AngelScript使用它们。尽管我没有想到,但最终脚本可能会完成大部分非绘图逻辑。 - sonicbhoc
4个回答

6

对于这样一个大问题,其实没有正确的答案。您需要像在C++中分离引擎/游戏逻辑一样进行操作。定义一个API,脚本可以调用该API,并允许它执行所需的操作。在脚本中注册该API中的函数,并在angelscript中使用该API。该API应该是什么完全取决于您的需求以及您想要给脚本编写者提供的功能。


2

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


2
如果您看一些实际的例子,比如Garry's mod或使用UnrealScript编写的游戏,您会发现现代游戏中相当多的逻辑都是在脚本中实现的。C/C++代码最适合用于引擎中的“静态”和容易成为瓶颈的部分,例如渲染器、物理引擎、低级网络等。脚本最适合用于内容(即游戏逻辑)。
顺便说一句:我个人认为最好的游戏脚本语言是Lua。它提供了与C/C++的轻松集成,文档非常完善,并且对JavaScript用户来说也很熟悉。
我曾经就是为了这个目的使用过Lua,它表现得非常出色。看看所有使用Lua编程的游戏吧。而且它运行速度非常快。
编辑:我没有完全阅读问题...抱歉。这是我的真实回答 ;)

1
其实我不太喜欢Lua...我曾试着使用它,但是它的语法 - 包括语言和API - 让我感到很烦。我喜欢AngelScript,因为它更容易集成,并且具有C/C++语法。另外,现在我想起来了,我可能会像你建议的那样在脚本中处理逻辑。感谢你的帮助。 - sonicbhoc

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接