游戏人物移动校验设想

1.需求分析

如图所示,此方法移动校验需要客服端同步服务端数据,服务端需每一timer(‘timer’需后续商讨)去检查游戏玩家位置,每几个(‘几个’后续商讨)timer去推送玩家数据给在场的所有玩家,对于客服端发送的包,需得到服务端时间间隔、位置判断、技能判断等进行校验进而处理。

2.服务端校验

  • 定时校验:每一个timer对玩家进行位置合法性进行判断,刷新出新的坐标点。
  • 定时推送:每几个timer推送每个玩家新坐标点给此游戏场景所有人。
  • 客服端包校验:客服端发送方向,状态变化的协议包,进行包时间间隔(后续商讨)校验, 当前位置校验,以及下一位置校验,返回人物新的状态

3.服务端校验设计

定时校验:如下图所示,每一局游戏的所有人在每一个timer,通过玩家当前Pos,Dir,Speed对玩家下一坐标点进行计算,得到新的NewPos;对于NewPos,1,判断NewPos合法性,进行位置修正;2,该点是否为可用点,不可用返回旧玩家状态;3,为可用点,判断是否为边界点,是改变新的玩家state,通过dir取出新的speed;记录新的玩家状态信息。

定时推送:如下图所示,通过定义的每隔几个timer(每一个稍大间隔timer)进行每个玩家信息同步所有此场游戏所有人。

客服端包校验:如下图所示,对于客服端发送的协议包,首先判断客服端发送包与上一次包时间间隔是否在合理时间差里,不是,则丢掉,是进行客服端发送dir与state进行校检,并改变玩家新的dir与state,并立即同步给该场游戏所有玩家,校验失败则skip掉。