在哪些情况下,哪些脚本语言比其他语言更好?
感谢所有答案,请提供描述,并描述该语言在哪种情况下表现出色。
(请记住,每个答案使用一种语言)
在哪些情况下,哪些脚本语言比其他语言更好?
感谢所有答案,请提供描述,并描述该语言在哪种情况下表现出色。
(请记住,每个答案使用一种语言)
Answers:
Lua广泛用于游戏行业。从独立游戏(Aquaria)到AAA游戏(文明)。
核心原因?我要说的是,因为它易于学习且易于融入您的游戏中。但是我敢肯定,对于Python也可以这样说。一般来说,脚本编写并不困难。我认为您应该选择Lua的真正原因是因为它被证明可以为您提供更多的学习资源。
松鼠有一段有趣的历史。它是在游戏设计师遇到Lua不可预知的垃圾收集问题之后构建的,并且疯狂的一切都是空的,即使它不存在也是如此。
松鼠是《Left 4 Dead 2》中使用的粗俗语言。该API非常类似于lua(Squirrel的作者喜欢Lua的设计)。
所以Squirrel是一种很棒的语言,因为它是第二代Lua。它采纳了好主意,消除了烦人的怪癖。
同样来自Lua:
松鼠新手:
松鼠的主要缺点是它不是Lua。Lua被广泛使用。但这不是一个问题,松鼠是一个轻松的胜利。但是,语言的流行通常本身就是有用的功能,因此决定并不是那么明确。
Google的V8 Javascript。
专业版:
相当容易使用
不断进步
强大而灵活
其他正如许多人提到的那样,javascript是一种常见的编程器工具。将其添加到我的游戏中比其他语言开放了更多有能力的人。它还支持大量的转换和转换,以节省程序员的工作量,还使其真正易于使用,并与STL一起很好地工作。
可能的CON:
文档可能会造成混淆,这确实不是最好的。
例子通常是一个怪异的网。缺乏扎实的简单性,它的层次比实际更高。
模板有时会讨厌或避免使用这些模板。
SDK代码库大小生成的代码大小可能会显得过大。
这取决于游戏及其目标平台。
运行100个非玩家角色的游戏(RTS游戏)与仅运行2个游戏(街霸)的需求有所不同。在PC上运行的游戏与在控制台上运行的游戏具有不同的需求。
Lua很受欢迎
GameMonkey由多个团队使用。它比Lua更快,并且在线程方面更好。
Python已在多个游戏中使用。
您可以下载JavaScript引擎,因此可以使用JavaScript。JavaScript程序员比其他任何类型的程序员都要多。
也有专门的语言。
SCUMM已用于多种冒险游戏中,尤其适合那些游戏。
为了完整起见,另一个选项是mono-script,它允许您使用.NET框架的Novell实现进行脚本编写。这是Unity所使用的。这是有关在应用程序中嵌入单声道的另一页。
Mono框架比那里的大多数(也许全部?)脚本语言要快,因为它没有被解释,并且由于编译器和指令集之间有一层,它使您可以使用多种语言进行编程,包括C#和方言。 Python,Lua和Javascript。
我不确定它是否在所有平台上都是免费的。
就个人而言,当我为自己的项目选择脚本语言时,我发现AngelScript(请参见下面的链接)比Lua绑定到C ++要容易得多。(我实际上为此编写了一个小型包装程序库,以使其更易于使用,但付出了一定的灵活性。)
http://www.angelcode.com/angelscript/
话虽这么说,我怀疑Lua具有一些使商业游戏开发商引人注目的优势:
(a)比AngelScript更成熟和广泛
(b)它的语法对于非程序员来说更容易(AngelScript非常类似于C ++)
(c)它的占地面积比AngelScript小(至少就我而言)
但是,如果您只是在编写一个业余项目,我会说AngelScript至少值得一看。
选择一种脚本语言而不是另一种脚本语言取决于您的特定要求。
您必须选择的一些选项可能是:
解释器的速度-如果仅使用脚本功能(即开发人员编写静态行为的脚本),那么速度以及功能完善且可扩展的API可能是最重要的方面。我在LUA上有一些很好的经验。
易于学习,可访问性-对于内容/级别设计人员而言,可能难以学习更复杂的脚本语言(取决于背景)以生成动态行为。在这种情况下,在这里使用易学(即常用)和有据可查的语言可能更为合适。JavaScript或Python可能是一个很好的解决方案。
工作流集成-如果您具有使用现有工具的特定生产管道,则在其他工具使用完全不同的工具的情况下,使用对于特定情况似乎最有效的语言可能是个坏主意。如果您有多个程序员在使用不同的工具,则这尤其有效。在这种情况下,使用“不太合适”的语言可能会更有效。
如果您正在为Windows编写标题并编写在公共语言运行时(CLR)之上运行的托管代码-例如在C#中-我建议您看一下将(Iron)Python集成为脚本语言。
以我的经验,Python非常容易教给非程序员/设计师。对于开发人员而言,提取起来更容易,因为它的读取方式本质上类似于伪代码。动态键入只是帮助使几乎没有甚至没有以前的编码经验的人建立并快速使用该语言的方面之一。
除了易于学习和强大的语言外,Microsoft的CLR和语言团队(Anders Hejlsberg,Eric Lippert,Mads Torgersen,Jim Hugunin等)在通过新的Dynamic工具公开编译器和运行时功能方面也做了出色的工作.NET 4中的语言运行时(DLR),使静态类型代码与动态类型代码之间的互操作性更加简单。到目前为止,从我所看到和尝试过的内容来看,样板代码已降至最低。它将使您的代码库保持干净和可维护。
您可以利用它来保持游戏脚本部分和引擎之间的摩擦很小。两者都在同一个VM中运行还可以使运行时在执行过程中优化更多代码。
如果您有一个将使用脚本语言的现有团队或将使用脚本的主管(级别)设计人员,那么请选择他们所选择的语言。他们将花时间在上面,所以他们应该得到满足。
[盐粒]如果您没有任何人或没有长期计划, 请自己动手做。是的,为一种脚本语言编写编译器和/或解释器可能需要一到两周的时间,但是从长远来看,灵活性将付出很多倍。只是不要误入歧途,重塑脑袋。[/盐粒]