2011-06-16 8 views
4

まず、私はこれに関連する多くの質問があることを知っていますが、それらのどれも私の特定の状況を助けるように見えませんでした。特に、ルアとパイソンは、私の希望に合っていないし、希望することもできる。私の必要条件のある言語は存在しないかもしれませんが、その結論に達する前に、いくつかの意見を聞くことはうれしいでしょう。 :)高速で埋め込みが容易で、ハイレベルのゲームプログラミングに適したスクリプト言語はありますか?

私が作ろうとしているゲームエンジンには、あなたが推測しているように、私はそのような言語が必要です。このゲームエンジンの目的は、ゲームを構築するための基本的なツールをユーザーに提供することです。ただし、さまざまな種類のゲームを自由に作成することができます。

このため、スクリプト言語はゲームのコンセプトを直感的に処理できる必要があります。とりわけ、さまざまなタイプを定義し、わずかに異なるプロパティでサブタイプを分類し、オブジェクトを動的にクエリしたり変更したりするのは簡単です。

さらに、ゲーム開発者は、スクリプト言語で出会ったあらゆる状況に対処することができます。レンダラーやネットワークのような基本的なコンポーネントはC++で実装されますが、地球上で数百のオブジェクトを回転させるなどのゲーム固有のメカニズムは、スクリプト言語で処理されます。これは、スクリプト言語が非常に高速でなければならないことを意味し、1/10 Cの速度がおそらく最小です。

次に、デバッグの問題があります。関数、スタックトレース、およびエラーが発生した変数の状態に関する情報にアクセス可能である必要があります。

最後に、これは一人の人間によって行われたプロジェクトです。私が欲しがっていても、グルーコードだけで何週間も費やすことができません。私のプロジェクトと言語を統合することは、luaを統合するよりも難しいはずはありません。

luaとpythonの2つの推奨言語を調べると、luaは高速で(luajit)、簡単に統合できますが、標準のデバッグ機能は不足しているようです。さらに悪いことに、デフォルトではluaには全く型システムがありません。もちろん、それを自分で実装することもできますが、構文は常に奇妙で直感的ではありません。

Pythonは、使い方が非常に快適で、基本的なクラスシステムを備えています。しかし、統合するのは簡単ではありません。パラダイムは実際にタイプチェックを必要とせず、より複雑なゲームでは十分に速くはありません。私は再びすべてがPythonで行われることを指摘したいと思います。私はよくpythonがコードの90%のために十分に速いだろうことをよく知っています。

Scalaもありますが、それは私がこれまで示唆していないものです。 Scalaは実際にはほとんどの要件を満たしているようですが、Java VMをC言語で埋め込むのは非常に簡単ではないようですが、JavaのようにJavaでアプリケーションを構築することが一般的です。 Scalaの機能パラダイムが直感的なゲーム開発に適しているかどうかもわかりません。

編集:この問題は解決策を見つけることを控えてください。ルアよりも優れた言語がない場合、私は単に妥協して使用します(私は実際に私のプログラムにリンクされたものを持っています)。私はちょうど私がそうする前にもっと適しているものを見逃していないことを確認したい、ルアは私にとって完璧な解決策から遠いので見ている。

+1

あなたはすでにエンジンを作成しましたか?あなたはOGREのようなエンジンを見てきましたが、彼らはあなたが言及している問題にどのようにアプローチしていますか?あなたはどれくらいの経験を持っているのか分かりませんが、あなたが自分より先に進んでいるように思います。経験がたくさんある場合は、私を無視してください。しかし、いずれにせよ、私はあなたのすべてのニーズに合った提案を思いつくように強く求められています。 – Bart

+1

質問のタイトルを読んで、私はルアと言おうとしていました。あなたがルアにノーと言うなら、私は、[Go](http://golang.org/)を見てとうとう提案するかもしれません。 – c00kiemon5ter

+0

@バート:あなたは正しいですが、私はこの点ではあまり経験がありません。私はここに求めています。私が言ったように、そのような言語は存在しないとは考えにくい。しかし、言語の仕組みについてはかなり分かりますが、私は自分が望むものについて非常に具体的な考えを持っています。ルアは良い選択肢のように聞こえるが、それについては私には何の慰めもない(+ =の欠如は非常に基本的な欠点である)ということであり、本当に楽しいシステムを作りたいと思うユーザーがルアの小さな奇妙なことをすべて覚えさせるのではなく、使用すること。 – cib

答えて

1

lua/luajitよりも優れた組み合わせがないと思われるので、私はそのままにしておきたいと思います。誰もがこれに感謝してくれてありがとう。私は個人的には、ゲームプログラミングのための高水準言語として非常に欠けていることがルアにあると考えていますが、それはおそらくそこでの最良の選択です。誰もがこの質問を見つけて同じ要件(速く、使いやすく、組み込みが簡単です)を得るには、lua/luajitを使うか、自分で作る必要があります。 :)

+0

私は自分自身の質問に答えたので、受け入れられた答えとしてマークする前に、誰かが私がここで言ったことに異議を唱えるかどうか見るためにちょっと待っています。 – cib

+0

この質問を[gamedev](http://gamedev.stackexchange.com/ "gamedev.stackexchange.com")にも投稿することをお勧めします。それはあなたが探しているものにもっと特化した別のスタック交換サイトです。 –

+0

Luaはゲームのための高水準の言語としては最初に意図されたものではなく、グルー1として使用されました。小さなサイズとスピードのためにゲームで使用されます(ルワジットは言及しません)。 – minerals

1

埋め込み可能性については、Tclをご覧になるか、またはSchemeをご利用の場合は、SIODまたはGuileをご覧ください。もちろん、一般的にはLuaやPythonをお勧めしますが、あなたの質問はそれらを排除します。

+0

私は実際に言語に取り組んでいますが、それはこの種のものに非常に適していますが、残念ながらまだ生産に使用するにはまだ成熟していません。 –

+0

あなたのご意見をお待ちしておりますが、あなたが言及したプログラミング言語はすべて比較的遅いようです。ここでの問題は、私のスピード要件がluaJITを除くほとんどの動的言語を除外しているように見えることです。 – cib

+1

@cib:あまりにも遅いと主張する前に、実際にテストしてプロファイルする必要があります。私が提案している言語は、私が知っている唯一のツールです。 TclとLuaは両方とも埋め込みで設計されていました。 Luaは一般的にこの種のもののための* go-to言語です。その不適切なデバッグ機能は除いています。本当に残念ですが、私の言語プロジェクトにはまだ触れていません。私はあなたがそれを愛することを保証します。 –

2

monoと思われるかもしれません。私はこのアプローチの成功例を一つしか知りませんが、それは大きなものです。モノスクリプトを使ったC++エンジンは、Unityのアプローチです。

1

これは、C/C++プロジェクトに埋め込むことができる汎用のマルチパラダイムスクリプト言語の環状プログラミング言語 http://ring-lang.net

を試しては、C/C++コードを使用して拡張および/またはスタンドアロンの言語として使用します。サポートされているプログラミングパラダイムは、命令型、手続き型、オブジェクト指向型、機能型、メタプログラミング型、ネスト型構造を使用した宣言型プログラミング、およびNaturalプログラミングです。

言語はシンプルで、自然になりたい、組織を奨励し、透明な実装が付属しています。これはコンパクトな構文と、プログラマが自然なインタフェースと宣言的なドメイン特有の言語を短時間で作成できるようにする機能群を備えています。それは非常に小さく、速く、メモリをプログラマの制御下に置くスマートなガベージコレクタが付属しています。多くのプログラミングパラダイムをサポートし、有用で実用的なライブラリが付属しています。この言語は、生産性と拡張性に優れた高品質なソリューションを開発するために設計されています。 C/C++プログラムで

コンパイラ+仮想マシンは、Cコードの15,000行がある

埋め込みリング通訳 https://en.wikibooks.org/wiki/Ring/Lessons/Embedding_Ring_Interpreter_in_C/C%2B%2B_Programs

関連する問題