4

まず、これに関連する質問がたくさんあることは承知していますが、いずれも私の特定の状況に役立つとは思えませんでした。特に、luaとpythonは私のニーズにうまく適合していません。私の要件を満たす言語が存在しない可能性がありますが、その結論に達する前に、さらにいくつかの意見を聞くとよいでしょう。:)

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

このため、スクリプト言語はゲームの概念を直感的に処理できる必要があります。特に、さまざまなタイプを定義したり、わずかに異なるプロパティでそれらをサブタイプ化したり、オブジェクトを動的にクエリおよび変更したりするのは簡単です。

さらに、ゲーム開発者は、スクリプト言語で遭遇するすべての状況を処理できる必要があります。レンダラーやネットワークなどの基本的なコンポーネントはC++で実装されますが、惑星の周りで数百のオブジェクトを回転させるなどのゲーム固有のメカニズムは、スクリプト言語で処理されます。これは、スクリプト言語がめちゃくちゃ高速でなければならないことを意味します。おそらく1/10Cの速度が最小です。

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

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

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

一方、Pythonは非常に使いやすく、基本的なクラスシステムを備えています。ただし、統合するのはそれほど簡単ではありません。パラダイムには実際には型チェックが含まれておらず、より複雑なゲームには十分な速度ではありません。もう一度、すべてがPythonで行われることを指摘したいと思います。私は、Pythonがコードの90%に対して十分に高速である可能性が高いことをよく知っています。

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

編集:この質問は、どんな犠牲を払っても解決策を見つけることについてではないことに注意してください。luaよりも優れた言語がない場合は、妥協して使用します(実際には、プログラムにリンクされているものがすでにあります)。luaは私にとって完璧な解決策とはほど遠いので、そうする前に、もっと適切なものを見逃していないことを確認したいだけです。

4

4 に答える 4

2

あなたはモノを考えるかもしれません。このアプローチのサクセスストーリーは1つしか知りませんが、それは大きなものです。モノラルスクリプトを使用するC ++エンジンは、 Unityで採用されているアプローチです。

于 2011-06-18T08:12:02.430 に答える
2

Ringプログラミング言語をお試しください http://ring-lang.net

これは、C / C ++プロジェクトに埋め込んだり、C / C ++コードを使用して拡張したり、スタンドアロン言語として使用したりできる汎用マルチパラダイムスクリプト言語です。サポートされているプログラミングパラダイムは、必須、手続き型、オブジェクト指向、機能、メタプログラミング、ネストされた構造を使用した宣言型プログラミング、および自然プログラミングです。

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

コンパイラ+仮想マシンは15,000行のCコードです

C /C++プログラムへのリングインタープリターの埋め込み https://en.wikibooks.org/wiki/Ring/Lessons/Embedding_Ring_Interpreter_in_C/C%2B%2B_Programs

于 2016-03-22T07:30:15.267 に答える
1

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

于 2011-06-16T00:23:53.857 に答える
1

lua / luajitよりも組み合わせをよく知っている人はいないようですので、そのままにしておきたいと思います。これについての皆さんの意見に感謝します。個人的には、ゲームプログラミング用の高級言語としてluaが非常に不足していると思いますが、おそらくそれが最良の選択です。したがって、この質問を見つけて同じ要件(高速、使いやすい、埋め込みが簡単)を持っている人は誰でも、lua / luajitを使用するか、独自に作成する必要があります。:)

于 2011-06-17T19:47:26.400 に答える