まず、これに関連する質問がたくさんあることは承知していますが、いずれも私の特定の状況に役立つとは思えませんでした。特に、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は私にとって完璧な解決策とはほど遠いので、そうする前に、もっと適切なものを見逃していないことを確認したいだけです。