1. ホーム
  2. java

[解決済み] なぜ、Javaで書かれたゲームソフトは少ないのですか?[クローズド]

2022-04-22 06:40:16

質問

なぜ多くの商用3Dビデオゲーム(ランダムなオープンソースの2Dのものではない)は、Javaで書かれていないのでしょうか?理論的には、Javaは非常に理にかなっています。生産性が向上し、クロスプラットフォームのアプリケーションをほぼ無料で手に入れることができますし、膨大な数のJavaライブラリや内蔵のガベージコレクション(後者が良いことかどうかは分かりませんが)などもあります。では、なぜほとんど使われていないのでしょうか?私は、Javaプラットフォーム用に書かれた人気のある商用ゲームを2つほど思いつくだけです。

それは性能のせいでしょうか?もしそうなら、どうせ重い仕事はほとんどGPUがやっているのでは?

どのように解決するのか?

ゲーム開発の世界というのは面白いものです。一方では、新しいアイデアをすぐに受け入れ、他方では、まだ石器時代のままであることが多いのです。

実は、.NET/Java/C/C++以外のものに乗り換えるインセンティブはほとんどないんです。

ほとんどのゲーム会社は、ゲームエンジンの一部を他社からライセンスを受けています。これらの部分はC++で書かれており、ソースにアクセスできるので移植できるかもしれませんが、それには多くの労力がかかります(もちろん、ライセンスがそれを許可している必要があります)。

また、多くのレガシーコードがすでにC++で存在しています。もし、以前のプロジェクトのコードが再利用できるのであれば(例えば、続編を書く場合)、新しい言語で書き直すのではなく、同じ言語を使う方がより有利になります(多くのバグを再導入する可能性があり、それを解決するのに時間がかかるため、なおさらそうです)。

カスタムであれ、既存の言語を統合したものであれ、多くの場合はスクリプト言語を使っています(最近ではLuaが有名です)。

ガベージコレクションに関しては、ちょっと問題かもしれませんね。ガベージコレクタはノンブロッキングでなければなりません(あるいは、少なくともごく短時間しかブロックしないことが保証されていなければなりません)。Javaは、メモリ不足になりそうになるとGCでかなり詰まる傾向があることは知っています(そして、世の中のいくつかのゲームでは、そうなっています)。

また、ランタイムのオーバーヘッドにより、ハードウェアを完全に活用することができないため、できることが少し制限されます。CrysisがJavaで書かれていると想像してみてください...目に見える違いはそれだけだとしても、同じようにはいかないでしょう(実行するにはCore i7が必要なのも確かです)。

だからといって、これらの言語がゲーム開発において居場所がないわけではありませんし、ツールプログラミングだけを指しているわけでもありません。ほとんどのゲームでは、3Dゲームを含め、C++のような余分なパフォーマンスは必要ありませんし、すべてをゼロから書くのであれば、XNAのようなものを使うことは完全に理にかなっています。

商業的なゲームに関して言えば、そうでしょうか? ルネスケープ を数えることができますか?最も成功したJavaゲームかもしれませんね。