为什么Java不适合游戏开发?
为什么Java不适合游戏开发?
作为一个多年的游戏服务开发者,我来回回答这个问题。如果你仔细看招聘网站,你会发现很少有游戏招聘java(我期间看杠精不要抬杠,我说的很少,也很少,不是说没有)。那为什么其他领域的霸主在游戏行业连喝口汤的资格都没有呢?事实上,主要有两个原因,这两个原因都与程序员最关心的效率有关,一个是开发效率,一个是运行效率。不幸的是,作为一个不上不下的java,两个都占不了。
首先是开发效率。几年前,手机游戏开始流行起来,游戏公司多,产品相似度高。如何尽快开发游戏并在线运营,在快速迭代中尝试和错误,降低开发周期就是降低开发成本。在这种环境下,许多脚本语言已经成为首选,如nodejs、php甚至有lua和python(这里多说一句,虽然lua语言本身很简单,但其实lua在游戏领域的使用成本很高,至少在这四种剧本语言中是最高的,因为他只是一种胶水语言,应该附着在c/c++,游戏周围的库都要自己造轮子或者找轮子,同时,对于发动机部分,对核心开发人员的要求也很高。如果公司没有丰富的c//经验c++程序员,lua基本玩不了)。java在这些脚本语言面前没有优势。java在这些脚本语言面前没有优势。nodejs开箱即用,前后端1可以用js写(html5时尚 让这种情况越来越多)。而且php上手容易,开发简单,就像一些使用http的弱互动游戏一样,热更新简直不太酷,没有感知修复bug。一些简单的休闲游戏可以通过这些脚本语言快速完成。以之前流行的刀塔传说为例。用这些脚本语言没有压力,尤其是棋牌游戏,脚本语言是首选。
其次,在一些密集计算的游戏中,我们来谈谈运行效率。c++一些大型游戏是首选,在计算要求高、业务逻辑复杂的情况下,提高效率可以容纳更多的在线人数,降低成本。同时,对内存的要求也很高。使用c++可以编写内存代码(技术过于夸张[捂住脸])。程序员有最终决定权申请和释放对象。gc消耗不存在。java生成字节码,代码执行必须通过jvm运行。对于那些性能要求严格的程序来说,中间消耗是绝对不可接受的。
基于以上两点,java在操作效率和开发效率之间的语言自然不会受到游戏行业的青睐。