私は約 2 年間 WoW をプレイしており、アドオンの作成に使用される Lua に非常に興味がありました。Lua についてこれまで読んできたのは「速い」「軽い」「これは素晴らしい」というものだったので、いつ、どのように使用するかを考えていました。
Lua のようなスクリプト言語をシステムに組み込む必要がある典型的な状況はどのようなものですか?
システムを書き直すことなく、エンドユーザーがシステムを定義/変更できるようにする必要がある場合。ゲームで拡張機能を許可したり、メインのゲーム エンジンを変更せずにコンテンツを変更したりできるようにするために使用されます。
埋め込みスクリプト言語は、構成情報の保存にも適しています。最後に確認したところ、Mozilla ファミリーはすべて構成情報に JavaScript を使用しています。
次に、プラグインの開発に最適です。プラグイン開発者に公開するカスタム API を作成できます。プラグイン開発者は、言語全体を使用することから多くの自由を得ることができます。
もう 1 つは、フラット ファイルの表現力が十分でない場合です。動作がパラメーター化されたデータ ドリブン アプリを作成する場合は、構成の組み合わせをテストする条件付きの長い文字列にうんざりするでしょう。これが発生した場合は、ルールとその評価を構成に記述したほうがよいでしょう。
このトピックは、本 Pragramtic Programmer で取り上げられています。
アプリケーションの実行中にコードを(すぐに有効に)変更する必要がある場合は、Luaなどのスクリプト言語を使用することもできます。私が覚えている限り、コードは最初にロードされます(実行中に再チェックおよびリロードされないため)ので、これはすごいことに見えないかもしれません。
しかし、別の例を考えてみてください。ウェブサーバーとスクリプト言語-(ありがたいことに)apacheを再コンパイルしたり、apacheを再起動したりしなくても、phpコードを変更できます。
steve yeggeは、jythonまたはrhinoとjavascript(覚えていない)を使用して、ワイバーンに電力を供給する彼自身のmmorpgエンジンのためにそのことを行いました。彼はコアエンジンをJavaで記述しましたが、プログラムロジックはpython/javascriptで記述しました。
これの効果は次のとおりです。
前述のスクリプトと構成可能性のケースに加えて、Lua + C(またはLua + C ++)はあらゆるソフトウェア開発に完全に一致することを簡単に述べておきます。これにより、エンジンがC / C ++で実行され、動作またはカスタマイズがLuaで実行されるエンジン/使用インターフェースを作成できます。
OS X CocoaにはObjective-C(CとSmalltalkのアマルガム、言語は行によって変わる)があります。Lua + Cも似ていると思いますが、ソースファイルによって言語が変わるだけです。これは私にとってより良い抽象化です。
Luaを使用したくない理由も注目に値します。良いデバッガーはほとんどないからです。繰り返しになりますが、人々もそれを必要とすることはほとんどないようです。:)
ルアは:
通常、ゲームはこれらすべての品質を必要とするため、Lua は主にそこで使用されます。その他の状況としては、何らかのスクリプト機能を必要とするアプリケーションが考えられますが、開発者は多くの場合、.Net や python などのもう少し重いソリューションを選択します。
リアルタイムの制約があるアプリケーションの迅速な開発。コンピュータゲームはこれらの1つです;-)
サード パーティがソフトウェアのプラグインや mod を開発できるようにしたい場合、これは有効なソリューションです。
使用しているどの言語でも API を実装できますが、LUA のようなスクリプト言語は、一般的な開発者にとってよりシンプルでアクセスしやすい傾向があります。
他の人が言及したすべての素晴らしい理由に加えて、Lua を C に埋め込むことは、テキストを操作したり、ファイルを操作したり、単に高水準の言語が必要な場合に非常に役立ちます。Lua にはたくさんの気の利いた機能があります (テーブル、関数はファーストクラスの値で、他にもたくさんの優れた機能があります)。また、lua は C や C++ ほど高速ではありませんが、インタープリター言語としてはかなり高速です。