关于地图元素的状态同步
在网络游戏中客户端如何渲染出当前之间时间的场景呢?需要两个东西,第一个是地图生成时的时间戳,被称为地图种子。客户端得到地图种子,就可以根据当前时间推算出对于无状态的当前地图场景。无状态的地图场景从生成开始之后的所有场景变化都是可以通过人为计算出来的,所以被称为无状态的地图场景。既然有无状态,意味着场景中存在有状态的场景元素,他们需要被玩家人为触发生成,和地图种子没有关系。这种地图元素被称为有状态的 地图场景。服务端需要维护这些有状态的场景元素的状态,供玩家断线重连后场景的恢复。
同步分为无状态场景元素同步和有状态场景元素同步。
对于无状态场景元素同步,客户端各自按照场景渲染逻辑去变化场景即可,不需要服务端进行状态的同步;
对于有状态场景元素同步,对于画面同步来说,由于所有客户端知道游戏内所有玩家的位置,所以对于有状态场景元素的画面同步不需要服务端做什么事情;但是由于断线重连后,画面的恢复需要这些有状态场景的信息,所以需要客户端在这些场景元素在发生变化后通知服务端。为了避免重复修改,每个客户端存在一个主动方,客户端是需要通知由主动方触发的有状态场景元素的信息变化通知。
This post is licensed under CC BY 4.0 by the author.