小编典典

为什么只有少数视频游戏是用 Java 编写的?

all

为什么用 Java 编写的商业 3D 视频游戏(不是随机的开源 2D
游戏)不多?从理论上讲,这很有意义:您几乎可以免费获得生产力提升和跨平台应用程序,例如大量的 Java
库和内置垃圾收集(尽管我承认我’我不确定后者是否是一件好事)。那么为什么很少使用呢?我只能想到几个为 Java 平台编写的流行商业游戏。

是因为性能吗?如果是这样,那么大部分繁重的工作不会由 GPU 完成吗?


阅读 59

收藏
2022-08-24

共1个答案

小编典典

游戏开发世界是一个有趣的世界:一方面,他们通常很快接受新想法,另一方面,他们仍处于石器时代。

事实是,切换到 .NET/Java/C/C++ 以外的任何其他东西的动机很少。

大多数游戏公司从其他公司获得部分游戏引擎的许可。这些部分是用 C++
编写的,尽管您可能可以访问源代码以便移植它,但这需要付出很多努力(当然,许可证需要允许)。

此外,许多遗留代码已经存在于 C++
中。如果可以重用以前项目的代码(例如,如果您正在编写续集),那么坚持使用相同的语言更重要,而不是用新的语言重写它(更重要的是,因为您可能会重新引入大量的错误,您需要花时间解决。

最后,无论如何,很少有游戏是用 100% C++ 编写的——很多都是使用脚本语言完成的,无论它们是自定义的还是只是集成现有的语言(Lua
是当今最流行的语言之一)。

就垃圾收集而言,这可能有点问题。问题不在于它的存在,而在于它是如何工作的——垃圾收集器必须是非阻塞的(或者至少保证只会非常短暂地阻塞),因为让游戏冻结 10
秒是完全不可接受的。它扫描所有分配的内存以查看可以释放的内存。我知道当 Java 接近耗尽内存时,它往往会在 GC’ing
中窒息(对于一些游戏来说,它会)。

您可以做的事情也受到更多限制:由于运行时的开销,您无法充分利用硬件。想象一下 Crysis 是用 Java
编写的……即使那是唯一可见的区别,它也不一样(我也很确定你需要一个 Core i7 来运行它。)。

这并不意味着这些语言在游戏开发中没有它们的位置——不,我指的不仅仅是工具编程。对于大多数游戏,你不需要从 C++ 中获得的额外性能,包括 3D
游戏,如果你是从头开始编写的,那么使用 XNA 之类的东西是非常有意义的——事实上,有一个很有可能会。

就商业游戏而言 - RuneScape算不算?这可能是目前最成功的 Java 游戏。

2022-08-24