在参照ECS实现了DAS之后,对DAS的反思和ECS的认知是同步进行的。
DAS是发源于卡牌类游戏开发,并经历多个项目的实际开发经验之后而逐渐积攒起来的一种模式,虽然与ECS有一些相似,但在处理一些常见问题时,终究还是存在缺陷。
关于同步
DAS的帧同步与状态同步
DAS的帧同步或状态同步,与普通游戏开发模式别无二致,究其原因,还是因为数据分离的不彻底,导致数据与状态信息终究还是散落在了不同的地方。
因而在实现同步时,还是需要解决数据的问题,如:数据输入、数据输出、数据拉扯、数据平滑等等。
ECS的帧同步与状态同步
ECS本身是数据逻辑分离的结构,所以在 同步 这个问题本身,ECS的同步便是纯数据的同步。
状态同步
状态同步核心是对于数据的同步,所以每次数据的下发,实现对现有数据的替换,即完成了简单的状态同步。
帧同步
帧同步下,客户端统一帧号运行,所以在确保同帧具有相同的输入,便可完成基本的帧同步。
但是帧同步往往需要解决延迟、拉扯等问题,所以需要引入 预演 的机制,而当真正数据下发后,又会涉及到 回滚 操作。所以这时帧同步便需要进行多个模块:
- 帧号记录
- 逻辑预演
- 数据快照
帧号记录需要记录每一帧的id,以作后续记录使用;逻辑预演则在当前数据情况下进行继续运算,实现相关的平滑处理;数据快照则记录当前数据的所有快照,以备 回滚 操作时使用。
由于帧同步机制问题,所以利用 数据快照 进行数据恢复,便可以达到 回滚 的效果。
网友评论