6

私は約 2 年間 WoW をプレイしており、アドオンの作成に使用される Lua に非常に興味がありました。Lua についてこれまで読んできたのは「速い」「軽い」「これは素晴らしい」というものだったので、いつ、どのように使用するかを考えていました。

Lua のようなスクリプト言語をシステムに組み込む必要がある典型的な状況はどのようなものですか?

4

8 に答える 8

13

システムを書き直すことなく、エンドユーザーがシステムを定義/変更できるようにする必要がある場合。ゲームで拡張機能を許可したり、メインのゲーム エンジンを変更せずにコンテンツを変更したりできるようにするために使用されます。

于 2009-02-26T17:27:36.633 に答える
8

埋め込みスクリプト言語は、構成情報の保存にも適しています。最後に確認したところ、Mozilla ファミリーはすべて構成情報に JavaScript を使用しています。

次に、プラグインの開発に最適です。プラグイン開発者に公開するカスタム API を作成できます。プラグイン開発者は、言語全体を使用することから多くの自由を得ることができます。

もう 1 つは、フラット ファイルの表現力が十分でない場合です。動作がパラメーター化されたデータ ドリブン アプリを作成する場合は、構成の組み合わせをテストする条件付きの長い文字列にうんざりするでしょう。これが発生した場合は、ルールとその評価を構成に記述したほうがよいでしょう。

このトピックは、本 Pragramtic Programmer で取り上げられています。

于 2009-02-26T17:32:37.420 に答える
3

アプリケーションの実行中にコードを(すぐに有効に)変更する必要がある場合は、Luaなどのスクリプト言語を使用することもできます。私が覚えている限り、コードは最初にロードされます(実行中に再チェックおよびリロードされないため)ので、これはすごいことに見えないかもしれません。

しかし、別の例を考えてみてください。ウェブサーバーとスクリプト言語-(ありがたいことに)apacheを再コンパイルしたり、apacheを再起動したりしなくても、phpコードを変更できます。

steve yeggeは、jythonまたはrhinoとjavascript(覚えていない)を使用して、ワイバーンに電力を供給する彼自身のmmorpgエンジンのためにそのことを行いました。彼はコアエンジンをJavaで記述しましたが、プログラムロジックはpython/javascriptで記述しました。

これの効果は次のとおりです。

  • スクリプトを変更するときにコアエンジンを再起動する必要はありません。再起動するとすべてのプレーヤーが切断されるためです。
  • 彼は、すべての重要なコードを公開することなく、他の人に新しいアイテムやモンスターを定義するなどのより簡単なプログラミングをさせることができます
  • サンドボックス化:スクリプト内でエラーが発生した場合、周囲のアプリケーションを危険にさらすことなく、適切に処理できる可能性があります
于 2009-04-23T06:24:52.967 に答える
3

前述のスクリプトと構成可能性のケースに加えて、Lua + C(またはLua + C ++)はあらゆるソフトウェア開発に完全に一致することを簡単に述べておきます。これにより、エンジンがC / C ++で実行され、動作またはカスタマイズがLuaで実行されるエンジン/使用インターフェースを作成できます。

OS X CocoaにはObjective-C(CとSmalltalkのアマルガム、言語は行によって変わる)があります。Lua + Cも似ていると思いますが、ソースファイルによって言語が変わるだけです。これは私にとってより良い抽象化です。

Luaを使用したくない理由も注目に値します。良いデバッガーはほとんどないからです。繰り返しになりますが、人々もそれを必要とすることはほとんどないようです。:)

于 2009-03-08T16:33:00.723 に答える
3

ルアは:

  • 軽量
  • ゲームなどの非同期環境でも統合が容易
  • インテグレーター、デザイナー、アーティストなど、プログラマー以外のスタッフが習得しやすい

通常、ゲームはこれらすべての品質を必要とするため、Lua は主にそこで使用されます。その他の状況としては、何らかのスクリプト機能を必要とするアプリケーションが考えられますが、開発者は多くの場合、.Net や python などのもう少し重いソリューションを選択します。

于 2009-02-26T17:28:04.450 に答える
2

リアルタイムの制約があるアプリケーションの迅速な開発。コンピュータゲームはこれらの1つです;-)

于 2009-02-26T17:26:26.077 に答える
2

サード パーティがソフトウェアのプラグインや mod を開発できるようにしたい場合、これは有効なソリューションです。

使用しているどの言語でも API を実装できますが、LUA のようなスクリプト言語は、一般的な開発者にとってよりシンプルでアクセスしやすい傾向があります。

于 2009-02-26T17:27:02.020 に答える
0

他の人が言及したすべての素晴らしい理由に加えて、Lua を C に埋め込むことは、テキストを操作したり、ファイルを操作したり、単に高水準の言語が必要な場合に非常に役立ちます。Lua にはたくさんの気の利いた機能があります (テーブル、関数はファーストクラスの値で、他にもたくさんの優れた機能があります)。また、lua は C や C++ ほど高速ではありませんが、インタープリター言語としてはかなり高速です。

于 2009-04-21T13:55:13.150 に答える