我一直在研究从头开始构建一个基本的游戏引擎,在列出了其他引擎的通用功能后,其中一个更重要的事实是它们具有嵌入式脚本语言,如lua或python。
我的问题是,嵌入式脚本语言如何优于仅仅制作一个头文件(或类似文件),以便用户可以将其包含在c++文件中,从而使用户能够访问许多函数和状态。我确信有一个非常好的答案,只是我还没有偶然发现而已。
除了为什么需要它之外,像lua这样的语言在游戏引擎等东西中还有什么用途?
发布于 2012-08-20 09:51:23
Lua是一种比C++简单得多的语言,编辑它所需的只是一个文本编辑器。这就把编写事件脚本和/或高级游戏逻辑的能力交到了设计师和最终用户手中。动态类型和垃圾收集允许他们编写非常简洁的代码,专注于游戏逻辑,而不是像C++这样的语言中的所有系统级日常事务。沙箱操作也容易得多。
Lua是一种流行的选择,因为它很小、可移植、可破解的ANSI C代码库;易于嵌入、扩展,而且--对于游戏开发人员来说最重要的是--它的运行时占用空间最小(最快的解释语言之一)。它也是一个易于学习/读/写语法的很好的组合,但具有强大的功能,如协程,这在游戏中非常有用。
发布于 2012-08-20 08:16:48
包含脚本语言的原因是允许用户自定义行为,而不必重新编译代码。
我不确定你在问题的第二部分问的是什么。您是在问还使用了哪些其他语言,还是在问像Lua这样的语言是以什么方式使用的?
如果你问其他语言在这方面有什么优势,Tcl就是其中之一。Tcl从一开始就被设计成一种嵌入式脚本语言,非常成熟和健壮,很容易被非技术人员学习。
至于脚本语言有什么好处……配置文件是一种方法。通过使用编程语言而不是具有名称/值对的文本文件,它允许用户向其启动文件添加逻辑。例如,您可能允许用户为键盘上的键分配不同的功能;使用编程语言,他们可以为不同的计算机添加不同的功能。或者,如果您正在创建像RPG这样的游戏,也许您可以为不同的角色类指定不同的关键点。如果扮演法师,F12可能会施展咒语,但如果扮演战士,f12可能会是最后一击。
使用脚本语言的方式有很多,有很多不同的语言可供选择。归根结底,这一切都是为了允许用户自定义游戏的行为,而不必重新编译代码。
发布于 2012-08-20 15:17:54
您可能会发现这篇由游戏开发人员撰写的文章对理解为什么使用嵌入式语言很有用。
http://www.grimrock.net/2012/07/25/making-of-grimrock-rapid-programming/
另一个很好的原因是,除非你和你的游戏用户分享你的源代码,他们都是C程序员,像lua这样的语言使得用户可以扩展游戏,例如看看魔兽世界。
https://stackoverflow.com/questions/12030767
复制相似问题