如图所示,此方法移动校验需要客服端同步服务端数据,服务端需每一timer(‘timer’需后续商讨)去检查游戏玩家位置,每几个(‘几个’后续商讨)timer去推送玩家数据给在场的所有玩家,对于客服端发送的包,需得到服务端时间间隔、位置判断、技能判断等进行校验进而处理。
定时校验:如下图所示,每一局游戏的所有人在每一个timer,通过玩家当前Pos,Dir,Speed对玩家下一坐标点进行计算,得到新的NewPos;对于NewPos,1,判断NewPos合法性,进行位置修正;2,该点是否为可用点,不可用返回旧玩家状态;3,为可用点,判断是否为边界点,是改变新的玩家state,通过dir取出新的speed;记录新的玩家状态信息。
定时推送:如下图所示,通过定义的每隔几个timer(每一个稍大间隔timer)进行每个玩家信息同步所有此场游戏所有人。
客服端包校验:如下图所示,对于客服端发送的协议包,首先判断客服端发送包与上一次包时间间隔是否在合理时间差里,不是,则丢掉,是进行客服端发送dir与state进行校检,并改变玩家新的dir与state,并立即同步给该场游戏所有玩家,校验失败则skip掉。