どのゲーム内スクリプト言語をサポートする必要がありますか?
-
07-07-2019 - |
質問
ゲーム内スクリプトはNPC / AIロジックを制御します。
ゲーム内スクリプティング機能を実装する場合、どの言語をサポートする必要がありますか?
実装は、.net、flash、javascript、javaなどの複数のプラットフォームで実行されることに留意してください。
記載されている可能性の長所と短所は何ですか?インタープリターを実装するのにどれくらい時間がかかりますか?
ゲーム内スクリプト作成者が探している機能は何ですか? 他のゲームは何を実装していますか?
誰もが読み書きできるという事実のため、javascriptに投票することを考えています。
あなたの考えは?
解決
埋め込みが非常に簡単なので、Luaを使用します。 Pythonの埋め込みは複雑に思えたので、私はそれを実際に追求していませんでした。
このリンクは今後使用される可能性がありますLuaの埋め込みとその利点/欠点について詳しく知りたい場合。
他のヒント
Luaを使用します。 ゲーム業界で広く採用されている美しい言語です。
ほとんどのプラットフォームにはLuaバインディングがあります:
- .Net: LuaInterface
- Flash: Lua Alchemy
- Java: Kahlua (代替実装)
llvm-luaプロジェクトもあり、Luaの移植に役立つ場合があります他のプラットフォームへ。
ホストプラットフォームとしてのJavaScriptについて...この主題は、 Luaメーリングリストに繰り返し登場します、しかし深刻な解決策はまだ公開されていません。 JSでLuaをホストする必要がある本当にの場合は、Luaメーリングリストで質問してください。おそらく、一部の人々はこのテーマに関する経験を共有できます。
私は多くの言語でのバインディングにPythonを好むでしょう。
「統合」という意味だと思う「実装」ではなくインタプリタ。それ。スキルによっては、スクリプト言語のインタープリターの作成に時間がかかる場合があります。
PythonとLuaに.NETとJavaのバインディングがあることは確かです-インタープリターを埋め込むことができます。 JavascriptとFlashのバインディングがあるかどうかはわかりません。
Pythonの問題は、すべて異なる人が作成した3つのバリアントがあることです。
- IronPython for .NET
- Jython for Java
- および通常のCPython
私はJythonに取り組んでいないので、コメントしません。しかし、IronPythonとCPythonの間には特定の移植性の問題があります。たとえば、IronPythonはネイティブC拡張をサポートしていません。これらを使用するCPythonで記述されたスクリプトがある場合、IronPythonに移植するのに苦労します。また、IronPythonスクリプトが.NETライブラリを使用する場合、それらをCPythonに移植するのに苦労します。
一方、Luaの実装は単一の場所からのものであり、そのような問題はないと思います。
それは、コードがどれだけ複雑になるか(NPCの動作がどれほど複雑になるか)に依存します。 Tcl、Lua、およびJavaScriptは単純なタスク用です。これらの言語で大量のコードを書くと、すぐにメンテナンスできなくなる傾向があります(特に一般ユーザーの場合)。
SquirrelはCに似た構文を使用しますが、これはほとんどの人にとっては快適ですが、ツールのサポートについてはどうでしょうか?メモ帳ですべてを書かなければならない場合は、それも厳しく制限します。
Pythonは、習得が容易な成熟した言語です(Luaの「チュートリアル」とPythonに付属している言語を比較してください)。さまざまなPythonバージョンは威圧的に見えるかもしれませんが( Rohitの答え)、ゲーム内のPythonコードはすべて同じです。 IDE(IDLE)が付属しており、コード補完、デバッグ、テストケースの実行などを行うPythonをサポートする他のIDEがあります。
Pythonを使用する場合は、 Stackless を使用することを検討してください。これは、ストックCPythonよりもスレッド化の方が優れているためです。いくつかのMMORPG(EVE Online、IIRC)で使用されているため、ゲームでいくつかの実績があります。さらに、それは継続(最初に開発された理由の一部)に非常に適しています。これは、ゲームで使用する「シミュレーション」型ロジックの非常に優れたモデルです。