如何在游戏中添加脚本语言?


25

假设我有一个用C ++编写的游戏。但我想为其添加一些修改或脚本功能。如何为您的游戏添加脚本功能?


最受欢迎的语言:请参见Lua(编程语言)Lua(编程语言)-C API 示例: IBM在这方面有一篇很棒的文章:嵌入LUA
Tamara Wijsman 2010年

确切步骤很大程度上取决于您要添加的语言。看看gamedev.stackexchange.com/questions/11/…–
tenpn

Answers:


27

首先,您应该确定游戏的哪个部分编写了脚本。一种选择是拥有一个完全脚本化的游戏,这意味着尽管时间紧迫的后端操作是用C ++编写的,但所有游戏逻辑都是用脚本语言编写的。设计人员将后端用作从高级脚本语言调用的API。另一方面,您几乎没有使用脚本的特定位置,例如用户界面或脚本序列,而大多数游戏代码仍是C ++。每种方法都有优点(速度,灵活性,编译时间,游戏范围等),但是您需要事先确定。

一旦知道了如何使用脚本,现在就需要确定是要使用现有的脚本语言还是自己的特定于域的语言。如今,有许多脚本语言可供选择,它们具有不同的设计目标和目标受众,因此我不确定是否值得再创建自己的脚本语言。如果您决定实施自己的方法,那么这里有一些资源:

Lua是一种流行的轻量级且易于嵌入的脚本语言。它使用堆栈在主机和嵌入式语言之间进行通信,并且已成功用于许多专业游戏中Sol2简化了绑定Lua和C ++的过程。如果您不喜欢Lua的语法,则Moonscript是一种可编译为Lua并添加了一组不错的功能的语言。

其他选项包括AngelCode,它允许您直接调用C和C ++函数。PythonRuby的嵌入有点复杂,但是编程起来却非常愉快。如果要嵌入Python,请看一下Boost.Python。另一个想法是嵌入JavaScript以利用为浏览器开发的快速脚本引擎(请参阅V8SpiderMonkey)。


2
我已经为当前的游戏项目实现了脚本语言,其主要优点是可以完全控制语言基元。预建脚本解决方案是通用的,您可能不需要它们提供的所有功能。你绝对应该考虑滚动你自己的语言,除非你是一定的,你可以做的东西,是你的游戏比现有的解决方案。
乔恩·普迪

就我个人而言,我喜欢Guile,它与C有很好的集成。唯一的问题是速度,但是在接下来的几个月中2.0版本也应该有所改进。
乔D

极好的答案。第一段可以总结为“游戏开发人员创建了内容使用的API”。
ashes999 2011年

自定义语言(脚本或其他语言)的通用术语是DSL,这可能有助于了解您是否要阅读。
Patrick Hughes

2

在此处写了一篇有关将GameMonkey脚本嵌入使用DragonFire SDK的游戏的文章。

基本上,想法是将C \ C ++函数公开给您选择的脚本语言,然后从脚本中使用它们。在本教程中,我介绍了DragonFire SDK的2个功能。在游戏开始时,我从脚本调用onStart函数,而在更新时,我从脚本调用onTimer函数。

希望有帮助!


1
我还在这里上传了一个视频演示:bit.ly/dnCkar
astk 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.