天天看点

网络游戏中的帧同步和状态同步

区别 帧同步 状态同步
流程

- 同步随机种子,服务器广播随机种子给客户端

- 客户端上传操作指令,服务端广播指令 (如果没有操作, 也要广播空指令来驱动游戏帧前进)

- 每个客户端各自计算操作指令

- 客户端上传指令。

- 服务端计算指令,计算完把计算后的状态(比如剩余血量)发送给客户端。

- 客户端同步显示。

流量
回放 服务端发送所有之前客户端上传的指令,客户端进行计算显示 想对难一些
安全性 计算在客户端,客户端较容易被破解,安全性相对低,必要时可在防外挂期间开启服务端计算验证 高,但是有的计算比如3D场景的碰撞计算很难在服务端实现,一般还是交给客户端
服务器压力
断线重连 麻烦,有可能需要重新计算断线时长的所有指令。 发送完整的一次状态即可
适用场景 单位(小兵、地图道具等)较多,玩家较少(不需要一个客户端计算太多玩家操作) 单位少,玩家多的

思考:

  • 是否能通过如下方案减少服务端压力,并尽量保证安全性:对于场景有玩家ABCD,A的操作计算交给交给A和B同时计算,如果两个玩家计算不一致,这两个玩家记录一个 "外挂"系数+1,并下次计算更换这对玩家,如A和C为一组。当某玩家外挂系数达到一定数值判为作弊?

继续阅读