Javaで作られた「ハイグラフィック3Dゲーム」が市場に出回らないのはなぜですか?Java は良い選択肢ではないでしょうか? そして、なぜそうですか?私が見た唯一の大きなゲームは基本的にマインクラフトであり、そのゲームには多量のポリゴンと照明/物理エンジンはありません。まだ比較的良い PC が必要ですか? Minecraft よりも信じられないほどグラフィックスが重いゲームがあり、静止画はより高速に実行されます。Javaはリソースを「浪費」していると思います。いずれにせよ、問題は、Java で優れたグラフィックス アプリケーションを作成できるか、またはできないかということです。
1 に答える
ゲーム開発の世界は面白いものです。新しいアイデアをすぐに受け入れる一方で、まだ石器時代にいるのです。
真実は、.NET/Java/C/C++ 以外のものに切り替えるインセンティブがほとんどないということです。
ほとんどのゲーム会社は、ゲーム エンジンの一部を他の会社からライセンス供与しています。これらの部分は C++ で書かれており、ソースにアクセスして移植できるかもしれませんが、それには多くの労力が必要です (もちろん、ライセンスで許可されている必要があります)。
また、多くのレガシー コードが C++ に既に存在しています。以前のプロジェクトのコードを再利用できる場合 (たとえば、続編を書いている場合)、新しい言語で書き直すのではなく、同じ言語に固執する方がより重要です (再導入する可能性が高いため、よりそうです)。解決に時間を費やす必要がある大量のバグ。
最後に、ゲームが 100% C++ で書かれていることはめったにありません。カスタマイズされているか、既存の言語を統合するだけであるかに関係なく、多くのことがスクリプト言語を使用して行われます (Lua は最近人気のある言語の 1 つです)。
ガベージ コレクションに関する限り、それは少し問題になる可能性があります。問題は存在することではなく、それがどのように機能するかです。ガベージ コレクターは非ブロックでなければなりません (または、少なくともごく短時間だけブロックすることが保証されている必要があります)。割り当てられたすべてのメモリをスキャンして、解放できるものを確認します。Java は、メモリが不足しそうになると、GC でかなり詰まる傾向があることを知っています (一部のゲームではそうなります)。
また、できることも少し制限されます。ランタイムのオーバーヘッドが原因で、ハードウェアを十分に活用することはできません。Crysis が Java で書かれていると想像してみてください...たとえそれが目に見える唯一の違いだとしても、同じではないでしょう (それを実行するには Core i7 が必要になると確信しています)。
これは、これらの言語がゲーム開発に適していないという意味ではありません。いいえ、私は単にツール プログラミングについて言及しているわけではありません。ほとんどのゲームでは、3D ゲームを含め、C++ から得られる余分なパフォーマンスは必要ありません。また、すべてをゼロから作成する場合は、XNA のようなものを使用するのが理にかなっています。良いチャンスです。
商用ゲームに関する限り、RuneScapeはカウントされますか? これは、最も成功した Java ゲームかもしれません。