第 5 章是「实时同步」体系的成熟标志。到这里,传输的不再是整齐的 JSON 指令,而是连续不断、大小不定的二进制绘图帧;房间里也不再只有「玩家」一种角色,而是画者、猜者、旁观者三层并存。更麻烦的是,同一条笔画可能被多个客户端以不同顺序收到,如何保证所有人最终看到同一幅画,直接指向了 CRDT 这类协同一致性模型。这些能力在游戏之外同样适用于在线教育、白板办公与多人美术工具。
本章定位
- 难度梯度:进阶。首个涉及二进制协议与协同一致性的章节。
- 前置章节:第 1 章 聊天室 提供通道,第 4 章 快速问答抢答 提供多人房间与实时裁定经验。
- 能力跃迁:从「文本消息同步」跃迁到「连续数据流同步」,并第一次面对「多端最终一致」这一分布式命题。
- 阅读时长:单篇 PRD 约 500 行,建议重点读增量广播的压缩策略与 CRDT 合并层两节。
核心验证目标
- 绘图流实时同步:笔迹轨迹的增量广播与二进制压缩,避免每帧全量传输。
- 快照加差分策略:新加入或重连的客户端先拿快照,再消费后续增量,保证不丢笔画。
- 多角色状态管理:区分画者、猜者与观战者的可见性,画者切换需原子完成。
- CRDT 协同一致性:操作合并与冲突解决,让乱序到达的绘制操作收敛到同一结果。
- 带宽节流与差分同步:分片、限频与压缩算法组合,防止过量数据堵塞通道。
- 内容审核:图形与文字双通道检测,异步审核加动态禁词表,兼顾实时性与合规。
- 回放与审计:按时间戳重建绘制过程,支持快照合成与违规行为追溯。
技术栈建议
- 语言:Go 为主,配合 WebSocket;对延迟极敏感的实时绘制可考虑引入 WebRTC 作为可选项。
- 传输:WebSocket 二进制帧,这是全书第一次真正使用二进制通道。
- 存储:绘制操作日志与阶段快照分离存储,快照用于快速恢复、日志用于回放。
- 关键设计:WhiteboardEngine 负责解析与广播,CRDT Merge Layer 单独承担合并逻辑,两者解耦后第 26 章的合作解谜可以直接复用合并层。
本章文章
| 文章标题 | 核心内容 |
|---|---|
| 在线联机原型全集:第 5 章 你画我猜(Pictionary / 白板协作) | 完整 PRD:WhiteboardEngine、CRDT Merge Layer、AuditService、ReplayLogger 四模块设计,含二进制帧格式、节流参数与审核流程 |
本章只有一篇 PRD;CRDT 的通用理论在分布式系统专题中有更系统的讨论,本章聚焦其在绘图场景的落地。
与相邻章节的关系
- 上一章:第 4 章 快速问答抢答 处理时间仲裁,本章处理连续数据流,两者共同完成「回合制到实时流」的过渡。
- 下一章:第 6 章 Pong 对战 把实时流推向 60Hz 帧同步,开始引入客户端预测与服务器纠正。