4

我正在尝试用 Ogre3d 渲染引擎构建一个有用的 3d 游戏引擎,用于模拟我提出的一些想法,并且已经走到了一个十字路口。有许多可用的脚本语言,我想知道是否有一两种经过审查并有适当的追随者。

LUA 和松鼠似乎更受审查,但我对任何人都持开放态度。

最好最好有一个用于分发和易于加载的语言的编译形式。

4

9 回答 9

6

一个有趣的选择是stackless-python。这是在 Eve-Online 游戏中使用的。

于 2008-09-17T21:54:59.680 回答
5

语法是口味问题,Lua 类似于 Javascript,但花括号替换为类似 Pascal 的关键字。它有一个很好的语法特性,分号从来不需要,但空格仍然不重要,所以你甚至可以删除所有换行符并让它仍然工作。作为一个从 C 开始的人,我会说 Python 与所有其他语言相比具有深奥的语法。

LuaJIT 的速度也大约是 Python 的 10 倍,而且 Lua 解释器要小得多(150kb 或大约 15k 行的 C 行,您可以实际阅读和理解)。您可以让用户编写游戏脚本,而无需嵌入大量语言。另一方面,如果你将解析器部分从 Lua 中剥离出来,它会变得更小。

于 2008-09-17T21:52:34.133 回答
4

Python/C API 手册比整个Lua 手册(包括 Lua/C API)还要长。

Lua 的另一个原因是对协程的内置支持(一个 OS 线程内的协作多任务)。它允许一个人拥有 1000 多个看似独立的脚本,它们彼此并排运行得非常快。就像每个怪物/武器左右一个脚本一样。

(为什么人们在 SO 上这么大写 Lua?它是“Lua”(见这里)。)

于 2008-09-17T22:04:00.080 回答
1

再投一票给 Lua。小巧、快速、易于集成,这对于现代游戏机来说很重要——您可以轻松控制其内存操作。

于 2008-09-17T22:14:31.817 回答
0

我会选择 Lua,因为编写绑定非常容易,许可证非常友好(MIT),现有的库也倾向于使用上述许可证。Scheme 也很好并且易于绑定,这就是为什么选择它用于 Gimp 图像编辑器的原因。但是 Lua 简直太棒了。魔兽世界使用它,作为一个非常引人注目的例子。LuaJIT 为您提供本地编译的性能。它纯 C还不到一个数量级。

于 2008-09-17T21:34:11.133 回答
0

我不推荐 LUA,它有一种特殊的语法,所以需要一些时间来适应。根据谁将编写脚本,这可能不是问题,但我会尝试使用一些相当容易获得的东西。

我可能会选择python。它通常编译为字节码,因此您需要嵌入解释器。但是,如果必须,您可以使用 PyPy 例如将代码翻译成 C,然后编译它。

于 2008-09-17T21:42:11.957 回答
0

嵌入解释器是没有问题的。我现在对功能和性能更感兴趣。LUA 和 Squirrel 都被解释了,这很好,因为我正在构建的游戏之一是包含可修改的代码,它在游戏中有一个编辑器。

我很想听听有关 python 的信息,因为我相信它在战场系列中的使用。

于 2008-09-17T21:47:10.400 回答
0

python 也很好,因为它具有实际的 OGRE 绑定,以防万一您需要即时修改较低级别的内容。我不知道 Lua 的任何等效绑定。

于 2011-04-26T07:01:09.623 回答
0

由于它是一个 C++ 库,我建议使用 JavaScript 或 Squirrel,后者是我个人最喜欢的两者,因为它更接近 C++,特别是它如何处理表/结构和类。由于所有的相似性,这对于 C++ 编码器来说是最容易习惯的。

但是,如果您使用 JavaScript 并找到 Ogre3D 的 HTML5 版本,您应该能够将您的游戏代码直接移植到 Web 版本中,而只需进行最少的(如果有的话)更改。

这两个都是不错的选择,各有利弊,但两者肯定都是最容易学习的,因为您可能已经在使用 C++ 工作。如果您正在使用 Java,则可能同样如此,如果它是 Game Maker,则您不需要任何一个,除非您尝试制作人们不需要 Game Maker 本身来运行的可执行文件,其中案例,祝你好运找到运行其中任何一个的扩展。

于 2015-09-12T22:03:43.973 回答