Answers:
脚本通常在运行时进行编译,而宿主语言将在编译时进行编译。这意味着如果脚本更改,我们不需要重新编译。重新编译一个完整的游戏可能需要几分钟到几个小时,这意味着对生产力的巨大冲击。
通常,关键代码或后端代码不会被编写脚本。这段代码应该运行很快,而内存管理通常至关重要。
在游戏中,游戏逻辑和配置通常包含在脚本文件中。这些脚本可以由非程序员(如设计师)轻松更新以调整游戏玩法。脚本语言很简单,并且为此目的以宽容的方式行事。
通常,脚本语言还用于实时执行脚本。这对于调整一些游戏元素甚至调试非常有用。许多游戏为此目的(主要是内部目的)提供了一个控制台。
您很可能只通过脚本就可以使用现有的游戏引擎来创建游戏。的游戏引擎层从而完全从游戏逻辑层分离。像这样,通常可以使用现代引擎轻松创建FPS或RTS游戏,但是任何类型的游戏都是不可能的。MMO可能需要另一种引擎。
因此,最重要的是去耦。上面列出的好处通常会超过创建或集成脚本语言的额外工作。
您问错了问题。我认为,真正的问题是我们为什么要忍受C,C ++,Java等“非脚本”语言?答案是原因之一:性能。(也许还有惯性,但是惯性是由于性能而存在的,任何能够编写出色的C / C ++ / Java的人都可以编写至少可传递的Ruby / Python / Lua / JavaScript。)
我们使用“脚本”语言(这实际上意味着非常高级的垃圾收集,并且通常以某种形式进行松散的键入和动态编译),因为对于任何人(包括程序员)来说,它们通常都是更容易编写代码的语言。愚蠢的事情,例如记得在malloc之后释放代码或确保代码是异常安全的,或者记得将所有析构函数虚拟化。如果我们的计算机速度无限快,那么我们将对所有内容使用“脚本”语言。