Java 游戏引擎 [已关闭]

2022-09-02 02:42:37

我最近一直在研究游戏开发,我的第一个编程语言是Java。在玩了许多用c ++开发的令人惊叹的游戏之后,我想知道为什么Java在游戏行业中没有大量使用。我看了jMonkeyEngine 3和其他一些游戏引擎环境,但我看到的截图远没有那么令人惊叹。像《极品飞车:极品飞车》等游戏EA和育碧的《刺客信条》都传达了这种真实感。为什么Java不能生产出如此行业实力的游戏?是艺术作品吗?

Java 和 C# 有自动垃圾回收,而 c++ 没有。程序员必须更密切地关注内存使用情况,以备不时髦的指针等等。

谢谢你们。


答案 1

Java 和 C# 有自动垃圾回收,而 c++ 没有。程序员必须更密切地关注内存使用情况,以备不时髦的指针等等。

你自己已经回答了你的问题。

在游戏编程中,垃圾回收不是一个优势。即使Java的性能或多或少与大多数任务C++相当,JIT甚至可以进行非常积极的优化,从而击败在静态分析期间可以完成的优化;垃圾回收可能会使帧速率在最坏的时刻下降。

此外,对于图形密集型任务,Java不是很合适,因为运行时认为有许多事情是不安全的,因此是被禁止的(比如投射指针来重新解释数据)。

另一个重要问题是该行业已经确定的专业知识。C++在游戏行业的惯性是巨大的。如今,所有游戏开发人员都知道 C 和 C++。拥有一个庞大的开发人员池来雇用可以减少管理危害之一,这是关键人员离开公司的关键。

但尽管如此,还是有一些成功的游戏,其中一些部分是用Java编写的,比如《吸血鬼:假面舞会-救赎》。

Minecraft这样的最新游戏完全是用Java编写的。但它没有最先进的图形,因为重点更多地放在虚拟环境的动态性质上。

许多其他游戏和引擎都有一个运行时,它支持一种托管(安全的自动内存分配和收集)脚本语言,该语言建立在高性能渲染和网络平台(用C/C++编写)之上,例如虚幻引擎


答案 2

一般来说,这里所说的一切都是不移植到Java进行游戏开发的原因。。游戏行业目前正在发生范式转变。有三件事已经改变或正在改变游戏行业:

  • 海盗行为
  • 客户端-服务器程序模型
  • 模块化网络程序模型

游戏不再完全依赖于自己。前者(低级语言)中存在的关键优势是,通过C#和Java(高级语言)等语言中存在的优势来权衡速度。两个粗糙但不可否认的例子是在Facebook上运行的游戏,以及手机,平板电脑等远程媒体

重要的是要指出,在所有两种情况下,上面列出的所有三个问题都已消除。没有服务器就无法工作的游戏不必担心被复制侵权(不包括通过逆向工程进行的私人托管)。对网络相关游戏的需求需要一种能够平衡系统性能与网络性能的语言(通常是Java和C / C++之间的僵局,由于大量预先存在的库,严格地有利于C / C++)。但是,在模块化网络程序模块中设计的游戏对于在C / C++等低级语言中开发是不切实际的。如果一家公司有兴趣在C/C++中为模块化网络程序模型设计游戏,则必须创建一个完全致力于该游戏的虚拟机,或者多次重新编程/重新编译游戏,以至于无法思考。IMO,虽然现在说哪种语言是首选可能还为时过早,但我把赌注押在Java上有三个关键原因。

  • 1)JVM允许基于Java的应用程序几乎可以在任何平台上运行,无论是Apple,Android,Windows 8还是Linux / UNIX派生(几乎支持任何硬件平台)。

  • 2)Java使用OpenJL(OpenGL衍生品,它将作为客户端在OpenGL上运行 - jMonkey是OpenJL中设计的引擎)。重要的是要注意,只有Microsoft Windows使用DirectX,尽管它可能很好,但它只有一个缺点。实际上,每个可以运行游戏的操作系统都能够在OpenGL中渲染,模块化设计正在以前所未有的方式推动这一点。(请注意,微软正试图通过垄断Windows 8的分发来偏离这个问题)。

  • 3)Java支持JVM内部的线程,这使得它能够充分利用多核处理器,而无需使用任何第三方库。目前,这是所有其他语言(尤其是为手机开发的语言)的障碍。

虽然JVM确实存在延迟问题,但应该注意的是,可以通过线程消除这些问题。我也不会太担心Windows 8和微软的推动。谷歌的股价为每股720美元,苹果的股价为每股526美元,微软迄今为止的股价为27美元。虽然苹果可能会受到微软推动的影响,主要是由于使用C#,但另一方面,谷歌可能会从中获利。微软在与谷歌竞争时从未有过太多的幸运,谷歌/Android大量使用Java。Angry Birds最初是用Java FYI设计的,并移植到iPhone的C#中。如果谷歌/Android强制实施标准化,微软将像苍蝇一样下降,带走苹果。


推荐