Java高画质3D游戏?

Java高画质3D游戏?,java,Java,为什么市场上没有用Java制作的“高图形3D游戏”?Java不是一个好的选择吗?为什么会这样?我看过的唯一大型游戏基本上是Minecraft,其中不可能有大量的多边形和照明/物理引擎。还需要一台比较好的个人电脑吗?游戏中的图形比Minecraft多得难以置信,剧照运行得更快。我认为Java“浪费”了资源。不管怎么说,问题是:是否有可能用Java制作出好的图形应用程序,或者为什么不呢 游戏开发的世界很有趣:一方面,他们经常 另一方面,接受新想法的速度很快,但它们仍处于初级阶段 石器时代 事实是,很

为什么市场上没有用Java制作的“高图形3D游戏”?Java不是一个好的选择吗?为什么会这样?我看过的唯一大型游戏基本上是Minecraft,其中不可能有大量的多边形和照明/物理引擎。还需要一台比较好的个人电脑吗?游戏中的图形比Minecraft多得难以置信,剧照运行得更快。我认为Java“浪费”了资源。不管怎么说,问题是:是否有可能用Java制作出好的图形应用程序,或者为什么不呢

游戏开发的世界很有趣:一方面,他们经常 另一方面,接受新想法的速度很快,但它们仍处于初级阶段 石器时代

事实是,很少有那么多的动力促使人们转向 .NET/Java/除C/C++以外的任何内容

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

<>也有很多传统代码已经存在于C++中。如果代码来自 以前的项目可以重用(比如说,如果你在写续集), 更重要的是,坚持使用同一种语言, 而不是用一种新的语言重写它(因为你很可能 重新引入一大堆你需要花时间熨平的虫子

最后,游戏中很少有100% C++编写的——很多。 是使用脚本语言完成的,无论它们是自定义的还是 集成现有语言(Lua是比较流行的语言之一) 这些天)

就垃圾收集而言,这可能有点困难 问题。问题不在于它是否存在,而在于它是如何存在的 工作-垃圾收集器必须是非阻塞的(或至少是非阻塞的) 保证只阻塞很短的时间),因为这是不可接受的 让游戏在扫描所有数据时冻结10秒 分配内存以查看可以释放的内容。我知道Java容易阻塞 当GC’ing的内存即将耗尽时(以及 对于一些游戏来说,它会)

在你能做的事情上,你也受到了一些限制:你不能完全做到 利用运行时开销造成的硬件进行攻击。想象一下 Crysis是用Java编写的…即使这是唯一可见的 不同的是,情况就不一样了(我也很确定你会 需要一个核心i7来运行它。)

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

就商业游戏而言——是否算数? 这可能是最成功的Java游戏了


来源:

现代图形卡完成了大部分工作。因此,只要它们能保持GPU供电,在CPU上运行的实际实现语言的原始速度就不再像过去那样重要。不过,额外的JNI开销确实对性能影响很小。如果你做得“正确”并且尽可能多地批处理draw调用,这应该可以忽略不计。