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

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

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

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

2、从关注点上说,由于Web已经有很多成熟的框架,业内的规范非常明确,所以代码的分层非常明确。但游戏服务端更多的是闭源代码,各种写法各种骚操作层出不穷。从业务的逻辑复杂度,肯定是游戏服务端比较复杂,毕竟游戏里各种超越现实的需求。web大部分场景是CRUD操作,请求间比较独立,容易扩展和负载均衡。

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吧。

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

在这里插入图片描述

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

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

  • 17
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 31
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值