Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 游戏引擎脚本语言_Lua_Scripting Language_Ogre3d_Squirrel - Fatal编程技术网

Lua 游戏引擎脚本语言

Lua 游戏引擎脚本语言,lua,scripting-language,ogre3d,squirrel,Lua,Scripting Language,Ogre3d,Squirrel,我正在尝试用Ogre3d渲染引擎构建一个有用的3d游戏引擎,用来模拟我提出的一些想法,这些想法有点像一个十字路口。现在有很多脚本语言可用,我想知道是否有一两种经过审查并拥有合适的追随者 LUA和Squirrel似乎更受审查,但我对任何人都持开放态度 最好是该语言有一个编译的表单,以便于分发和加载。我会选择Lua,因为编写绑定非常容易,许可证非常友好(MIT),现有库也倾向于使用该许可证。Scheme也很好并且易于绑定,这就是为什么它被选为Gimp图像编辑器的原因。但是Lua非常棒。魔兽世界使用它

我正在尝试用Ogre3d渲染引擎构建一个有用的3d游戏引擎,用来模拟我提出的一些想法,这些想法有点像一个十字路口。现在有很多脚本语言可用,我想知道是否有一两种经过审查并拥有合适的追随者

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


最好是该语言有一个编译的表单,以便于分发和加载。

我会选择Lua,因为编写绑定非常容易,许可证非常友好(MIT),现有库也倾向于使用该许可证。Scheme也很好并且易于绑定,这就是为什么它被选为Gimp图像编辑器的原因。但是Lua非常棒。魔兽世界使用它,作为一个非常引人注目的例子。LuaJIT提供本机编译性能。它来自纯C。

我不推荐LUA,它有一种特殊的语法,所以需要一些时间来适应。取决于谁来编写脚本,这可能不是问题,但我会尝试使用一些相当容易访问的工具


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

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


我很想了解python,因为我相信在《战场》系列中看到了它的使用

语法是一个品味问题,Lua类似于Javascript,但用类似Pascal的关键字替换了大括号。它有一个很好的语法特性,即不需要分号,但空格仍然不重要,因此您甚至可以删除所有换行符并使其仍然有效。作为一个从C开始的人,我想说,与所有其他语言相比,Python是一种语法深奥的语言


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

一个有趣的选项是。这是在Eve在线游戏中使用的。

Python/CAPI手册比整个Lua手册(包括Lua/CAPI)要长

Lua的另一个原因是内置的对协程的支持(一个操作系统线程内的协作多任务)。它允许一个人拥有1000个看似独立的脚本,它们彼此并行运行,速度非常快。比如每个怪物/武器有一个脚本


(为什么人们总是用大写字母写Lua?这是“Lua”(参见)。

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

python也很不错,因为它有实际的OGRE绑定,以防您需要动态修改较低级别的内容。我不知道任何关于Lua的等价绑定。

< P>因为它是C++库,我建议JavaScript或松鼠,后者是我更喜欢C++的两个个人的最爱,特别是它如何处理表/结构和类。对于C++编码器来说,由于所有的相似性,它将是最容易适应的。 但是,如果您使用JavaScript并找到一个HTML5版本的Ogre3D,您应该能够将游戏代码直接移植到web版本中,而只需进行最少(如果有)必要的更改


这两个都是不错的选择,两者都有其利弊,但两者都肯定是最容易学的,因为你可能已经在C++中工作了。如果您使用Java,这一点也可能成立,如果是Game Maker,则您不需要任何一个,除非您尝试制作一个人们不需要Game Maker本身来运行的可执行文件,在这种情况下,幸运的是找到一个扩展来运行这两个程序。

squirrel的一个优点是内存管理。它使用引用计数算法与GC相结合。这提供了非常稳定的实时行为(CPU突发空闲),请参见