質問

私は、私が思いついたいくつかのアイデアをモックアップするために、Ogre3d レンダリング エンジンから便利な 3D ゲーム エンジンを構築しようとしていますが、少し岐路に達しています。利用可能なスクリプト言語は数多くありますが、精査されて適切な支持者がいる言語が 1 つか 2 つあるかどうか疑問に思っていました。

LUA と Squirrel の方がより精査されているようですが、私は何でも受け入れます。

理想的には、配布と読み込みの容易さのために、その言語のコンパイルされた形式があれば最高です。

役に立ちましたか?

解決

構文は好みの問題です。Lua は Javascript に似ていますが、中括弧が Pascal のようなキーワードに置き換えられています。セミコロンは必要ありませんが、空白は重要ではないという優れた構文上の特徴があるため、すべての改行を削除しても機能するようにすることもできます。C から始めた人間として、Python は他のすべての言語と比較して難解な構文を持つ言語だと思います。

また、LuaJIT は Python の約 10 倍高速で、Lua インタープリターははるかに小さい (実際に読んで理解できる C の行数は 150 kb、または約 15,000 行)。大規模な言語を埋め込まなくても、ユーザーにゲームのスクリプトを作成させることができます。一方、Lua からパーサー部分を取り出すと、さらに小さくなります。

他のヒント

興味深いオプションの 1 つは、 スタックレスPython. 。Eve-Online ゲームで使用されました。

Python/C API マニュアルは、 全体 Lua マニュアル (Lua/C API を含む)。

Lua のもう 1 つの理由は、コルーチン (1 つの OS スレッド内での協調的なマルチタスク) のサポートが組み込まれていることです。これにより、一見個別に見える数千のスクリプトを並行して非常に高速に実行できるようになります。モンスター/武器ごとに 1 つのスクリプトなどです。

( なぜ SO では Lua を大文字で書く人が多いのでしょうか?それは「ルア」です(参照) ここ). )

ルアにもう一票。小型、高速、統合が容易であり、最新のコンソールにとって重要なことは、メモリ操作を簡単に制御できることです。

バインディングの作成が非常に簡単で、ライセンスが非常にフレンドリー (MIT) で、既存のライブラリも上記のライセンスの下にある傾向があるため、私は Lua を使います。スキームも素晴らしく、バインドしやすいため、たとえば Gimp 画像エディターに選択されました。しかし、Lua は単純に素晴らしいです。World of Warcraft は、非常に注目を集める例としてこれを使用しています。LuaJIT はネイティブ コンパイルのパフォーマンスを提供します。その 一桁未満 純粋なCから。

LUA はお勧めしません。構文が独特なので、慣れるまでに時間がかかります。スクリプトを作成する人によっては、これが問題にならない場合もありますが、私はかなりアクセスしやすいものを使用するように努めます。

おそらくPythonを選ぶと思います。通常はバイトコードにコンパイルされるため、インタープリタを埋め込む必要があります。ただし、必要な場合は、PyPy を使用して、たとえばコードを C に変換し、コンパイルすることができます。

インタプリタを埋め込んでも問題ありません。現時点では、機能とパフォーマンスにもっと興味があります。LUA と Squirrel はどちらも解釈されます。私が構築しているゲームの 1 つは、ゲーム内にエディターを備えた変更可能なコードを含めることであるため、これは素晴らしいことです。

Python について聞きたいです。戦場シリーズで Python が使用されているのを見たことがあります。

Python には実際の OGRE バインディングがあるため、下位レベルのものをその場で変更する必要がある場合に備えて便利です。Lua の同等のバインディングを私は知りません。

これは C++ ライブラリなので、JavaScript か Squirrel のどちらかを推奨します。後者は、特にテーブル/構造体とクラスの処理方法が C++ に近いため、2 つのうちの個人的なお気に入りです。すべての類似点があるため、C++ プログラマーにとってはこれが最も簡単に慣れるでしょう。

ただし、JavaScript を使用して Ogre3D の HTML5 バージョンを見つけた場合は、必要な変更を (もしあれば) 最小限に抑えて、ゲーム コードを Web バージョンに直接移植できるはずです。

これらはどちらも良い選択であり、どちらにも長所と短所がありますが、すでに C++ を使用している可能性が高いため、どちらも学習するのが最も簡単であることは間違いありません。Java を使用している場合も同じことが当てはまります。Game Maker の場合は、Game Maker 自体を実行する必要のない実行可能ファイルを作成しようとしている場合を除き、どちらも必要ありません。この場合、これらのいずれかを実行する拡張機能が見つかると幸いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top