我一直在研究从头开始构建一个基本的游戏引擎,在制作了其他引擎共有的功能列表之后,其中一个更重要的事实是它们具有嵌入式脚本语言,如lua或蟒。
我的问题是嵌入式脚本语言如何优于仅创建用户可以包含在c ++文件中的头文件(或其类似内容),这使得他们可以访问许多函数和状态。我确信那里有一个非常好的答案,我还没有发现它。
除了为什么需要它之外,什么是像游戏引擎这样的语言使用的语言?
答案 0 :(得分:6)
Lua是一种比C ++简单得多的语言,编辑它所需的只是一个文本编辑器。这使得能够将设备和最终用户手中的事件和/或高级游戏逻辑编写脚本。动态类型和垃圾收集允许他们编写非常简洁的代码,专注于游戏逻辑,而不是使用C ++等语言获得的所有系统级管理工作。沙箱也容易得多。
Lua是一个受欢迎的选择,因为它是小型,可移植,可破解的ANSI C代码库;易于嵌入,扩展,并且 - 最重要的是对于游戏开发人员 - 它具有最小的运行时间(最快的解释语言之一)。它也是易于学习/读/写语法的完美组合,但具有强大的功能,如协程,在游戏中非常有用。
答案 1 :(得分:2)
包含脚本语言的原因是允许用户自定义行为,而无需重新编译代码。
我不确定你在问题的第二部分提出了什么问题。你在问其他语言是用什么的,或者你在问Lua这样的语言有哪些用途?
如果你问其他语言对此有什么好处,那么一种语言就是Tcl。 Tcl从一开始就被设计为嵌入式脚本语言,非常成熟和强大,并且非技术人员可以轻松学习。
对于哪些脚本语言有用...配置文件是一种方法。通过使用编程语言而不是具有名称/值对的文本文件,它允许用户向其启动文件添加逻辑。例如,您可以允许用户为键盘上的键分配不同的功能;使用编程语言,他们可以为不同的计算机添加不同的功能。或者,如果您正在创建类似RPG的游戏,也许您可以为不同的角色类分配不同的键。如果扮演一个法师,F12可能会被施放一个咒语,但如果作为战士f12玩可能会做一个完成打击。
有许多方法可以使用脚本语言,还有许多不同的语言可供选择。这一切都归结为允许您的用户自定义游戏的行为,而无需重新编译代码。
答案 2 :(得分:2)
游戏开发人员可能会发现这篇文章有助于理解为什么使用嵌入式语言。
http://www.grimrock.net/2012/07/25/making-of-grimrock-rapid-programming/
另一个很好的理由是,除非你与游戏用户分享你的源代码并且他们都是C程序员,诸如lua之类的语言使得用户可以扩展游戏,例如看看魔兽世界。