帧同步
2020-09-18
2020-09-18
流程
- 客户端上传操作到服务器
- 服务器将操作发给所有客户端
- 客户端本地计算结果
服务器端
客户端的逻辑渲染分离
MVC: 数据,逻辑,显示的分离
逻辑帧 | 渲染帧 |
---|---|
10-20帧, 由网络帧来驱动, 必须固定间隔 | 30-60帧, 对逻辑帧做平滑处理, 性能高就快 |
逻辑帧
若Update
的某一次间隔跨越了多个逻辑帧, 需要加速逻辑处理
渲染更新机制
Lerp: TODO
SmoothDamp: TODO
传输要求
- 同步随机种子(在使用随机数的时候保证随机数的一致性)
- 不能传浮点类型,保证计算结果一致:
float
,Vector3
- 一般采用UDP进行传输,但会有丢包/乱序的可能性,需要用冗余的方式解决:每次发3帧的数据来对抗丢包
特殊功能
断线重连
服务器将从游戏开始到当前的所有操作发送给客户端, 客户端一次性更新所有逻辑帧
加速
战斗回放
以下待更新