第八章 · 网络同步与大规模世界 本章要回答的三个问题:多个玩家同时在一个世界里行动,谁的状态是权威、其余机器怎么追?带宽是硬预算,引擎按什么规则决定"把什么同步给谁、丢给谁"?地图大到内存装不下,World Partition 凭什么让玩家感觉不到边界? 为什么会有这一章 单机思维的代码进入多人环境,问题清单是固定的一批:客户端开门只有自己看得见、别人的角色瞬移、两台机器打同一只怪血量对不上。根源都是同一个概念缺失——权威。多人游戏里每个状态必须有一个权威裁判,其余机器只做表现与请求;裁判是谁、判什么、怎么把结果广播出去,就是 Replication 系统的全部工作。而带宽本身是刚性预算:每秒能发的字节有限,同步什么、不同步什么、什么时候同步,每一项都要过秤。
本章要回答的三个问题:多个玩家同时在一个世界里行动,谁的状态是权威、其余机器怎么追?带宽是硬预算,引擎按什么规则决定"把什么同步给谁、丢给谁"?地图大到内存装不下,World Partition 凭什么让玩家感觉不到边界?
单机思维的代码进入多人环境,问题清单是固定的一批:客户端开门只有自己看得见、别人的角色瞬移、两台机器打同一只怪血量对不上。根源都是同一个概念缺失——权威。多人游戏里每个状态必须有一个权威裁判,其余机器只做表现与请求;裁判是谁、判什么、怎么把结果广播出去,就是 Replication 系统的全部工作。而带宽本身是刚性预算:每秒能发的字节有限,同步什么、不同步什么、什么时候同步,每一项都要过秤。
世界规模是同一预算问题的空间版本:地图越大,内存与加载时间的账越付不起。World Partition 的思路与流送加载一脉相承——把世界切块,按玩家位置动态装载,再用分层与高层细节层级控制远景密度。它与网络同步共享一个母题:用"按需"替代"全量",让玩家感知不到系统的边界。
本章放在玩法章之后:第七章的物理结算、技能结算、AI 决策,到这里都要回答"谁说了算"——技能的客户端预测、破坏的服务器结算、AI 在专用服务器上的运行,全是本章概念的应用。学完本章,单机代码在脑中会自动多出一个"多人拷问"环节。
读完本章你应当能:分清权威、自治、模拟三种角色身份,用属性同步与三类 RPC 实现一扇多人共见的门,理解相关性剔除与优先级如何省带宽;用在线子系统实现建房间、搜房间、加入会话的完整流程,理解监听服务器与专用服务器的取舍;把一张大地图改造成 World Partition 结构,配置数据层与高层细节层级,用流送源驱动动态装载。合上书的标准:任何"多人下表现不对"的故障,你能先问"权威在哪、同步了没有、预测了没有"再动手。
| 节 | 回答的问题 | 关键产出 |
|---|---|---|
| 8.1 Replication 同步系统 | 状态谁说了算、怎么广播 | 属性同步与 RPC 的正确用法 |
| 8.2 在线子系统与高级网络 | 会话怎么建、服务器怎么选 | 会话流程与服务器形态 |
| 8.3 World Partition 与关卡流送 | 大世界怎么装下、怎么切块 | 大世界组织与流送配置 |
8.1 是基础语法,8.2 是会话与架构层,8.3 是空间层。三节共同依赖一个心智模型:网络与流送都是"预算约束下的按需分发"。
第七章的结算思想(谁算的才算数)是本章的观念前置;8.1 的代码案例需要 3.2 的框架类与 3.3 的声明语法;8.3 的资产操作需要第四章的引用概念。
本章出口通向交付:第九章的打包要区分客户端与专用服务器两种产物,性能听证要同时看服务器与客户端两端帧预算。学完本章,"我的代码多人下对不对"应当成为写任何玩法代码时的默认自检项。
第一条,从第一天就开双端测试:单机写完再联调,等于把同步债务攒到最难还的时候——哪怕是单机项目,用"监听服务器加两个窗口"的最小配置自测,成本极低。第二条,同步字段清单化:项目维护一份"哪些状态在同步、谁权威、走什么通道"的清单表,新成员接手、联调排错、带宽审计都从这张表开始。本章的知识点最终都会沉淀成这张表上的一行。