Java 游戏引擎 [关闭]

2024-01-29

我最近一直在研究游戏开发,我的第一个编程语言是 Java。在玩过许多用 C++ 开发的令人惊叹的游戏后,我想知道为什么 Java 在游戏行业中没有得到广泛使用。我查看了 jMonkeyEngine 3 和其他一些游戏引擎环境,但我看到的屏幕截图远没有那么令人惊叹。 EA 的《极品飞车:热追》和育碧的《刺客信条》等游戏就传达了这种现实主义风格。 为什么Java不能制作出如此行业实力的游戏呢? 这是艺术作品吗?

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

多谢你们。


Java和C#有自动垃圾处理 集合,而 c++ 没有。这 程序员必须更加注意 内存使用以避免悬空 指针等。

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

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

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

另一个重要的事情是行业中已经确定的专有技术。 C++在游戏行业的惯性是巨大的。如今所有游戏开发人员都了解 C 和 C++。拥有大量可供招聘的开发人员可以减少关键人员离开公司的管理风险之一。

但尽管如此,还是有一些成功的游戏的某些部分是用 Java 编写的,比如吸血鬼:假面舞会 - 救赎 http://en.wikipedia.org/wiki/Vampire:_The_Masquerade_%E2%80%93_Redemption.

最近的游戏,比如我的世界 http://en.wikipedia.org/wiki/Minecraft完全用Java编写;但它不具有最先进的图形功能,因为重点更多地放在虚拟环境的动态特性上。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 游戏引擎 [关闭] 的相关文章

  • 模拟函数指针

    以下类包含一个应使用回调技术计算积分的方法 package integrals import java lang public class Integrals public static double f1 double x return
  • 使用 REST API 实现属性/字段级安全

    我正在为支持多租户授权模型的 REST API 构建概念验证 该模型不仅控制用户可以访问哪些对象 还控制对象中的字段 此模型的目标是确保租户管理员只能修改其租户并且只能查看允许的对象属性 我有一个正在开发的现有代码库 可在以下位置公开获取
  • Zuul不转发请求到其他微服务

    我正在使用 Spring Boot 微服务 我已经配置了 eureka zuul 代理和另一个微服务 帐户 如果我直接从帐户拨打电话 则工作正常 帐户和 zuul 服务器都显示在 eureka 上 当我尝试使用 zuul 代理进行访问时 它
  • Android - 检测电容式触摸屏上的触摸压力?

    我听说过 MotionEvent e float press e getPressure 但这只会在没有触摸时返回 0 当我的手指触摸屏幕时返回 1 是否可以找到手指在触摸电容屏上施加的压力值 或者我的预感是否正确 即这只适用于电阻屏幕 M
  • 可以使用注解进行代码注入吗?

    我意识到这可能是一个已经被提出和回答的问题 但请耐心等待 我想知道是否可以使用注释将代码注入到类编译时 典型的示例是为对象的成员生成 getter 和 setter 这并不完全是我所需要的 但它可以说明基本思想 现在在互联网上我得到的基本答
  • 我在 Android Studio 中使用哪个版本的 JDK 有关系吗?

    I know I can choose the SDK location in Android Studio s Project Structure 我有两个问题 当我们已经使用Android SDK时 为什么还需要JDK 毕竟我们不是为
  • 在 Retrofit 中的 POST 请求中发送空正文

    我的 api 需要一个空的 json 主体 发出帖子请求时 如何在 Retrofit 和 Jackson 中进行设置 我尝试通过null 和空字符串 以及 但无法让它发挥作用 POST my url Call
  • Java setLocation() 事故

    我正处于创建一个程序来操作员工 客户系统的开始阶段 现在我刚刚创建了登录 GUI 但我遇到了一些问题 setLocation 方法 我将其设置为 250 250 但这使我的 GUI 高度变得非常疯狂 如果有人能够解决这个问题 我的代码如下
  • Bean 属性不可读或具有无效的 getter 方法

    因此 我的任务是为注册表路由编写一个简单的 Web 应用程序 使用 Spring MVC 所以我有 路线 类 我想在其中保留起点 终点和中间点列表 但我不明白如何将值从 jsp 放入列表 例如使用 jstl 所以我决定解析一个字符串 pub
  • 如何从网上获取源代码?

    我正在尝试从 Web 获取 HTML 源代码 我尝试这样做 u new URL url URLConnection con u openConnection con setRequestProperty User Agent Mozilla
  • 从两个数组中查找公共文件

    我正在尝试从两个数组中查找通用名称文件 我已将两个不同文件夹的文件名保存在两个不同的数组中 现在我正在创建一个通用文件数组 其中包含具有通用名称的文件 filenames 1 包含文件夹 1 中文件名称的数组 filename2 包含文件夹
  • 无法安装 JDK 9,因为“另一个 Java 安装正在进行中”

    我已经在 Windows 10 x64 上使用 JDK 9 一段时间了 但是当我去安装最新的早期版本 b174 时 我首先卸载了以前的版本 像往常一样 然后运行新的安装程序 它失败并显示一个消息框 显示 另一个 Java 安装正在进行中 您
  • Jlist 自定义渲染器

    我正在尝试添加一个我猜你会称其为列表中每个项目的子列表 我构建了一个自定义渲染器 它提供以下输出 正如你所看到的 有些东西不对劲 我没能找到问题的答案 我猜我需要更改面板布局中的某些内容才能获得正确的结果 但不知道是什么 https i s
  • 解析XML文件以获取所有命名空间信息

    我希望能够从给定的 XML 文件中获取所有名称空间信息 例如 如果输入 XML 文件类似于
  • 在硬件级别模拟按键 - Windows

    我正在寻找一种语言或库 使我能够在最大可能的水平上模拟击键 而无需实际按下按键 我对击键级别的具体衡量标准是 当我的计算机已经运行按键侦听器 例如鼠标键和粘滞键 时 它是否会产生与物理按键相同的输出 我尝试过很多击键模拟的方法 java A
  • 用 Java 编写“漂亮”代码的标准? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Xuggler 未转换 .webm 文件?

    我只是尝试使用 Xuggler 将 mov 文件转换为 webm 这应该可以工作 因为 FFMPEG 支持 webm 文件 这是我的代码 IMediaReader reader ToolFactory makeReader home use
  • Apache Beam:如何在使用重复数据删除功能时解决“ParDo 需要确定性密钥编码器才能使用状态和计时器”

    我正在尝试使用 Apache Beam 的重复数据删除功能对来自 Google Cloud Pubsub 的输入消息进行重复数据删除 但是 我创建后遇到错误KV
  • java中的Anagram算法

    我想做字谜算法但是 这段代码不起作用 我的错在哪里 例如 des 和 sed 是字谜 但输出不是字谜 同时我必须使用字符串方法 不是数组 public static boolean isAnagram String s1 String s2
  • 寻找基于循环固定大小数组的双端队列

    我正在寻找一个Deque其具有以下特点 它有固定的大小 如果我在头 尾添加元素 则另一端的元素会丢失 它是基于数组的 所以我可以在恒定时间内访问随机元素 我可以在前面或末尾添加元素 双端队列 我检查了Deque的实施JCF但我没有找到任何合

随机推荐

  • std::initializer_list 作为构造函数的模板参数

    考虑一个从 std 容器继承的类 其模板构造函数调用容器的底层构造函数 此模板构造函数适用于简单的复制和移动构造函数 但不适用于initializer list 构造函数 template
  • DT:根据 R 闪亮应用程序中另一列的选择输入动态更改列值

    我正在尝试创建一个表 使用 DT 请不要使用 rhandsontable 该表几乎没有现有列 一个 selectinput 列 其中每行都有可供选择的选项 最后是另一列 该列将根据用户选择的内容进行填充从每行的 selectinput 下拉
  • 为什么 Internet Explorer 8 中会出现此泄漏?

    为什么下面的代码会泄漏 for var i 0 i lt 100 i var item item elem document createElement div document body appendChild item elem ite
  • 带请求正文的 Elasticsearch GET 请求

    将请求正文与 GET 请求一起传递不是违反 REST 风格的方法吗 例如在Elasticsearch中过滤一些信息 curl localhost 9200 megacorp employee search d query filtered
  • iTextSharp 5 波兰语字符

    我在使用 itextSharp 处理波兰语字符时遇到问题 我想从 html 创建 pdf 一切都很好 但缺少波兰特色 我使用较低的功能 private void createPDF string html MemoryStream msOu
  • 在 Common Lisp 中替换列表中的项目?

    我有一个事物列表 我称之为 L 一个索引 N 和一个新事物 NEW 如果我想用 NEW 替换 L 中 N 中的内容 最好的方法是什么 我是否应该获取到 N 的子列表以及从 N 到列表末尾的子列表 然后使用列表将第一部分 NEW 和最后一部分
  • Prometheus 标签与矢量时间戳的比较

    我有一个像 T V label UTCtimestamp 这样的向量 其中 label UTC 时间戳字符串 我想找到具有类似标签的所有向量的计数 T 1day 其中 T 是 Vector 被推送的时间戳 我正在寻找一些查询 例如 V T
  • C++11 外部模板:我们在哪里真正需要它们?

    在 C 03 中我们有模板显式实例化定义 template class Foo
  • 从 USB 可移动存储读取文件

    在我的应用程序中 我想从 USB 可移动存储读取文件 我有一个 txt 我想阅读它 void read UsbManager manager UsbManager getSystemService Context USB SERVICE H
  • 我们如何处理快速增长得非常大的交集表?

    例如 我们有表A和表B 它们之间存在多对多关系 表 C 是一个交集表 存储 A id 和 B id 以及表示两者之间关系的值 或者作为一个具体的例子 想象一下 stackexchange 有一个用户帐户 一个论坛和一个业力分数 或者 一个学
  • 如何在 1.6 中禁用 JTable 中的所有排序代码

    我有一个 JTable 扩展 自 Java 1 3 1 4 以来一直在项目中使用 它提供了列重新排序和通过单击列进行排序等功能 我们正在升级到 Java 1 6 新的 JTable 会停止旧的排序代码的工作 要使所有内容都适合新的 JTab
  • 使用 DirectShow.NET 的音频同步问题

    我已经在 DirectShow NET 论坛上启动了一个主题 这里是链接http sourceforge net projects directshownet forums forum 460697 topic 5194414 index
  • mat-paginator 更改 mat-paginator-range-label 的放置

    我有一个简单的mat table with mat paginator By default design it looks like this 我想更改范围标签的放置并将其放在导航按钮之间 如下所示 基本上 我需要移动div mat pa
  • 如果执行的 JavaScript 进入无限循环,Android WebView 将进入不可恢复状态

    如果执行的 JavaScript 代码陷入无限循环 Android WebView 小部件似乎会进入不可恢复的状态 例如这个网页就会导致这个问题 Failure Test 只需使用 WebView 在任何 Android 浏览器中输入以下
  • R 连接到 sqlite

    我无法从 R 连接到 sqlite Sqlite3 安装在 Linux 服务器上并且能够创建 修改 但 R 未连接 library dplyr library RSQLite gt db lt src sqlite my db sqlite
  • 后台线程上的领域通知令牌

    我试图在后台线程上获取领域数据并添加通知块 iOS Swift 基本示例 func initNotificationToken DispatchQueue global qos background async let realm try
  • React-leaflet:添加 TopoJSON 层

    我刚刚开始使用 React leaflet 库并获得了一个要加载 geoJSON 层的地图 但是我想使用 TopoJSON 层 我知道这样的纯传单是可能的 https gist github com rclark 5779673 https
  • Visual Studio 解决方案中建议的项目数量

    我们正在开始开发新的应用程序 其中包括大约 12 名开发人员在 MS Visual Studio 中使用 C 开发的 30 50 个项目 我正在致力于应用程序模块的组件化 以支持架构并实现并行工作 我们争论 我们应该有多少种解决方案 有人声
  • ORM 和层

    很抱歉这一点在这里到处都是 但我感觉就像一只狗在追我的尾巴 此时我很困惑 我试图找到开发 3 层解决方案 IL BL DL 的最简洁方法 其中 DL 使用 ORM 来抽象对数据库的访问 在我见过的所有地方 人们都使用 LinqToSQL 或
  • Java 游戏引擎 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我最近一直在研究游戏开发 我的第一个编程语言是 Java 在玩过许多用 C 开发的令人惊叹的游戏后 我想知道为什么 Java 在游戏行