浅谈实时对战网络游戏的同步机制
实时对战游戏,相信大家都不陌生,一些经典的游戏:《王者荣耀》(MOBA游戏)、《守望先锋》(FPS对战游戏)、《球球大作战》(休闲竞技游戏)、《魔兽世界》(MMORPG游戏),玩家在游戏场景中都能够和其他玩家进行实时同步,现在我们就来讨论一下这些游戏背后的实时同步技术。
重要的性能指标
一般来说,游戏的实时同步技术,有以下一些重要性能指标:
- 实时性
所谓游戏的实时同步,是指玩家在游戏内的操作能够立即得到反馈,并且同步给其他玩家,让其他玩家也能尽快的知道该玩家的操作,所以操作反馈的实时性是衡量同步的实现是否优秀的一个关键指标。 玩家的操作反馈越实时,其同步实现就越好。
不同类型的游戏对操作实时性的要求并不一样,FPS对战类型的游戏,例如《守望先锋》,对操作实时性的要求是最高的,操作反馈延时一般不能超过50毫秒,MOBA类游戏《王者荣耀》,休闲竞技类游戏《球球大作战》,ARPG类型的游戏对实时性的要求也比较高,延迟一般不能超过100毫秒,MMORPG类型的游戏《魔兽世界》对实时性的要求相对低一些,200毫秒以下都能接受。 - 一致性
游戏的一致性是指参与游戏的所有玩家看到游戏状态都是一样的。游戏的一致性分为过程一致性和结果一致性。过程一致性是指在游戏过程中,所有参与玩家每一帧的状态都一致;而结果一致性是指在游戏过程中,中间的状态可能不一致,但是游戏结束的时候最终的结果必须一致。所有的实时游戏,都要求结果一致性,但是过程不一定要完全一致。很多的实时同步算法,都会以牺牲一定的过程一致来获取更好的效率。 - 在弱网环境下的流畅性
现在很多实时游戏,例如《王者荣耀》都运行在移动终端,例如手机上。手机上的移动网络是一种典型的弱网环境,其质量不稳定,延迟高,还经常有丢包,因此能否在弱网环境下流畅的同步是衡量同步实现是否优秀的一个重要指标。 - 同步玩家数量
同一场景内可以支持的玩家数量,也是一个重要的指标,不同类型的游戏一般要求差别比较大。对战类型的游戏,例如《守望先锋》、《王者荣耀》,一般场景内的玩家人数都不超过10人;吃鸡类型的游戏,一般场景内的人数不超过100人;MMORPG游戏,例如《魔兽世界》,同一场景内的人数可以达到上千人。 - 反作弊性
大部分玩家都期望游戏是公平的,玩家无法通过作弊来获取不当收益,从而影响游戏的公平性,所以反作弊性是一个重要的指标。游戏作弊一般有两种方式,一种是能够查看一些本来应该对玩家保密的游戏信息,例如战争迷雾,这种作弊方式相对没有这么严重。另外一种是可以直接篡改游戏数据,这种方式就比较严重了,会完全破坏游戏的平衡性,要严格避免。一般来说,游戏的客户端比较容易被第三方软件篡改,所以能否通过直接查看或者修改优秀客户端数据就能进行作弊,是衡量同步实现在反作弊性方面表现是否优秀的一个很重要的评价标准。 - 网络流量消耗
网络流量永远都是稀缺的,能否尽可能的降低流量消耗是步是衡量同步实现是否优秀的一个重要指标。
三种不同方向的技术实现介绍
所有的设计都是一种权衡,一种实时同步的技术实现要使得所有上述性能指标都表现优秀是不可能的。因此,不同的技术实现会进行一些权