简述
实现帧同步有两种可行的方式。一种是帧锁定算法,服务器只有收到所有客户端所传过来的控制信息后,才会统一广播给所有客户。另外一种是乐观帧锁定,服务器将不依赖每个玩家是否具体操作,每隔相应间隔,会将控制信息广播给所有用户。
帧同步算法
帧锁定算法
优点:所有客户端任意时刻逻辑都是统一的
缺点:缺点是一个人卡机,所有人等待
乐观帧锁定
优点:不依赖具体每个玩家是否有操作更新。
缺点:客户端的手感受网速影响
我使用的是乐观帧锁定
乐观帧锁定
具体实现
1.服务端每一秒,下发10到15帧的逻辑帧。不同项目也可以按照自己实际情况调整
2.客户端对于每一个逻辑帧,进行补充3个渲染帧
3.如果客户端一下收到很多连续的update,那就跨进播放
定点数
在不同设备机型上会出现浮点数处理方式不同的问题。
断线重连
1.客户端每一秒向服务端同步一数据
2.服务器检测到用户断线重连,下发用户同步的数据
3.客户端接受到数据后进行追帧
预测和回滚还有帧缓存、和解
1.当检测到没有新帧传递过来,客户端会进行一个预测。
2.检测当前预测是否时