游戏服务器同步问题汇总
个人理解
- 帧同步和状态同步是一种刻板思维,现代的游戏肯定是2个极端之间求平衡,达到游戏最合适同步方式;
- 极端1状态同步:客户端所有的操作都要由服务器确认,任何网络波动都会导致玩家体验很差,并且服务端资源开销很大;
- 极端2帧同步:服务端相信客户端的所有数据,服务端做的检验很少,基本相当于中心广播器,把一个玩家的操作转发给另一个玩家,此时玩家之间的一致性不一定能保证;
- 公理1:客户端在绝对时间上永远领先于服务端,这是由网络RTT和服务端buffer决定的;
- 定理2:重要的数据应该以服务端为唯一仲裁,即使客户端模拟失败了也应该进行状态回滚,无法回滚就强制进行resync校准;
- 定理2:客户端运行了2个世界,第一个是玩家看到的世界,这个世界是领先于服务端的,领先部分是由客户端预测模拟出来的;第二个服务端确认过的世界,它相当于一个影子,当预测发生回滚时,客户端就像追逐影子一样插值,使得玩家尽可能感受不到卡顿和回滚。
云风blog
放置类游戏的网络同步
继续谈网络游戏的同步问题
lockstep 网络游戏同步方案
OverWatch分享
守望先锋GamePlay框架与网络同步
守望先锋武器技能脚本系统
其他
知乎
syncmodel