游戏在我们的日常生活中无处不在,可以说网络游戏在互联网时代成为我们排解压力,放松心情的重要途径。很多互联网公司都在游戏方面创新,在网游行业不断涌现属于这个时代的“独角兽”。然而,说到游戏背后的那些事,首先就要谈到游戏服务器了,游戏服务器不仅需要支撑这么多人同时在线,并还必须且为用户提供良好的体验,这些是如何做到的呢?与普通服务器相比,游戏服务器有什么不同呢?
首先,游戏服务器与普通服务器相比较来说,游戏服务器需要能够保存更多的用户的状态。用户的等级等属性不用说,一般的IM服务也会有,还有一些时刻变化的数据,比如某个玩家的生命值,发技能前后的法力值等等,这些值区别于一般的属性值如名字,ID这些,这些数据会经常性的变化,还会参与到逻辑的计算中,比如你一个多少等级的玩家吃了什么东西之后战力值变化为多少,打在一个多少属性的玩家身上会不会被他闪避,会不会产生暴击…诸如此类的信息,在游戏服务器中都会一一保存。
其次,游戏服务器中每一个用户都是独立存在的,每一个用户的数据、请求等都是独立的,用户彼此间的数据并没有任何交互。这也是游戏服务器与普通服务器之间最大的区别。至于客户端之间会有交互这一点,举最简单的例子,一个人在一个场景里面说了一句话,那么“同一个屏幕”的玩家也需要能够看到他说的这句话。此时游戏服务器就需要判断,多远的距离以内的玩家,会认定为是"同屏幕"的玩家,需要向这些玩家广播这个玩家说的这句话。
这个广播就比较麻烦了。首先,需要计算哪些玩家属于"同屏幕",就是我们在第一点提到的玩家身上某些经常变化的属性需要做的运算,在这里需要根据玩家的坐标,找出来跟在同屏幕的玩家,用到的是AOI的概念。另外,找到了这些需要接收这个消息的玩家之后,将消息转发给它们又是一个IO密集的操作,假如场景中有10个人,那么一句话就需要同时广播给另外9个人,假如有100人,1000人呢,数据量就更大了,而且时间的延迟也不能太长,这对于游戏服务器的性能就要求很高了。所以同样的一个硬件配置的服务器,可能跑Nginx可以同时处理上万的链接,但是对于一个游戏服务器就只有1,2千了,就是因为游戏服务器是一个CPU密集而且IO密集的服务器类型。而且不仅需要这样的游戏服务器不仅要求性能比较高,还需要服务器具有极高的稳定性,总不能隔一会就宕机了,那大家还怎么玩。
此外,游戏服务器需要更好的数据承载能力和处理能力。而普通服务器则在各个方面都比较均衡。在寻找游戏服务器租用商的时候,一定要选择那种CPU性能非常出色的。目前来说,国外的AWS和国内的阿里云的服务器性能更靠谱一点,性价比和口碑上阿里云还可以,大家不妨自己比较一下,也可以参考下阿里云的游戏解决方案,端游、页游、手游架构都挺全的。尤其对于CPU密集型的游戏服务器的配置而言,阿里云的ECS也提供了一些挺详细的配置方案来解决这样的问题,提供独享型云服务器,具有独享CPU极稳定计算,最高可支持6Gbps的内网带宽,而且最高支持65万pps,更是具有40核224G超大的计算能力,可以说是解决像游戏服务器这样的问题的机皇了,大家不妨一试。