从Web后端(Java)转到游戏服务端的感受

九零后的男生几乎都是玩电子游戏长大的,做游戏开发几乎是每个九零后男生从小就有的梦想吧。我的大学时代,正好与移动Web高速发展的时代重合了,大学里几乎所有同学都是做Web方向的开发,Web前端,Java后端等等。大四的秋招阴差阳错的就投了一家游戏公司,允许Java后端转到游戏服务端,而且团队的大佬还是与我同校同专业的比我大五届的师兄。看在缘分,我就被招了进去。

技术感受:Web后端跟游戏后端的区别:

1、从成熟程度上说,Web的框架比游戏的框架要成熟很多,比如Java后端的框架技术,Tomcat、SpringMVC、Struts2这些公开通用框架已经帮我们做好了监听端口,分发请求等相关工作,而且性能还非常优秀;而游戏后端并没有众多优秀的开源框架,可能需要从零开发,从监听端口,应用层协议一步一步的自己定制。

2、从关注点上说,由于Web已经有很多成熟的框架,业内的规范非常明确,所以代码的分层非常明确,而且Web系统的功能多种多样,而且逻辑各不相同,Web程序员更多的是关心逻辑方面代码;而游戏后端(以RPG游戏为例),业务逻辑都是创角转职打怪升级刷装备,没有太多复杂的逻辑,会更侧重于设计出性能优秀的服务器架构。

(半年后补充,游戏的逻辑比现实的逻辑复杂很多,有各种超越现实的需求,业务逻辑代码也是非常复杂 2019.03.01)

3、从存储上说,有的并发较低Web系统可以不用NoSQL,只使用关系型数据库。而游戏讲究实时性,会大量的使用到NoSQL,如:游戏中的角色信息发生改变时,会先存在NoSQL中,然后通过一系列存储计划才会同步到数据库中。
    此外,Web经常会数据库中读取配置,而游戏是几乎都是在服务器启动时将配置文件加载到内存中,使得可以快速读取配置(如:装备属性,怪物属性等等)。
    最后,web的习惯是遵循数据库三大范式。然后游戏由于经常增加或优化系统,如果每次增加系统都要建表或加列,就会影响程序开发时间。所以经常是将一堆数据拼json后,再存进数据库的text字段,如"{‘lev’:100, ‘power’:10000,‘eqm_list’:[], ‘xxx_list’:[]}",当然,使用mangodb会更爽。缺点就是条件查询起来比较困难。

4、从连接上说,Web端更多是HTTP或HTTPS的短连接,游戏端更多是WebSocket、TCP等长连接。

当然,游戏后端和Web后端从本质上来说是一样的。

风格感受:

感觉游戏公司的人看起来都好年轻,好有活力,很多大佬看起来就二十三、二十四岁,但实际已经30+了。最大的原因可能是因为游戏人时刻都充满Creative吧。

最后附一张自己脑补的服务器流程图:

从Web后端(Java)转到游戏服务端的感受_第1张图片

总结(转自https://www.ctolib.com/topics-120912.html):
游戏行业的后端相对于互联网应用来说,其开放性和标准化并不完善,这就导致了很其他行业看游戏有一种神秘面纱,隐秘而封闭。

造成这个原因有很多,游戏业务的复杂性以及受众群体小是主要原因,它不像web应用天生有开源组织和社区基因的支持,也没有互联网行业的如此大的受众面和影响力,除了一些比较出名的游戏引擎以外其他的功能组建都是有各个游戏公司基于自己业务逻辑自己搭建,每个公司业务方向不同又加大了知识的流通以及标准的建立,这对整个生态的发展已经产生了制约,特别是那些想加入游戏行业的新人来说,准入门槛较高,网上可找到的学习资料也很少。

你可能感兴趣的:(程序人生)