守望的实现思路
大概性总结:客户端先行稍微领先服务器,中间大概差半个RTT时间,对于用户的操作一般都是立即反应,状态进行一些预测(其实只是部分预测,如:移动状态,弹跳轨迹。攻击状态是不会预测的)先演示,在收到服务器的消息后进行校对修正。本地别人的状态也是同样的逻辑用收到的最后一帧状态模拟,直到新的消息状态收到。在回拉矫正的过程中用插值。
其中 遵循 攻击者优先 就是说 在一定的回滚范围内,一旦一方判断击中目标 服务器校验真实就算击中。
服务器和客户端 缓存 回滚有一个上限一旦消息间隔超过这上限值 便不再遵循上述的优先级因为网络环境太差了。
上面说到的客户端预测是有选择的预测。很多关键性的事情还是要等服务器校验后结果,就会产生一种表现 就是击中某处或某人,只在上面产生弹痕或者爆炸特效 但是是否减血等数据变化都要等到服务器确定消息后再变化。
能够保证逻辑状态等能够灵活回滚,变速发送消息等特殊同步机制,就需要把逻辑和显示强分离。这可能也是最后守望用了ecs的设计模式的原因。
一个b站的视频 主要说了网络同步
网友评论