传统的状态同步流程
最近在整理前项目的代码,顺带把我们之前状态同步的一些技巧记录一下,本文是关于移动预测的。
下图是单人环境下 小甜甜 风骚的疾跑:
![](https://i-blog.csdnimg.cn/blog_migrate/8d3db304c916aae34f9b34095c73083c.gif)
现在考虑一下把这个疾跑同步给其他玩家。
按照mmo传统的 状态同步 和 客户端先行 的做法,我们的主角在 移动状态 开始时向服务器发送 移动包,服务器收到包后进入 移动状态 并立刻广播给第三方,第三方客户端中我们的主角也进入 移动状态。
在移动的过程中,如果我们改变了摇杆方向,那么就把这个改变继续同步到服务器,服务器继续广播给第三方。
最后,我们松开摇杆,我们的主角切换到 站立状态,同样的,我们向服务器发送 站立包,服务器进入站立状态并广播给第三方,第三方客户端中我们的主角也进入 站立状态。
理想的时序图如下:
![](https://i-blog.csdnimg.cn/blog_migrate/901c43999fb0c714b1f8243f9563fd14.png)
第三方的动画抖动
上面的流程看上去没问题