ゲームで使用するスクリプト言語は何ですか?[閉まっている]


53

どのような場合、どのスクリプト言語が他の言語よりも優れていますか?

すべての回答を歓迎します。説明を提供し、言語が優れているケースを説明してください。

(回答ごとに1つの言語を思い出してください)

回答:


39

Luaはゲーム業界で広く使用されています。独立したゲーム(Aquaria)からAAAタイトル(Civilization)まで。

核となる理由は?簡単に習得でき、ゲームに簡単に組み込むことができるからです。しかし、Pythonについても同じことが言えると思います。一般に、スクリプティングは難しくありません。Luaを使うべき本当の理由は、それがあなたがそこから学ぶためのはるかに多くのリソースをもたらすことが証明されているからだと思います。


8
Luaは「メタ言語」機能を提供するため非常に人気があります。オブジェクト指向の構造、または純粋な手続き関数などを実装できます。非常にシンプルなCインターフェイスを備えており、エンジン開発者は言語自体に大きな柔軟性を与えます。
カランツァ

3
pythonが良い選択になるとは思いません。PythonのCバインディングは、PythonをCで拡張し、PythonをCに埋め込むことに向けられています。
SpoonMeiser10年

5
私が聞いたことから、ĹuaはPythonのような他のスクリプト言語と比較した場合、実行時のパフォーマンスも優れています。(そして、それはクロージャーを完全にサポートしています
thbusch

2
実は文明IVは...のpythonを使用しています
エミリアーノ

2
実際@happy_emi、つつ文明Vは、Luaの使用
トビアスKienzler

23

リス

リスには興味深い歴史があります。ゲーム建築家のLUAの予測不可能なガベージコレクションに問題があった後、それは建設された、と狂気のすべては、それが存在しない場合でも、nullです

リスは、Left 4 Dead 2で使用されるスリッピング言語です。APIは非常にluaに似ています(Squirrelの著者はLuaの設計が大好きです)。

ですから、Squirrelは第2世代のLuaなので、素晴らしい言語です。それは良いアイデアを取り、迷惑な偏心を削除しました。

Luaと同じ:

  • コルーチン
  • テーブルとメタテーブル
  • 動的型付け
  • さらに多く

Squirrelの新機能:

  • クラス
  • 配列
  • Luaのマッチ構文の代わりに正規表現。
  • Pascal / Delphiスタイルではなく、C / C ++ / Java / C#スタイルの言語。
  • さらに多く

リスの主な欠点は、Luaではないことです。Luaははるかに広く使用されています。しかし、それが問題ではない場合、リスは簡単な勝利です。ただし、多くの場合、言語の人気はそれ自体が有用な機能であるため、決定はそれほど明確ではありません。


9

GoogleのV8 Javascript。

プロの:

とても使いやすい

常に良くなっている

強力で柔軟

その他多くの人が言及したように、javascriptは一般的なプログラマーツールです。私のゲームに追加すると、他の言語よりも有能だと感じる人がはるかに多くなりました。また、プログラマーの作業を節約するために、大量のキャストと変換をサポートします。また、非常に使いやすく、STLでうまく機能します。

考えられるCON:

ドキュメントは混乱を招く可能性があります。

多くの場合、奇妙な網。確かなシンプルさに欠けて、それはそれよりもはるかに高いレベルとして出くわします。

テンプレート時にはこれらが嫌われたり、避けられたりします。

SDKコードベースサイズ生成されたコードサイズは、肥大化したと見なされる場合があります。


私にとっての1つの欠点はサイズでした。シンプル/カジュアルゲームを構築している場合、v8エンジンは非常に大きく、ゲーム全体よりも何倍も大きい場合があります。
ザック人間

確かに、スタンドアロンの.libファイルとしてそれは大きな懸念事項ですか?SDLまたはluaの隣に挿入するだけです。生成されたコードサイズを意味する場合、それがどれほど大きいかはテストしていませんが、それは悪い点ではありません。
アンダースコア

生成されたコードサイズを意味しました。今日のほとんどのゲームのサイズを考えると、それほど大きくないと思います。
ザック人間

1
テスト済み、最新のSVNクロックが1.441 MBのbit.ly/9DNn8Jであるデフォルトのshell.cc。これはかなり重いように見えますが、他のこと(ネットワーク、グラフィックス)を行うために必要なほとんどのライブラリは、劇的にそれを追加します。Visual Studio 2008では、v8、phoenixGL、ENet、ブーストの束、およびソリューション内のより多くのコード(圧縮、暗号化、GUIライブラリ、Awesomiumなど)を含む2.5 MBのサイドプロジェクトが記録されます。リリース」ビルドウェイト861 KB。私にとっては、それだけではありません。特定のプラットフォームでは、面倒なことがわかりました-ほとんどではありませんが:)
アンダースコア

1
私は私のプロジェクトでV8を数回使用しました。IMO Javascriptは、ゲームのスクリプト作成に使用するのに最も理想的な言語です。イベントベースの性質とプロトタイプベースのオブジェクトにより、すべてが非常に簡単になります。:)
スティーブン・ベレンジャー

7

それはゲームとそのターゲットプラットフォームに依存します。

100人のノンプレイヤーキャラクター(RTSゲーム)を実行するゲームは、2つだけ実行するゲーム(ストリートファイター)とは異なるニーズがあります。PC上で実行されるゲームには、コンソール上で実行されるゲームとは異なるニーズがあります。

ルアが人気

GameMonkeyはいくつかのチームで使用されています。Luaよりも高速で、スレッド化に優れています。

Pythonはいくつかのゲームで使用されています。

JavaScriptエンジンをダウンロードできるため、JavaScriptは可能なオプションです。他のタイプのプログラマーよりも多くのJavaScriptプログラマーがいます。

特殊な言語もあります。

SCUMMはいくつかのアドベンチャーゲームで使用されており、特にこれらのゲームに適しています。


Javascriptは本当に良いアイデアです。どうしてこの空間に牽引力がなかったのだろうか?何か案は?
cflewis

JavaScriptにはトラクションがあります。Unityはそれを使用します。エンジンのWolfire Gamesも同様です。
AAグラパス

2つのエンジンは実際には牽引力を発揮しません。それが最近の開発に過ぎない理由は、MonoとV8よりも前に良いJavaScriptインタープリターがあまりなかったからだと思います。SpiderMonkeyは、あなたが見たり言ったりするものではありません。

4

完全を期すために、別のオプションとしてmono-scriptを使用すると、スクリプト用に.NETフレームワークのNovell実装を使用できます。それは何Unityが使用しています。ここに、アプリケーションへのモノの埋め込みに関する別のページがあります。

Monoフレームワークは、解釈されず、コンパイラと命令セットの間にレイヤーがあるため、C#や方言を含むさまざまな言語でプログラミングできるため、ほとんどの(おそらくすべての)スクリプト言語よりも高速です。 Python、Lua、およびJavascript。

ただし、すべてのプラットフォームで無料かどうかはわかりません。


4
コンソール開発を行っている場合、データページを実行可能としてマークできないため、JITコードは明らかに問題外です。ILは、ターゲットプラットフォームにプリコンパイルする必要があります。
ジェフ

3
JITの問題はiOSにも当てはまります。また、Monoにはライセンス制限があります。エンドユーザーがMonoランタイムをアップグレードできない環境で使用する場合は、商用ライセンスが必要です。
サム

4

個人的には、自分のプロジェクトでスクリプト言語を選択していたとき、LuaよりもAngelScript(以下のリンクを参照)がC ++にバインドするのがはるかに簡単であることがわかりました。(実際には、多少の柔軟性を犠牲にして、使いやすくするために小さなラッパーライブラリを作成しました。)

http://www.angelcode.com/angelscript/

そうは言っても、Luaには商用ゲーム開発者にとって魅力的ないくつかの利点があると思います。

(a)AngelScriptよりも成熟し、普及している

(b)その構文は、プログラマーではない方が簡単です(AngelScriptは非常にC ++に似ています)

(c)AngelScriptよりもフットプリントが小さい(少なくとも思い出す限り)

ただし、趣味のプロジェクトを書いているだけなら、AngelScriptは少なくとも一見の価値があると思います。


2

ゲームの主要な開発言語への安定した、十分にサポートされたバインディングを持つスクリプト言語を選択する必要があります。ゲームをCまたはC ++で記述している場合、PythonおよびLuaで利用できるかなり堅固なバインディングがあります。.NETプラットフォーム用のゲームを作成する場合(C#または別の言語を使用)、IronPythonまたはIronRubyを使用することを強くお勧めします。どちらもMicrosoftのDynamic Language Runtime(DLR)を活用した完全な言語実装であり、優れたパフォーマンスと.NET Frameworkとの非常に緊密な統合を提供します。最近のC#とIronPython / IronRubyの相互運用性は、特にC#4.0での動的呼び出しサイトバインディングの導入により、非常にスムーズになりました。


2

スキーム

まあ、具体的にはガイル

guileを使用すると、ゲーム専用のDSL(ドメイン固有言語)を使用できます。括弧とプレフィックス表記に慣れれば、schemeを使用するのは最高です。

真面目なゲームでguileを使用する場合、IIRC、Ecmascriptインタープリター、および現在のスキーム1が含まれる2.0リリースまで数か月待つことになります。また、大幅な速度の改善が期待できます。


1

これは、実際に何が必要かによって異なります。Davidが指摘しているように、Luaは非常に人気がありますが、ゲーム開発者の1人は、その理由が完全にはわからないと述べました。その軽さは一般的な理由だと思いますが、その時点では、Luaが事実上の標準になっているため、多くの人がLuaを使用することを期待しています。非常に軽量な変更に最適です。

より本格的なアプローチとしては、Pythonが正しい選択だと思います。Civ IVはそれをまともな効果に使用しました。


0

あるスクリプト言語を別のスクリプト言語よりも選択するかどうかは、特定の要件に依存します。

どちらかを選択する必要があるオプションには次のものがあります。

インタープリターの速度-スクリプトの機能のみを使用する場合、つまり開発者が静的な動作をスクリプト化する場合、速度と本格的で拡張可能なAPIが最も重要な側面になります。そこでLUAで良い経験をしました。

学習しやすい、アクセシビリティ-コンテンツ/レベル設計者にとって、動的な動作を生成するためのより複雑なスクリプト言語(背景に依存)を学習するのは難しいかもしれません。その場合、ここでは、習得が容易な(つまり、一般的に使用される)言語と十分に文書化された言語を使用する方が適切です。ここでは、JavaScriptまたはPythonが適切なソリューションになる可能性があります。

ワークフローの統合-既存のツールで特定の生産パイプラインを使用している場合、他のツールがまったく異なるツールで機能している場合、特定のケースに最適な言語を使用することは悪い考えです。これは、複数のプログラマーが異なるツールで作業している場合に特に有効です。その場合、「完全に適合しない」言語を使用する方が効率的です。


0

Windowsのタイトルに取り組んでいて、共通言語ランタイム(CLR)の上で実行されるマネージコードを記述している場合-たとえばC#で-スクリプト言語として(Iron)Pythonを統合することをお勧めします。

私の経験では、Pythonはプログラマーでもデザイナーでもない人に非常に簡単に教えることができます。基本的に擬似コードのように読み取れるため、開発者にとってはさらに簡単です。動的に型指定されることは、以前のコーディング経験がほとんどまたはまったくない人々が言語を使用して高速で実行できるようにする一面にすぎません。

学習しやすく強力な言語に加えて、MicrosoftのCLRと言語チーム(Anders Hejlsberg、Eric Lippert、Mads Torgersen、Jim Huguninなど)は、新しいDynamic .NET 4の言語ランタイム(DLR)。静的に型付けされたコードと動的に型付けされたコードの間の相互運用性をはるかに簡単にします。これまで見てきたことから、定型コードは最小限に抑えられています。コードベースをクリーンで保守可能な状態に保ちます。

これを利用して、ゲームのスクリプト部分とエンジンの間の摩擦を非常に低く抑えることができます。両方を同じVM内で実行することにより、ランタイムが実行中により多くのコードを最適化することも可能になります。


0

答えは環境によって大きく異なります。現在、Unityで作業しているので、モノラルベースの言語を使用します(私の場合はC#ですが、JavascriptとBooもオプションです)。答えは、特定の状況に完全に依存します。


-2

ActionScriptは、Flashゲームを作成するために使用されるハイブリッド動的/静的型付き言語であり、Web上で広く配布できます。Flixel、FlashPunk、Box2dなどのライブラリでサポートされています。


-2

スクリプト言語を使用する既存のチーム、またはスクリプトを使用するリード(レベル)デザイナーがいる場合は、選択した言語が何であれ選択してください。彼らはそれで彼らの時間を過ごすので、彼らは仕出し料理されるべきです。

[塩の粒]あなたが誰も持っていないか、長期計画を立てているなら、 あなた自身を転がしてください。はい、スクリプト言語用のコンパイラーやインタープリターを作成するのに1週間か2週間かかるかもしれませんが、長い目で見れば柔軟性は何倍にもなります。ただ遠くに行って頭脳を再発明しないでください。[/塩の粒]


lisp / schemeまたはbashまたはpythonまたはluaまたはerlang(標準ライブラリがないもの)のようなsthのインタープリターまたはjitコンパイラーを1日か2日で作成します。sth lispを解釈するためではない限り、C ++やJavaでインタプリタを書くことはお勧めしません。とにかく、それは問題ではありませんでした。
コモナ

質問は、スクリプト言語の長所と短所に合わせたもので、実際にどの言語を使用するかを決定する方法ではなかったと思います。それでも役立つと思います。
マイケルコールマン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.