首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Java是否适用于严肃的游戏开发?

Java是否适用于严肃的游戏开发?
EN

Game Development用户
提问于 2012-03-13 16:33:09
回答 8查看 83.6K关注 0票数 65

我已经浏览过互联网,但是用于开发Java游戏的资源并不多,几乎没有C++那么多。事实上,大多数引擎都是用C++编写的。我试着玩一个用jMonkeyEngine制作的游戏,但是这个游戏太慢了,以至于我的电脑都冻僵了。我没有运行其他Java应用程序,也没有太多的资源密集型。相比之下,我的电脑可以轻松地玩大多数现代3D游戏。如果我现在继续学习和改进Java,并且后来被要求学习C++,那么转换可能会很困难。

对于严肃的游戏开发,Java是一种可接受的语言吗?严肃地说,我指的是高质量的图形,在现代计算机上没有太大的落后。我还想考虑为游戏机制作游戏。

EN

回答 8

Game Development用户

回答已采纳

发布于 2012-03-13 22:48:36

是的,请检查这份清单以获得证据。这些游戏是用Java使用轻量级Java游戏库(LWJGL)制作的。它是一个低级别的框架,为高质量的图形提供OpenGL,为声音提供OpenAL .它还提供了输入API。有了这些,您可以很容易地开始在Java中进行严肃的游戏开发。

我目前正在编写我的第二个3D游戏作为一个爱好项目,在Java,我只是喜欢它。过去,我经常用C++编写游戏,但是在切换到Java之后,就没有回头路了。用Java支持多个操作系统可能非常容易,例如,我以前在Windows中开发了一年的Java游戏,在Linux和OS中工作,只有一个bug而不需要在这些平台上编译任何东西。

另一方面,使用Java会遇到一些问题。

  1. 垃圾收集器。正如其他人所指出的,非确定性内存管理是一个问题,您需要记住这一点。
  2. 缺乏第三方图书馆。大多数可用的库都不支持Java。另一方面,您也可以选择从Java调用这些本机库,但这样做需要做的工作更多。还有一些Java端口或现成的包装器可供流行的库使用,例如,我正在使用弹物理库的JBullet - Java端口。另一方面,Java有一个内置的巨大类库,这减少了对与游戏无关的第三方库的需求。缺乏图书馆对我来说不是一个问题,但我可以想象,它可以为其他人。
  3. 据我所知,Java不支持流行的游戏机,也不容易切换到来自Java的游戏机。另一方面,Android是一个流行的移动平台,它使用某种形式的Java。这也是一种选择,但除了在PC和Android设备上工作的相同Java代码之外,不要这样做。
  4. 较小的社区。大多数游戏程序员都使用C++,在我的经验中,他们经常不喜欢Java。不要指望得到别人那么多的帮助。不要指望在没有C++技能的情况下在游戏开发方面找到一份工作。
票数 54
EN

Game Development用户

发布于 2012-03-13 17:03:58

不怎么有意思。事情是这样的--首先,与C++的几乎所有东西相比,现有的Java库很少。

其次,Java作为一种语言根本无法很好地用于游戏开发--例如,如果您正在处理GPU缓冲区,那么Java就不会提供一个语言特性来帮助您确保它们被正确地锁定、解锁或处理,而C++就是这样做的。另外,还存在性能问题-- GC是不确定的,这对游戏来说是非常糟糕的。

我从未观察到任何非独立游戏在执行前没有编译成本机代码的语言中花费了大量时间,即使是这样做的独立游戏也很少见。因此,我现在的信念是,这是根本无法做到的。

而且,如果我现在继续学习和改进Java,并且后来需要学习C++,那么切换会很困难吗?

是的,绝对会。Java和C++有很大的不同,尽管它们在句法上有很大的相似之处。在学习C++时,Java经验几乎没有任何意义。

游戏对图形是一个可行的选择,你可以看到它的成功的游戏,如Terarria和我的世界。但是,如果您打算创建srs图形,那么它在Java中是行不通的。

票数 42
EN

Game Development用户

发布于 2012-03-13 18:05:52

所以,我真的很重视游戏开发,Java仍然是一个可行的选择吗?我曾多次尝试学习C++,但我并不真正喜欢这种语言。我真的不知道为什么,但通常情况下,每当我试图学习,我永远无法理解的主题。

如果您选择Java的原因是您无法理解C++,那么您的Java程序对于高质量的图形来说是不够快的。使用更高层次的语言应该是因为它使你更有效率,而不是因为你无法理解低级语言。

我不认为用Java编写游戏完全是个坏主意,特别是在游戏很简单的情况下,但是如果您使用Java作为拐杖,您将立即遇到性能问题。

因此,简而言之,对于严肃的游戏开发来说,Java是可以被重视的。这包括沉重的图形,快速的游戏发挥无滞后,并可能,和容易切换到控制台?

  1. Heavy :可能,但您将在Java/LWJGL中执行与C++/GL中相同的操作:将字节写入GPU缓冲区和/或使用已被弃用的显示列表,就像“我的世界”那样。如果您不理解内存管理,您也不会正确地这样做。
  2. 没有滞后的快速游戏:在任何语言中都不是一件容易的事情,而且你更有可能在没有思想的情况下用任何一种方式射自己的脚。
  3. 不,Java不会在控制台上使用。
票数 25
EN
页面原文内容由Game Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://gamedev.stackexchange.com/questions/25492

复制
相关文章
2016新版paypal 关闭PayPal预付款,避免自动续费
对于经常购买国外主机的我来说使用paypal的频率非常的高,之前也遇到过paypal账号里面的资金被自动扣除,也发现不少伙伴也遇到这样的问题!其实这也不能怪商家,在大家进行购买的时候就会有提醒的,也就自动续费吧。主要原因还是在于自己,现在来说说如何关闭paypal预付款,避免自动扣费。
用户1191760
2019/02/27
3.6K0
PayPal曝远程代码执行漏洞(含视频)
日前知名在线支付公司PayPal被曝存在严重的远程代码执行漏洞,攻击者可以利用该漏洞在PayPal的web应用服务器上执行恶意命令,最终获得服务器控制权限。 漏洞描述 这个远程代码执行漏洞由独立安全研究员Milan A Solanki发现,被Vulnerability Lab评为严重,通用漏洞评分系统(CVSS)分数达到了9.3,漏洞影响了PayPal的在线营销web应用服务器。 该漏洞存在于服务器中的Java调试线协议(Java Debug Wire Protocol, JDWP),攻击者可以在未授权
FB客服
2018/02/06
1.6K0
PayPal曝远程代码执行漏洞(含视频)
如何在 Chrome 中执行 JavaScript 代码
要在浏览器中执行 JavaScript 脚本,首先你的浏览器得支持。现在主流推荐 Chrome 浏览器,也可以使用基于 Chromium 的 Edge 浏览器。下面来介绍如何在 Chrome 中打开开发者工具,以及如何在开发者工具中运行调试 JavaScript 代码。
村雨遥
2022/03/14
6.2K0
如何在 Chrome 中执行 JavaScript 代码
springboot2 启动后执行代码
版权声明:本文为博主原创文章,未经博主允许不得转载。 本例实现方法 ApplicationRunner @Component @Order(10) // 执行顺序 public class InitSocket implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { //TODO } } @Compo
DencyCheng
2018/11/05
1.2K0
收到告警后如何快速定位问题
上面两个错误是突然出现的,如果只看第一个错误,就可能以为是redisson的bug(https://github.com/redisson/redisson/issues/3273)。实际上是因为命令ZRANGEBYSCORE在大key上执行,耗时太长,引发其他请求也超时
十毛
2021/11/24
1.6K0
时隔一年半终于可以再次收到谷歌 AdSense 付款了
进入十月份了终于再时隔一年半以后可以再次收到谷歌 AdSense 付款了,上次收款还是 2017 年 3 月份的事儿了,自 2017 年 3 月开始明月就基本停止了 AdSense 广告的投放,期间有过短时间的折腾和尝试也都是体验 AdSense 新版广告样式为主的,基本也就没有啥实质的收入的。也就是今年九月份开始将 AdSense 广告作为主要的广告联盟来全站点投放。
明月登楼的博客
2019/05/15
7880
时隔一年半终于可以再次收到谷歌 AdSense 付款了
简单聊聊PayPal与BrainTree选型经历
2019年9月30日,PayPal公司被批准通过对国付宝的股权收购正式进入中国。2019年12月19日晚间,PayPal公司正式宣布,已完成对国付宝信息科技有限公司(Gopay)70%的股权收购。交易完成后,PayPal成为第一家获准在中国市场提供在线支付服务的外资支付平台。
全菜工程师小辉
2020/01/22
4.8K0
PayPal 支付-Checkout 收银台和 Subscription 订阅计划全过程分享
一。生命周期 1. Checkout – 收银台支付 拆解流程如图所示 (过程类似支付宝的收银台):
全栈程序员站长
2022/07/19
7.3K0
PayPal 支付-Checkout 收银台和 Subscription 订阅计划全过程分享
如何在JavaScript中实现某个方法执行超时后则继续执行其它方法?
异想天开,想用 setTimeout 来做个 workaround ,但是 setTimeout / setInterval 方法是在它所在的方法执行完之后才开始计时的,于是,光当一声,这个 workaround 不成立。
阿敏总司令
2019/02/28
1.9K0
Namecheap域名转出到Namesilo商家全部详细图文教程
如果我们一旦喜欢上海外域名商注册域名,那你肯定想不断的折腾,尤其是在各家商家有新注册、转入、续费优惠的时候,我们可以自由的从一个商家转出到另外一个商家,即便我们不缺钱,但是这个也是乐趣。比如今天老蒋看到账户中有几个在Namecheap商家的域名即将到期,如果续费是不赠送隐私保护且价格稍许比其他域名注册商新注册(转入也类似)贵一点,所以我考虑把域名转出到其他域名注册商。
老蒋
2021/12/27
5.9K0
Namecheap域名转出到Namesilo商家全部详细图文教程
8个woocommerce支付网关插件推荐
当然您以前听说过WooCommerce吗?这是用WordPress建立在线商店的最简单方法之一。WooCommerce允许网站所有者添加产品,数字商品,甚至订​​阅(取决于您已安装的WooCommerce扩展)。但是,对于WooCommerce包含的所有强大功能,仅内置了一些默认付款选项。幸运的是,您可以添加大量免费的高级WooCommerce付款网关插件,为客户提供新的结帐选项。
Hoan外贸建站
2020/12/03
6.9K0
如何在网页中执行一段 pandas 代码?
前天正式宣传了一下我的「图解Pandas」(pandas.liuzaoqi.com),短短两天访问量就已经突破一万次。
刘早起
2022/09/21
1K0
事件处理类,收到事件后具体的业务处理逻辑
事件生产类,定义如何将业务逻辑的事件转为disruptor事件发布到环形队列,用于消费: package com.bolingcavalry.service; import com.lmax.disruptor.RingBuffer; public class StringEventProducer { // 存储数据的环形队列 private final RingBuffer<StringEvent> ringBuffer; public StringEventProduc
用户8671053
2021/09/26
6170
django 实现电子支付功能
  思路:调用第三方支付 API 接口实现支付功能。本来想用支付宝来实现第三方网站的支付功能的,但是在实际操作中发现支付宝没有 Python 接口,网上虽然有他人二次封装的的 Python 接口,但是对我这个小白白来说上手还是有点难度,后来发现 PayPal 有现成的 Django 模块,想着以学习的目的来实现这一功能(其实还是自己辣鸡),就决定以 PayPal 的电子支付功能来练手。
希希里之海
2018/08/02
2.2K0
django 实现电子支付功能
绑定事件中 如可控制函数的执行次数
var flag = true; function onlyOne() { if(flag) { "这里是要执行的代码"; } flag = false//该方法是控制函数仅执行一次 因为flag是全局变量 onlyOne()函数执行一次后flag就变成false了 函数就执行不了了
大当家
2018/06/28
2.4K0
C语言main()主函数执行完毕后是否会再执行一段代码
main() 主函数执行完毕后,是否可能会再执行一段代码?给出说明。 main主函数是所有程序必须具备的函数,是C/C++人员一接触代码就知道的函数,那么这个问题会难倒很多人,尤其是平常不注意思考,不懂得问为什么的程序员, 这个问题的答案是:main() 函数结束后可以执行一些代码,进行清理工作。 具体请看下面的解析。
用户5807183
2019/07/15
1.9K0
C语言main()主函数执行完毕后是否会再执行一段代码
Merger:一个美观的微信/支付宝/PayPal等付款二维码合并程序
说明:Merger是一个使用JavaScript实现大部分功能的付款二维码合并程序,界面使用了渐变色,看上去很美观,你可以使用Merger生成一张二维码,或者直接把你的Merger链接发送给对方。Merger会通过User Agent识别对方的客户端,随即展示相应的内容。部署起来也是很方便的,只需要做下简单的配置,再丢到任何一个能够托管静态网页的服务里即可,这样我们可以用来搭建一个属于自己的支付(打赏)页面。
子润先生
2021/05/29
1.5K0
Next -15- 增加赞赏功能
赞赏啊,是一个博客里的摆设功能。 本文介绍如何在Hexo Next主题中加入赞赏。 获取支付码 在微信、支付宝中拿到赞赏码、付款码图片,放入themes/next/source/images文件夹中。 比如我的是 wechatpay.png和alipay.jpg 修改主题配置文件 修改主题配置文件: # Reward (Donate) # Front-matter variable (unsupport animation). reward_settings: # If true,
为为为什么
2022/08/04
5840
Next -15- 增加赞赏功能
PayPal宣布裁员2000人!
当地时间1月31日,在线支付厂商PayPal宣布将裁员 2000 人,约占总员工数 7%,消息一出,PayPal 当日股票收涨 2%。
芯智讯
2023/02/09
7600
一文读懂什么是跨境支付
前几篇文章,咱们一起学习了国际支付清算体系和SWIFT\CHIPS\CIPS等相关知识。
金融民工小曾
2022/04/12
1.7K0
一文读懂什么是跨境支付

相似问题

收到Paypal付款,执行SQL查询

24

付款后未收到PayPal的答复

11

如何在收到付款后执行功能(Sofort)?

18

如何收到paypal付款确认?

10

Paypal付款代码

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档