网络游戏同步技术四:方案选择

本文介绍什么游戏应该使用什么网络同步技术。


帧同步与状态同步的区别,可以这么打比方:帧同步是所有客户端播放同一部电影,视觉上完全一样;状态同步是所有客户端拿着相同的剧本(状态一样),但是电影画面略有差异。而快照同步,由于所有的仿真都发生在服务器,所以各个客户端视觉上是一致的,也是在播放同一部电影。

弱客户端,像小游戏,云游戏,都可以使用快照同步。

对于面画有精确要求的,比如格斗类游戏,玩家的出招强依赖于对手的出招动作,所以保持双方视觉上的一致很有必要,此时就适用帧同步,此外,体育类、rts 等需要精细操作的也都得用帧同步。

其他类型的,基本上都可以使用状态同步。

王者荣耀使用的是帧同步,这个分享《王者技术修炼之路》[1]说明了理由:

第一,它的开发效率比较高。如果你开发思路的整体框架是验证可行的,如果你把它的缺点解决了,那么你的开发思路完全就跟写单机一样,你只需要遵从这样的思路,尽量保证性能,程序该怎么写就怎么写。比如我们以前要在状态同步下面做一个复杂的技能,有很多段位的技能,可能要开发好几天,才能有一个稍微过得去的结果,而在帧同步下面,英雄做多段位技能很可能半天就搞定了。
第二,它能实现更强的打击感,打击感强除了我们说的各种反馈、特效、音效外,还有它的准确性。利用帧同步,游戏里面看到这些挥舞的动作,就能做到在比较准确的时刻产生反馈,以及动作本身的密度也可以做到很高的频率,这在状态同步下是比较难做的。
第三,它的流量消耗是稳定的。

moba 类型游戏其实是可以使用状态同步的,王者荣耀采用帧同步算是一种个性化的选择,也付出了很多努力来克服帧同步的弱点。不过看到分享里的这一段的时候,就知道王者荣耀很强调act,画面上追求打击感,那要这种效果,用帧同步显然是更适合的:

第二,它能实现更强的打击感,打击感强除了我们说的各种反馈、特效、音效外,还有它的准确性。利用帧同步,游戏里面看到这些挥舞的动作,就能做到在比较准确的时刻产生反馈,以及动作本身的密度也可以做到很高的频率,这在状态同步下是比较难做的。

守望先锋使用的是状态同步,这个分享《《守望先锋》回放技术-阵亡镜头、全场最佳和亮眼表现》[2]说明了理由:

Overwatch最终没有选择确定性帧同步方案,原因如下:首先,我们不希望程序员和策划的因为偶现的不确定性而产生心理负担;除此之外,要支持中途加入游戏也不简单。模拟操作本身就已经很耗了,如果5分钟的游戏过程,每次都需要重头开始模拟的话,计算量太大。
最后,实现一个阵亡镜头也会很困难,因为需要客户端快照以及快播机制。按理说如果游戏支持录像文件的话,快播自然就能做到,不过Overwatch并没有这一点。


参考

[1] 邓君. 王者技术修炼之路. Available at https://youxiputao.com/articles/11842, 2017-5.

[2] kevinan. 《守望先锋》回放技术-阵亡镜头、全场最佳和亮眼表现. Available at https://www.sohu.com/a/162289484_483399, 2017-8.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值