Java游戏引擎

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (434)

我最近一直在研究游戏开发,我的第一个编程语言是Java。在玩过许多用c ++开发的令人惊叹的游戏之后,我想知道为什么Java在游戏行业中不被大量使用。我看着jMonkeyEngine 3和其他一些游戏引擎环境,但是我看到的截图并不那么令人惊叹。像极品飞车这样的标题来自育碧的EA和刺客信条表达了这样的现实主义。为什么Java不能制作这样的行业强项游戏?这是艺术作品吗?

Java和C#具有自动垃圾收集功能,而c ++则没有。程序员必须密切关注内存使用情况,以避免悬挂指针等等。

提问于
用户回答回答于

Java和C#具有自动垃圾收集功能,而c ++则没有。程序员必须密切关注内存使用情况,以避免悬挂指针等等。

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

在游戏编程中垃圾回收并不是一个优势。即使Java的性能与大多数任务的C ++差不多,并且JIT甚至可以进行非常积极的优化,超过静态分析期间可以完成的优化; 垃圾收集可以使帧速率在最糟糕的时刻下降。

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

另一个重要的问题是已经在行业中解决的知识。C ++在游戏行业的惯性是巨大的。今天所有的游戏开发者都知道C和C ++。拥有一个庞大的开发人员池,可以减少离开公司的主要管理人员的管理风险之一。

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

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

许多其他游戏和引擎的运行时间支持基于高性能渲染和网络平台(用C / C ++编写)构建的托管(安全自动内存分配和收集)脚本语言,例如虚幻引擎

用户回答回答于

一般来说,这里所说的一切都是不为了游戏开发而转向Java的原因; 。游戏行业目前正在发生模式转变。有三件事情已经改变或正在改变游戏行业:

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

游戏并不完全依赖于自己。前者(低级语言)中存在的主要优势正在放缓,而不是被诸如C#和Java(高级语言)等语言中存在的优势所打动。两个原始但不可否认的例子是在Facebook上运行的游戏以及诸如手机,平板电脑等远程媒体

重要的是要说明,在所有两种情况下,上面列出的所有三个问题都解散了。没有服务器就无法工作的游戏不必担心被复制侵犯(通过不包括反向工程的私人托管)。对网络相关游戏的需求需要一种能够平衡系统性能和网络性能的语言(通常是Java和C / C ++之间的僵局倾向于严格的C / C ++是由于大量的预先存在的库)。然而,在模块化网络程序模块中设计的游戏在C / C ++等低级语言中开发将不切实际。一个有兴趣用C / C ++设计一个模块化网络程序模型游戏的公司必须创建一个完全专注于那一个游戏的虚拟机,或者重新编译/重新编译游戏太多疯狂的想法。国际海事组织,虽然说哪种语言是首选也许还为时过早,但我打赌我有三个关键原因。

  • 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#,但Google另一方面可能会从中受益。与谷歌竞争时,微软从未有过很多幸运,Google / Android大量使用Java。“愤怒的小鸟”最初是用Java的“FYI”设计的,并被移植到iPhone的C#中。如果谷歌/安卓实施标准化,微软将像一只苍蝇一样降下来,带着苹果与他们一起。

扫码关注云+社区

领取腾讯云代金券