多人在线游戏状态的增量编码
来源:dev.to — 2026-08-31
📋 概述
作者介绍浏览器策略游戏 Old Light 如何用增量编码在客户端与服务器间同步完整星系状态:连接时先发一份快照,之后每次变更都以 world.delta 补丁形式下发并合入客户端已有状态。与常见的"字节级 diff"不同,这里按"事实"(玩家、星区、交易板、谈判)下发,谈判类消息只推送给当事双方,避免为每个客户端维护最后已知状态的高昂成本。
🔑 核心要点
- Old Light 用快照+增量补丁方式同步,客户端持有完整星系状态副本
- 不采用字节 diff,因为对每个客户端维护"最后已知状态"的成本过高
- 增量按事实建模:added/removed/updated 玩家与星区,脏区块标记重拉取
- 谈判类变更只推送给当事双方,其他人不需要收到
💡 金句
说"增量编码",人们通常指的是字节差异——但这里下发的其实是关于玩家和星区的事实。
👍 0
👎 0
← 返回 dev.to 首页