どのような場合、どのスクリプト言語が他の言語よりも優れていますか?
すべての回答を歓迎します。説明を提供し、言語が優れているケースを説明してください。
(回答ごとに1つの言語を思い出してください)
どのような場合、どのスクリプト言語が他の言語よりも優れていますか?
すべての回答を歓迎します。説明を提供し、言語が優れているケースを説明してください。
(回答ごとに1つの言語を思い出してください)
回答:
Luaはゲーム業界で広く使用されています。独立したゲーム(Aquaria)からAAAタイトル(Civilization)まで。
核となる理由は?簡単に習得でき、ゲームに簡単に組み込むことができるからです。しかし、Pythonについても同じことが言えると思います。一般に、スクリプティングは難しくありません。Luaを使うべき本当の理由は、それがあなたがそこから学ぶためのはるかに多くのリソースをもたらすことが証明されているからだと思います。
リスには興味深い歴史があります。ゲーム建築家のLUAの予測不可能なガベージコレクションに問題があった後、それは建設された、と狂気のすべては、それが存在しない場合でも、nullです。
リスは、Left 4 Dead 2で使用されるスリッピング言語です。APIは非常にluaに似ています(Squirrelの著者はLuaの設計が大好きです)。
ですから、Squirrelは第2世代のLuaなので、素晴らしい言語です。それは良いアイデアを取り、迷惑な偏心を削除しました。
Luaと同じ:
Squirrelの新機能:
リスの主な欠点は、Luaではないことです。Luaははるかに広く使用されています。しかし、それが問題ではない場合、リスは簡単な勝利です。ただし、多くの場合、言語の人気はそれ自体が有用な機能であるため、決定はそれほど明確ではありません。
GoogleのV8 Javascript。
プロの:
とても使いやすい
常に良くなっている
強力で柔軟
その他多くの人が言及したように、javascriptは一般的なプログラマーツールです。私のゲームに追加すると、他の言語よりも有能だと感じる人がはるかに多くなりました。また、プログラマーの作業を節約するために、大量のキャストと変換をサポートします。また、非常に使いやすく、STLでうまく機能します。
考えられるCON:
ドキュメントは混乱を招く可能性があります。
例多くの場合、奇妙な網。確かなシンプルさに欠けて、それはそれよりもはるかに高いレベルとして出くわします。
テンプレート時にはこれらが嫌われたり、避けられたりします。
SDKコードベースサイズ生成されたコードサイズは、肥大化したと見なされる場合があります。
それはゲームとそのターゲットプラットフォームに依存します。
100人のノンプレイヤーキャラクター(RTSゲーム)を実行するゲームは、2つだけ実行するゲーム(ストリートファイター)とは異なるニーズがあります。PC上で実行されるゲームには、コンソール上で実行されるゲームとは異なるニーズがあります。
ルアが人気
GameMonkeyはいくつかのチームで使用されています。Luaよりも高速で、スレッド化に優れています。
Pythonはいくつかのゲームで使用されています。
JavaScriptエンジンをダウンロードできるため、JavaScriptは可能なオプションです。他のタイプのプログラマーよりも多くのJavaScriptプログラマーがいます。
特殊な言語もあります。
SCUMMはいくつかのアドベンチャーゲームで使用されており、特にこれらのゲームに適しています。
完全を期すために、別のオプションとしてmono-scriptを使用すると、スクリプト用に.NETフレームワークのNovell実装を使用できます。それは何Unityが使用しています。ここに、アプリケーションへのモノの埋め込みに関する別のページがあります。
Monoフレームワークは、解釈されず、コンパイラと命令セットの間にレイヤーがあるため、C#や方言を含むさまざまな言語でプログラミングできるため、ほとんどの(おそらくすべての)スクリプト言語よりも高速です。 Python、Lua、およびJavascript。
ただし、すべてのプラットフォームで無料かどうかはわかりません。
個人的には、自分のプロジェクトでスクリプト言語を選択していたとき、LuaよりもAngelScript(以下のリンクを参照)がC ++にバインドするのがはるかに簡単であることがわかりました。(実際には、多少の柔軟性を犠牲にして、使いやすくするために小さなラッパーライブラリを作成しました。)
http://www.angelcode.com/angelscript/
そうは言っても、Luaには商用ゲーム開発者にとって魅力的ないくつかの利点があると思います。
(a)AngelScriptよりも成熟し、普及している
(b)その構文は、プログラマーではない方が簡単です(AngelScriptは非常にC ++に似ています)
(c)AngelScriptよりもフットプリントが小さい(少なくとも思い出す限り)
ただし、趣味のプロジェクトを書いているだけなら、AngelScriptは少なくとも一見の価値があると思います。
ゲームの主要な開発言語への安定した、十分にサポートされたバインディングを持つスクリプト言語を選択する必要があります。ゲームをCまたはC ++で記述している場合、PythonおよびLuaで利用できるかなり堅固なバインディングがあります。.NETプラットフォーム用のゲームを作成する場合(C#または別の言語を使用)、IronPythonまたはIronRubyを使用することを強くお勧めします。どちらもMicrosoftのDynamic Language Runtime(DLR)を活用した完全な言語実装であり、優れたパフォーマンスと.NET Frameworkとの非常に緊密な統合を提供します。最近のC#とIronPython / IronRubyの相互運用性は、特にC#4.0での動的呼び出しサイトバインディングの導入により、非常にスムーズになりました。
あるスクリプト言語を別のスクリプト言語よりも選択するかどうかは、特定の要件に依存します。
どちらかを選択する必要があるオプションには次のものがあります。
インタープリターの速度-スクリプトの機能のみを使用する場合、つまり開発者が静的な動作をスクリプト化する場合、速度と本格的で拡張可能なAPIが最も重要な側面になります。そこでLUAで良い経験をしました。
学習しやすい、アクセシビリティ-コンテンツ/レベル設計者にとって、動的な動作を生成するためのより複雑なスクリプト言語(背景に依存)を学習するのは難しいかもしれません。その場合、ここでは、習得が容易な(つまり、一般的に使用される)言語と十分に文書化された言語を使用する方が適切です。ここでは、JavaScriptまたはPythonが適切なソリューションになる可能性があります。
ワークフローの統合-既存のツールで特定の生産パイプラインを使用している場合、他のツールがまったく異なるツールで機能している場合、特定のケースに最適な言語を使用することは悪い考えです。これは、複数のプログラマーが異なるツールで作業している場合に特に有効です。その場合、「完全に適合しない」言語を使用する方が効率的です。
Windowsのタイトルに取り組んでいて、共通言語ランタイム(CLR)の上で実行されるマネージコードを記述している場合-たとえばC#で-スクリプト言語として(Iron)Pythonを統合することをお勧めします。
私の経験では、Pythonはプログラマーでもデザイナーでもない人に非常に簡単に教えることができます。基本的に擬似コードのように読み取れるため、開発者にとってはさらに簡単です。動的に型指定されることは、以前のコーディング経験がほとんどまたはまったくない人々が言語を使用して高速で実行できるようにする一面にすぎません。
学習しやすく強力な言語に加えて、MicrosoftのCLRと言語チーム(Anders Hejlsberg、Eric Lippert、Mads Torgersen、Jim Huguninなど)は、新しいDynamic .NET 4の言語ランタイム(DLR)。静的に型付けされたコードと動的に型付けされたコードの間の相互運用性をはるかに簡単にします。これまで見てきたことから、定型コードは最小限に抑えられています。コードベースをクリーンで保守可能な状態に保ちます。
これを利用して、ゲームのスクリプト部分とエンジンの間の摩擦を非常に低く抑えることができます。両方を同じVM内で実行することにより、ランタイムが実行中により多くのコードを最適化することも可能になります。
スクリプト言語を使用する既存のチーム、またはスクリプトを使用するリード(レベル)デザイナーがいる場合は、選択した言語が何であれ選択してください。彼らはそれで彼らの時間を過ごすので、彼らは仕出し料理されるべきです。
[塩の粒]あなたが誰も持っていないか、長期計画を立てているなら、 あなた自身を転がしてください。はい、スクリプト言語用のコンパイラーやインタープリターを作成するのに1週間か2週間かかるかもしれませんが、長い目で見れば柔軟性は何倍にもなります。ただ遠くに行って頭脳を再発明しないでください。[/塩の粒]