1. 状态同步
服务端接受客户端的操作,计算逻辑,分发到各客户端,游戏世界玩家没有属性变化,基本不会进行同步消息下发。
优点
- 服务端可靠
- 断线重连简单,把当前状态下发
缺点
- 回放需要单独的服务器,保存所有的状态,按时间发
- 服务器压力大,计算多
- 开发复杂
2. 帧同步
服务端只做转发操作,转发各个客户端,大多数帧同步的逻辑是只放在每个客户端的,无论是否有操作,每一帧都会有服务器数据下发。
优点
- 回放简单,只要把操作都记录下来就好
- 开发简单
缺点
- 不安全,客户端能篡改
- 断线重连需要把之前所有操作加速一遍
- 注意随机数每次都一样
3. 状态帧同步
状态帧同步就是状态同步和帧同步的概念相结合。客户端向服务器上传操作,服务器跑逻辑,但是又在按照固定的每一帧下发所有玩家的状态(属性位置等)给每一个客户端实现同步。客户端做预测,服务端做校验,不正确就回滚数据。