精品项目

  • Home
  • 为什么Java不适合游戏开发?(C语言能开发王者荣耀吗?)

为什么Java不适合游戏开发?(C语言能开发王者荣耀吗?)

1.为什么Java不适合游戏开发?

作为一个多年的游戏服务器开发者,我来回答这个问题。只要你仔细看看招聘网站,就会发现招java的游戏很少(希望我不要说太多,说的很少,不是说没有)。那么为什么其他领域的霸主连游戏行业的一口汤都没有资格喝呢?其实主要有两个原因,而且都和程序员最关心的效率有关,一个是开发效率,一个是运行效率。可惜作为一个上不去下不来的java,不能两者兼得。

首先是开发效率。前几年手机游戏流行,游戏公司多,产品相似度高。那么如何最快的开发出游戏并投入运营,在快速迭代中试错,减少开发周期就是降低开发成本。在这种环境下,很多脚本语言成为了首选,比如nodejs、php甚至lua、python(这里还有一点,虽然lua语言本身很简单,但实际上lua在游戏领域的使用成本是很高的,至少是四种脚本语言中最高的,因为它只是一种胶水语言,依赖于c/c++,而作为围绕游戏的库,需要自己搭建或者找轮子,而对于引擎部分,面对这些脚本语言,java并没有优势。Nodejs可以用js写出来(html5的普及让这种情况越来越多)。而且php好用,开发简单,像一些使用http的弱交互游戏,热更新不要太酷,不要无意识的修复bug。一些简单的休闲游戏可以用这些脚本语言快速完成。就拿之前流行的传奇刀塔来说,使用这些脚本语言完全没有压力,尤其是对于棋牌类游戏,脚本语言是首选。

其次,再说运营效率。在一些计算密集型游戏中,c++是首选。在一些大型游戏中,计算要求高,业务逻辑复杂,提高效率可以容纳更多的在线人数,降低成本。同时对内存要求也高。用c++,可以算内存,写代码(手法太夸张了【捂脸】)。对象的应用和释放都是程序员说了算,不存在gc消耗。但是java生成字节码,代码执行要通过jvm运行,这对于那些对性能要求严格的程序来说是绝对不能接受的。

综上两点,java这种介于运行效率和开发效率之间的语言,在游戏行业自然不会受到青睐。

为什么Java不适合游戏开发?

毕竟游戏是有分类的,游戏也分客户端和服务器。

很多游戏的服务器都是Java。

而且实时性要求不高的游戏客户端也可以用Java开发,比如《我的世界》。

我想题主是想问为什么3A大作不用Java开发?

这其实是一个路径绑定问题。目前的大作基本都是游戏引擎做的,而这些游戏引擎已经发展了很多年。如果是Java做的,可能会用未经业界验证的新东西。大公司不想冒险,Java的垃圾收集机制本身也是一个难点,不适合实时游戏。

因为java里多了一个jvm,所以效率低,游戏的实时性很重要。

看一门语言适合开发什么,主要有三点。

1.效率,包括开发效率和执行效率。

2.生态圈,有人提供了一套很好的解决方案,为什么不用呢?

3.产品的重点。

以java和c++为例,java主要用于web开发,但是c++也可以通过cgi写web,c++的执行效率比java低几个块,但是为什么不用c++写web呢?因为用c++开发web效率太低,而java有各种web框架,所以开发效率高。

如果产品是游戏,游戏的实时性很重要,玩一个反应慢的游戏一定很烦。游戏产品的实时性注定了要采用高效的语言开发,C和c++自然跑不掉。

Java开发游戏性能效率差,开发一些小游戏还可以。java是面向对象的,所有方法都封装在类中。如果要调用方法,就得有实例类,而游戏主要是讲逻辑。

物体就像机器,有很多功能,但我的游戏逻辑只需要每台机器的一个功能,但要用的话,就要整台机器做出来。这就是面向对象的缺陷吧?

c是面向过程的,可以更灵活地设计过程逻辑,省去了很多不必要的东西,性能也大大提高。

万向

java的优点是利用现有的各种类包,达到重用的效果,大大提高开发效率。

当然,java也可以只为逻辑设计类,但那不是java的强项,没有太大意义。

百度搜索圈T社区(www.aiquanti.com)免费视频教程

JAVA可以用来开发游戏服务器,也就是开发网络游戏。网络游戏在数据处理上具有高实时性、高并发性、高一致性。而且由于自身JVM的垃圾收集机制对服务器内核的性能要求很高,处理这部分数据会占用一定的资源。游戏的实时性代表了大量的数据会被频繁的改变和替换。

JAVA不是做不到,而是对开发者能力要求高!如果能充分利用JAVA的并发优势,是可以做到的,而且已经被一些小公司作为网游服务器的开发语言。

PC端,移动端单机游戏不需要考虑JAVA。显然JAVA的2D3D处理效果还不如一些主流游戏开发语言!语言有它的使用场景,我们要抓住它的优点利用它,而不是拿它的缺点和其他语言的优点去比较!现在JAVA是服务器开发的最佳候选,因为它的帝国大厦很完善,开发者也很多!

如果你问我java适合开发游戏吗?我的回答绝对合适。java开发效率高,运行效率一般。在需要高效运行的地方用C或cxx写就行了。现在市面上大部分游戏都不是单一编程语言开发的,没必要和语言纠结太久。

很多人说运行效率也很重要,但其实一般逻辑你是感受不到区别的。普通逻辑用java或者c#,或者这样开发效率的脚本语言,调试效率高的语言会让你开发起来更加得心应手。尤其是脚本语言。

c和cxx只在特别需要效率的地方使用。

做游戏引擎,当然要看性能。c的性能最好。Java性能其实很好,看谁想出一个简单快速的框架。

2.C语言可以开发王者荣耀吗?

c语言当然可以开发王者荣耀。

王者荣耀相关文章明确提到客户端,也就是手机上的APP使用Unity3D游戏引擎。具体的开发语言主要是C/C++和C#。

为什么Java不适合游戏开发?(C语言能开发王者荣耀吗?)

微软的核心是C/C++/C#。微软的Windows系统主要是用C语言编写的,应用软件中使用了很多C#。著名的office早期是用C语言编写的,后来微软用C++完成了Office的改写。

c语言可以开发王者荣耀。

因为C语言可以编写底层系统,而王者荣耀可以在C语言编写的系统中正常运行,所以C语言支持王者荣耀的所有代码,反过来,C语言也可以用来编写王者荣耀的代码,C语言可以开发和修改王者荣耀的代码,让王者荣耀更好的服务于喜欢玩游戏的普通人。

发表评论