【问题标题】:Why embed lua into a game engine?为什么要将lua嵌入到游戏引擎中?
【发布时间】:2012-08-15 09:02:00
【问题描述】:

我一直在研究从头开始构建一个基本的游戏引擎,在列出了其他引擎共有的功能之后,更重要的事情之一是它们具有嵌入式脚本语言,如 lua 或蟒蛇。

我的问题是嵌入式脚本语言如何优于仅制作用户可以包含在 c++ 文件中的头文件(或类似的东西),从而使他们能够访问许多功能和状态。我敢肯定那里有一个很好的答案,只是我还没有偶然发现它。

除了为什么需要它之外,像 lua 这样的语言在游戏引擎之类的应用中还有哪些用途?

【问题讨论】:

标签: scripting lua embed


【解决方案1】:

您可能会发现游戏开发人员撰写的这篇文章有助于理解为什么使用嵌入式语言。

http://www.grimrock.net/2012/07/25/making-of-grimrock-rapid-programming/

另一个很好的理由是,除非您与游戏用户共享源代码并且他们都是 C 程序员,否则 lua 等语言使用户可以扩展游戏,例如看魔兽世界。

【讨论】:

    【解决方案2】:

    Lua 是一种比 C++ 简单得多的语言,编辑它所需要的只是一个文本编辑器。这将脚本事件和/或高级游戏逻辑的能力交到您的设计师和最终用户手中。动态类型和垃圾收集使他们能够编写非常简洁的代码,专注于游戏逻辑,而不是像 C++ 这样的语言中的所有系统级家务琐事。沙盒也容易得多。

    Lua 是一个受欢迎的选择,因为它是小型、可移植、可破解的 ANSI C 代码库;易于嵌入、扩展,而且——对于游戏开发者来说最重要的是——它具有最小的运行时占用空间(最快的解释语言之一)。它也是易于学习/读/写语法的完美组合,但具有强大的功能,例如在游戏中非常有用的协程。

    【讨论】:

      【解决方案3】:

      包含脚本语言的原因是允许用户自定义行为而无需重新编译代码。

      我不确定您在问题的第二部分中要问什么。您是在问使用了哪些其他语言,还是在问像 Lua 这样的语言使用了哪些方式?

      如果您问还有哪些其他语言对此有好处,Tcl 就是其中一种语言。 Tcl 从一开始就被设计为一种嵌入式脚本语言,并且非常成熟和健壮,非技术人员很容易学习。

      至于什么脚本语言适合...配置文件是一种方式。通过使用编程语言而不是具有名称/值对的文本文件,它允许用户将逻辑添加到他们的启动文件中。例如,也许您允许用户为键盘上的按键分配不同的功能;使用编程语言,他们可以为不同的计算机添加不同的功能。或者,如果您正在创建类似 RPG 的游戏,也许您可​​以为不同的角色类别分配不同的键。如果是法师,F12​​可能是施法,但如果是战士,F12可能是最后一击。

      有多种使用脚本语言的方法,并且有多种不同的语言可供选择。这一切都归结为允许您的用户自定义游戏的行为,而无需重新编译代码。

      【讨论】:

      • 感谢您的快速响应,我的主要问题实际上是“嵌入脚本语言与提供可以访问引擎功能的头文件相比有什么优势”,编译时间是唯一的优点吗?
      • 我想说不需要编译器是第一大原因。它允许您的所有用户自定义游戏,而不仅仅是那些可以访问编译器的用户。此外,它还降低了门槛——非程序员的用户可以更轻松地自定义游戏,因为脚本语言通常更容易被非程序员学习。
      猜你喜欢
      • 2011-06-30
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      相关资源
      最近更新 更多