假设我有一个用C ++编写的游戏。但我想为其添加一些修改或脚本功能。如何为您的游戏添加脚本功能?
假设我有一个用C ++编写的游戏。但我想为其添加一些修改或脚本功能。如何为您的游戏添加脚本功能?
Answers:
首先,您应该确定游戏的哪个部分编写了脚本。一种选择是拥有一个完全脚本化的游戏,这意味着尽管时间紧迫的后端操作是用C ++编写的,但所有游戏逻辑都是用脚本语言编写的。设计人员将后端用作从高级脚本语言调用的API。另一方面,您几乎没有使用脚本的特定位置,例如用户界面或脚本序列,而大多数游戏代码仍是C ++。每种方法都有优点(速度,灵活性,编译时间,游戏范围等),但是您需要事先确定。
一旦知道了如何使用脚本,现在就需要确定是要使用现有的脚本语言还是自己的特定于域的语言。如今,有许多脚本语言可供选择,它们具有不同的设计目标和目标受众,因此我不确定是否值得再创建自己的脚本语言。如果您决定实施自己的方法,那么这里有一些资源:
Lua是一种流行的轻量级且易于嵌入的脚本语言。它使用堆栈在主机和嵌入式语言之间进行通信,并且已成功用于许多专业游戏中。Sol2简化了绑定Lua和C ++的过程。如果您不喜欢Lua的语法,则Moonscript是一种可编译为Lua并添加了一组不错的功能的语言。
其他选项包括AngelCode,它允许您直接调用C和C ++函数。Python和Ruby的嵌入有点复杂,但是编程起来却非常愉快。如果要嵌入Python,请看一下Boost.Python。另一个想法是嵌入JavaScript以利用为浏览器开发的快速脚本引擎(请参阅V8和SpiderMonkey)。
我在此处写了一篇有关将GameMonkey脚本嵌入使用DragonFire SDK的游戏的文章。
基本上,想法是将C \ C ++函数公开给您选择的脚本语言,然后从脚本中使用它们。在本教程中,我介绍了DragonFire SDK的2个功能。在游戏开始时,我从脚本调用onStart函数,而在更新时,我从脚本调用onTimer函数。
希望有帮助!