一、帧同步的框架原理思维导图
二、保证逻辑帧与渲染帧分离
1.逻辑帧定时向服务器发送帧数据,服务器汇总定时下发,渲染帧根据逻辑位置跟进渲染,当有延迟或者断线时,模拟之前的操作,等待新数据或重连
2.客户端执行完每个逻辑帧后,根据游戏的状态计算出一个Hash值,用其标定一个具体的游戏状态。不同客户端通过对比这个值,即可判断客户端之间是否保持同步
三、逻辑帧如何保证同步
1.客户端需要保证一致性:
原则:所有的逻辑帧不一致会导致不同步
输入一致性:
保证玩家操作顺序唯一,确定性的碰撞检测和寻路结果等
计算一致性:
逻辑帧的计算遵循以下方法:
(1).服务器针对每个单局游戏开局时间生成随机数种子,逻辑帧计算均为伪随机
(2).浮点数采用多个定点数保存和运算,确保浮点数计算结果一致
(3).每个网络包都包含自增序号,具体算法可根据项目自行定义
(4).严格控制静态变量(全局变量)的使用
(5).禁止使用不稳定的排序算法
(6).禁止使用顺序不确定的数据结构
(7).尽量不使用非开源的第三方库(无法确定第三方库中是否有上述的结果不一致算法)