回答:
通常、スクリプトは実行時にコンパイルされますが、ホスト言語はコンパイル時にコンパイルされます。つまり、スクリプトが変更されても、再コンパイルする必要はありません。完全なゲームの再コンパイルには数分から数時間かかる場合があり、これは生産性の大きな打撃を意味します。
通常、重要なコードまたはバックエンドコードはスクリプト化されません。このコードは高速で実行されるはずであり、多くの場合、メモリ管理が重要です。
ゲームでは、通常、ゲームのロジックと構成はスクリプトファイルに含まれています。これらのスクリプトは、プログラマではないデザイナー(デザイナーなど)が簡単に更新して、ゲームプレイを微調整できます。スクリプト言語は簡単で、そのために寛容な方法で動作します。
多くの場合、スクリプト言語はリアルタイムでスクリプトを作成するためにも使用されます。これは、ゲームプレイの要素を微調整したり、デバッグする場合にも役立ちます。多くのゲームは、この(主に社内の)目的のためのコンソールを提供します。
スクリプトを作成するだけで、既存のゲームエンジンを使用してゲームを作成することは可能です。したがって、ゲームエンジンレイヤーは、ゲームロジックレイヤーから完全に切り離されます。通常、最新のエンジンを使用してこのようにFPSまたはRTSゲームを簡単に作成できますが、どのジャンルでも使用できません。MMOはおそらく別のタイプのエンジンを必要とします。
結論としては、デカップリングです。上記の利点は、多くの場合、スクリプト言語を作成または統合するための余分な作業を上回ります。
間違った質問をしました。本当の質問は、なぜC、C ++、Javaなどの「非スクリプト」言語に我慢するのでしょうか。そして、答えは1つの理由です:パフォーマンス。(そしておそらく慣性ですが、その慣性はパフォーマンスのために存在し、優れたC / C ++ / Javaを作成できる人なら誰でも少なくとも許容できるRuby / Python / Lua / JavaScriptを作成できます。)
「スクリプト」言語(実際には、非常に高レベルのガベージコレクション、および通常は緩やかなタイピングと動的コンパイルを意味します)を使用します。一般に、プログラマーを含む誰もがコードを記述しやすい言語だからです。malloc後に解放することを忘れたり、コードが例外セーフであることを確認したり、すべてのデストラクタを仮想化することを忘れないなどの愚かなことです。コンピューターが無限に高速であれば、すべてに「スクリプト」言語を使用することになります。
ゲームロジック用のスクリプト言語は、ハードアーキテクチャとソフトレイヤの交互のソフトウェアアーキテクチャパターンの非常に良い例です。そのサイト(および私が確信している他のサイト)では、そうすることの利点について良い議論があります。
スクリプトの変更は簡単に展開できます。たとえば、スクリプトをデータベースに保持することができます。つまり、完全なバイナリ再デプロイと可能なサービス再起動の代わりに、単一のSQL UPDATEステートメントを発行するだけで、実行中のサービスにスクリプトをリロードするためのシグナルが続きます。
また、スクリプト言語は多くの場合、理解するのが簡単でプログラミングも簡単なので、大部分のコード(大規模なRPGの場合、メモリ管理/ポインターおよびCPUレベルの最適化を扱うもの)を必要としません。 AI、スペル、アイテムエフェクト、および世界自体のスクリプトは、多くの場合、エンジンコードよりも大きくなります)。スクリプト言語を使用すると、ガベージコレクション(Luaの場合)とより高いレベルの抽象化により、「方法」ではなく「内容」に集中することができます。