帧同步迁移到状态同步:先分清权威状态与展示状态
帧同步迁移到状态同步:先分清权威状态与展示状态
迁移前先区分必须一致的模拟状态和可以晚到的展示状态。帧同步传输入并保持固定步长;状态同步发送权威快照,客户端按序号处理乱序。
协议字段先固定语义
协议里固定 tick、玩家编号、输入序列号和确认位的语义。预测、回滚和插值各自保留独立缓存,不能把网络收包直接写入模拟状态。
迁移期间,服务器权威快照与客户端展示状态要使用不同存储。网络消息先按 tick 和序号进入接收缓冲,经确认后才更新模拟;插值结果只影响显示,不能反写权威或预测历史。
切协议时守住三个状态
- 服务器快照带 tick 与版本,客户端只接受比当前确认点更新且协议兼容的状态。
- 本地预测按输入序列保存,收到确认后丢弃已提交历史,乱序和重复包不重复执行。
- 展示层从两个已确认状态插值;回滚只重算模拟,不能把平滑后的坐标当权威值。
并行对比时记录同一局输入、权威快照与客户端收敛结果。画面短暂差异可以单独评估,但技能冷却、位置等关键状态必须能解释。
验证清单
用可控网络模拟丢包、乱序、重复包和短暂断连;核对旧快照不会覆盖新状态,回滚后关键实体的位置和技能冷却能重新收敛。
- 发布时固定协议字段、tick 语义、缓存长度与旧协议开关。
- 对重复包、旧快照和短暂断线确认不会回写更早状态或重复释放技能。
- 新增同步字段后,同时补服务器快照、客户端预测和展示插值的验收记录。
并行期的验证重点
用同一局输入并行比较两条路径,覆盖丢包、乱序、重复包与断线。旧快照不能覆盖新状态,回滚后关键实体要能收敛。
