当前位置:
首页 >
游戏帧同步
发布时间:2024/3/24
53
豆豆
主要记录一下之前做帧同步游戏的一些心得和预想
一部分借鉴了这里的处理 帧同步联机战斗(预测,快照,回滚)
1.浮点数处理
浮点数转定点数
由于传统浮点数的计算在不同机型上会有不同的计算结果,并且随着时间的积累误差会越来越大。因此需要一个方案去解决这些问题。
2)定点数方案:小数点固定的数,例如一个16位的定点数,前八位处理整形数据,后八位处理小数。
其它的定点数相关
2.协议相关
3.逻辑与渲染分离
1) 数据推算单独走一套逻辑,显示走一套逻辑
2) 客户端帧指令带入时间戳,根据延迟统计计算帧指令
4.数据校验
1) 多客户端校验(3个及以上):多数对比原则,超过半数的数据一致时数据比较可靠
2) 少数客户端校验(2个及一下):结合辅助布局在服务器的终端进行辅助校验,相对成本会高一点
3) 纯服务端校验:服务端也跑一遍客户端的逻辑进行校验
5.帧指令
除去协议好,帧指令可包括帧号,子指令数组,客户端时间戳,服务器时间戳(根据延时数据做出对应的预测方案)
6.内存快照
为了应对断线重连以及中途玩家加入引入的数据。可固定时间重置一次内存状态信息(位置,动作,技能,碰撞等信息)
7.快速演算
1)加上内存快照快速演算
2) 从头开始加速演算
3) 静默演算(后台默默计算数据,前台静默)
8.过程数据校验
在过程中提交结果关键数据,用于校验最终结果是否合法
9.数据预测和回滚
2) 位置预测,预测错误则要根据最近的内存快照快速演算追上
3) 对于网络好的玩家减少预测,网络差的玩家增加预测
4) 动作预测? 特殊形况下的动作预测
5) 客户端命中服务器未命中的命中逻辑优化(服务器慢于客户端造成的信息差处理,射击类游戏必做)
10.帧同步指令帧合成图:
总结
- 上一篇: LC1584. 连接所有点的最小费用
- 下一篇: ixchariot