多人手游

需求

  • 5V5 手游 有 10 个客户端。每个客户端会控制自己在游戏里的角色。
  • 所有 10 个角色都在同一个虚拟竞技场内交互,因此每个人都能看到其余 9 个角色实时的情况,比如位置、血量、技能等等。
  • 当手机信号不好时会发生掉线的情况。如果掉了线,在别的玩家眼里,你一直站着不动,在你自己的眼里,所有其他人都站着不动。一旦你手机连上了线,系统马上会恢复到其他 9 个人当前的情况,你还可以继续参与这场还未结束的比赛。

方案

  • 使用事件溯源(Event Sourcing)架构,将每个客户端的所有操作作为事件在服务器端统一排序并发送到每个客户端。
  • 通过初始状态和事件,任何时候都可以在客户端重建角色的状态。