《Cocos 游戏联机实战》目录

《Cocos 游戏联机实战》全书导航页:说明本卷只写客户端侧的定位与读者画像、前置知识、三条阅读路径与六周排期,交代《方块冲刺》在卷四里改成双人竞速后的工程设定、Transport 抽象与权威模型,划清「客户端实现」与「服务端接口约定」的边界,并按四个部分列出 10 章 29 节的完整章节索引与常见问题速查表,方便按需定位与跳读。

目录

欢迎来到《Cocos 游戏联机实战》。前三卷把单机做透了:卷一从零手写 mini2d 看懂引擎怎么工作,卷二用 Cocos Creator 3.8 把《方块冲刺》做成能发布到 H5 / 微信小游戏 / 原生的产品,卷三回过头把引擎本身当研究对象。这一卷给同一个游戏加联机——把它改成双人竞速。

本卷只写客户端侧。 这句话不是省略,而是本卷的定位:站内 game/server/ 已有 315 篇服务端文章,书稿《游戏服务端编程实践》另有 43 篇,服务端实现(网关、AOI 服务、匹配服务、战斗裁决)那里已经讲透,本卷一律不重复。凡涉及服务端,只给消息格式与接口约定——「客户端发什么、服务端回什么」,至于服务端怎么实现,交接给那两处。

那客户端侧还剩什么?剩下的是联机里最难、也最考验工程判断的部分:确定性模拟、快照 diff、插值与外推、预测与回滚、时钟同步、协议编解码、弱网降级、重连状态机、客户端权威边界。这些全在客户端,也全都能写成可跑的代码。

本页给出全书的阅读路线。你可以从第 1 章 1.1 开始顺序通读,也可以先看下面的三条路径,挑一条最合你胃口的走法。

这一卷写给谁

读者现状读完能拿到什么
读完前三卷、想把游戏做成联机的开发者单机很熟,联机只有模糊概念一套客户端侧的完整联机能力:同步、预测、和解、重连
有服务端背景、转做客户端联机懂协议与后端,不懂客户端为什么要预测客户端为什么要回滚重演,以及怎么把预测写成可测的纯逻辑
被弱网问题折磨过的开发者知道线上卡,但不知道卡在哪一环弱网模拟、诊断与降级的完整方法
想评估联机可行性的技术负责人不确定联机要多少工作量、多少带宽带宽预算、同步方式的取舍与客户端改造清单

前置知识:读完卷一与卷二,或已具备等价基础(看得懂 TypeScript 组件脚本、走过一次完整发布流程)。卷三不是必需——本卷只在需要时才引用卷三的内部机制结论。建议本机安装 Cocos Creator 3.8——本卷有少量工程配置与房间配置片段,命令行无法复现;但占本卷主体的 L1 纯逻辑与 L2 组件脚本都能独立验证。

本卷与前三卷的分工

四卷本里,卷四是最独立的一卷:前三卷都在回答「引擎怎么用」,卷四回答「两个客户端怎么对上」。四卷各回答一个问题:

卷回答的问题主要战场交付物
卷一《入门》引擎里的每件事怎么工作?手写 mini2d,从零实现帧循环、渲染、物理、存档一个能跑、能测、能截图的 2D 运行时骨架
卷二《实战》怎么用引擎做出并发布一个产品?Cocos Creator 编辑器与工程体系一个发布到 H5 / 微信 / 原生的《方块冲刺》
卷三《高级编程》引擎为什么这么设计、问题往哪里挖?引擎内部机制、源码与定制一套能定位瓶颈、能改引擎、能评估升级的分析能力
卷四《联机实战》两个客户端怎么对齐同一份世界?客户端侧同步、预测与容错一个双人竞速的《方块冲刺》与一套可测的联机框架

所以卷四不重做游戏,也不重做引擎。 它把卷二那个产品当素材,加一层网络:帧循环沿用卷一 4.2 的固定步长累积器,工程设定沿用卷二那套,区别只在于——前三卷的世界里只有一个玩家,卷四的世界里有两个,而这两个人隔着网络、时钟不同步、还会丢包。

如果你只读过卷一,卷四照样能读:第 1 章的网络分层与第 2 章的确定性模拟都不依赖卷二的具体工程细节。但第 9–10 章的表现与综合项目会频繁引用卷二的产品形态,建议至少先扫一遍卷二的目录页 。

动手前的环境准备

本卷的验证分三层(详见下面的「可验证口径」),环境要求按层不同:

要做的事需要装什么说明
真跑 L1 纯逻辑Node 26 + vitest确定性模拟、快照 diff、预测和解、编解码都能独立单测
类型检查 L2 组件脚本Node 26 + @cocos/creator-types@3.8.8 + TypeScript不需要编辑器,tsc --noEmit 即可
打开 L3 工程配置Cocos Creator 3.8.8 编辑器房间配置、网络相关工程设置必须在编辑器里查看
对接服务端一个可连的 WebSocket 端点本卷只给约定;没有真实服务端时用假传输层单测即可

没有编辑器、没有服务端也能读全部内容。 本卷主体是 L1:网络逻辑与引擎无关,用假传输层 + 假时钟就能在 Node 里完整验证。这也是本卷刻意设计的——联机逻辑必须先能脱离网络单独测试,才谈得上可靠。

三条阅读路径

路径 A:完整通读(约 6 周)

最完整的一条。从网络分层讲到双人竞速综合项目,每章都在回答「客户端该做什么」。

第 1–4 章(基础、帧同步、状态同步、预测和解)→ 第 5–6 章(重连、匹配与房间)
→ 第 7–8 章(调试压测、反作弊与安全)→ 第 9–10 章(表现与综合项目)

适合要把联机一次做对的读者。第 4 章(客户端预测与和解)是全卷的枢纽,前三章讲清「世界怎么对齐」,第 4 章讲「对齐之前客户端先怎么动」。

路径 B:按主题跳读(约 3 周)

已经有明确目标的话,按下面的分组跳读:

同步方向:1 → 2 → 3 → 4
容错方向:5 → 6
工程方向:7 → 8
表现方向:9 → 10

每组内部是递进的,组之间可以独立看。同步方向建议从第 1 章读起——不先理解权威边界与协议选型,后面看预测与和解容易云里雾里。

路径 C:按问题查(随时)

不打算通读,只在遇到具体问题时翻对应章节。下节「常见问题速查」就是为这条路准备的。

贯穿项目:《方块冲刺》(联机形态)

卷四沿用卷二、卷三那套工程设定,不得前后矛盾:工程名 block-dash、包名 com.example.blockdash、设计分辨率 960 × 540(fitHeight + SHOW_ALL)、目标平台 H5 / 微信小游戏 / 原生、分包 bundle-levels、存档键 blockdash.save.v1。

卷四在这套设定上加联机,新增的固定项为:

项卷四里的取值
联机形态双人竞速——同一条跑道上比谁先到终点,可互相轻微干扰
引擎版本Cocos Creator 3.8.8(全书锁定)
客户端逻辑层新增 assets/scripts/net/:protocol/(消息定义与编解码)、sync/(快照与插值)、predict/(预测与和解)、session/(连接与重连)
传输层WebSocket(H5 / 微信小游戏 / 原生均支持);抽象成 Transport 接口,便于用假实现单测
权威模型服务端权威 + 客户端预测——客户端模拟输入并预测,收到服务端快照后和解
同步方式状态同步(快照 + 增量);第 2 章的帧同步作为对照方案
固定步长沿用卷一 4.2 的固定步长累积器(60 Hz 逻辑帧)
确定性定点数(整数运算)保证跨端一致;浮点只用于表现层
服务端约定只给消息格式与接口约定;实现不写,对接既有服务端书稿

全书共用这一套设定,不得前后矛盾。 尤其要守住两个口径:传输层必须抽象成 Transport 接口(否则代码没法单测),权威在服务端(客户端的预测只是「先动一下」,不是「说了算」)。

可验证口径(本卷的核心设计)

联机代码最容易写成一堆「看起来对但跑不起来」的时序图。本卷的应对是:把能脱离网络的逻辑全部抽成 L1,用假传输层 + 假时钟真跑单测。

层卷四里的内容能否验证怎么验证
L1纯逻辑(确定性模拟、定点数、快照 diff、插值外推、预测与回滚、编解码、时钟同步)能真跑Node + vitest 单测,注入假传输层与假时钟
L2Cocos 组件脚本(import { X } from 'cc',把 L1 逻辑接进节点与帧循环)能真做类型检查tsc --noEmit 对 @cocos/creator-types@3.8.8 检查
L3工程与房间配置(settings/*.json、房间参数)不能命令行复现结构校验;正文每处都显式标注「需 Cocos Creator 3.8 编辑器打开」
接口约定服务端消息格式与端点约定可对接用字段表与 JSON 描述方向与类型;不贴服务端实现代码

这意味着什么? 本卷的每一段网络逻辑,都至少有一层可验证性:能写成纯逻辑的就写成纯逻辑并配单测,能写成组件脚本的就过类型检查,只有工程配置与房间配置才落到「需编辑器」这一档。凡是「服务端如何裁决」的话题,本卷只写约定,明确交接给站内服务端专题与书稿。

版本与技术口径

项版本说明
Cocos Creator3.8.8全书锁定,对应 @cocos/creator-types@3.8.8
传输协议WebSocketH5 / 微信小游戏 / 原生均支持;抽象为 Transport
Node.js26.5.0只做 TypeScript 类型剥离,因此脚本限可擦除语法
TypeScript7.0.2组件脚本与逻辑层使用;禁 enum / namespace / 构造函数参数属性
测试vitestL1 逻辑单测;假传输层注入延迟、丢包与乱序

关于「可擦除语法」:Cocos 的脚本编译链只剥离类型,所以 enum、namespace、构造函数参数属性这类「需要生成运行时代码」的写法不要用。本书一律用 const 对象 + as const 代替 enum——这一点在联机代码里尤其重要,因为协议常量与消息类型定义最容易顺手写成 enum。

全书结构

全书 10 章分四个部分,前 9 章每章 3 节、第 10 章 2 节,共 29 节。此外有 1 篇目录(本页)。序与前言见卷一。

第一部分:同步基础(第 1–4 章)

先建立正确的联机心智模型,再依次看两条同步路线与客户端预测。

节标题一句话
1.1网络分层、拓扑与权威边界谁是权威、客户端能决定什么
1.2协议选型与序列化二进制还是 JSON,怎么编解码
1.3时钟、延迟与抖动两端时钟怎么对齐,RTT 怎么测
2.1确定性模拟与定点数让两端算出同一结果
2.2输入广播与帧对齐帧同步的输入怎么收集与推进
2.3回滚与追帧迟到的输入怎么补,怎么追帧
3.1快照与增量同步状态同步怎么算差异、怎么传
3.2兴趣管理与 AOI只同步你看得见的东西
3.3带宽预算与压缩每人每秒多少 KB,怎么压
4.1本地预测客户端为什么能先动
4.2服务器和解与重演收到快照后怎么比对与回滚
4.3插值与外推远端玩家怎么动得平滑

第二部分:容错与房间(第 5–6 章)

联机不是理想网络。这一部分处理断线、超时与匹配房间。

节标题一句话
5.1重连流程与状态恢复掉线之后怎么回到同一局
5.2超时、重传与幂等消息丢了怎么办,重复了怎么办
5.3弱网降级策略网络差的时候怎么还能玩
6.1匹配流程与客户端角色匹配里客户端要做什么
6.2房间生命周期房间从创建到销毁的客户端状态机
6.3观战与回放旁观与录像的客户端实现

第三部分:调试与安全(第 7–8 章)

把联机问题变成可复现、可定位、可防御的工程问题。

节标题一句话
7.1弱网模拟与网络诊断在本地造出真实弱网
7.2机器人压测用机器人客户端压自己
7.3线上问题定位线上卡顿与不同步怎么查
8.1客户端权威边界客户端能信什么、不能信什么
8.2关键数据校验校验服务端下发的状态
8.3通信加密与防篡改客户端侧的配合与边界

第四部分:表现与收官(第 9–10 章)

把同步做进画面,再合成一个完整的双人竞速。

节标题一句话
9.1同步表现与插值动画同步数据怎么驱动动画与特效
9.2网络状态 UI 与提示延迟、掉线、重连怎么告知玩家
9.3延迟补偿与体验权衡公平与手感的取舍
10.1把《方块冲刺》做成双人竞速综合项目:把前九章拼起来
10.2与既有服务端书稿的对接约定客户端与服务端的接口交接

六周学习计划

按路径 A 走,一个参考排期:

周次章节产出
第 1 周第 1 章建立权威边界与协议、时钟的正确心智模型
第 2 周第 2–3 章理解帧同步与状态同步两条路线及各自代价
第 3 周第 4 章写出可测的客户端预测与和解
第 4 周第 5–6 章重连、超时与房间状态机落地
第 5 周第 7–8 章弱网模拟、压测与客户端安全边界
第 6 周第 9–10 章联机表现与双人竞速综合项目

常见问题速查

你遇到的问题去看
不知道该把哪些逻辑放服务端1.1 网络分层、拓扑与权威边界
协议选型拿不定主意1.2 协议选型与序列化
RTT 测不准、时钟对不上1.3 时钟、延迟与抖动
两端算出不同结果2.1 确定性模拟与定点数
想改用帧同步2.2 输入广播与帧对齐
状态同步带宽太高3.3 带宽预算与压缩
自己的角色操作有延迟感4.1 本地预测
预测之后位置对不上4.2 服务器和解与重演
远端玩家一卡一卡4.3 插值与外推
掉线之后回不到局内5.1 重连流程与状态恢复
消息重复处理出问题5.2 超时、重传与幂等
弱网下体验崩了5.3 弱网降级策略
本地复现不出线上卡顿7.1 弱网模拟与网络诊断
想知道客户端能不能被改数据8.1 客户端权威边界
同步数据怎么驱动动画9.1 同步表现与插值动画
怎么把延迟告诉玩家9.2 网络状态 UI 与提示
要做完整联机但不知从哪拼10.1 把《方块冲刺》做成双人竞速

学完之后你能做什么

走完全书,你应该具备这几项能力——它们也是本卷隐含的验收标准:

  • 说得清权威边界:拿到一个联机需求,能立刻判断哪些逻辑必须在服务端、哪些可以放客户端。
  • 写得出可测的同步逻辑:确定性模拟、快照 diff、预测与和解都能脱离网络单测,而不是只能联调时碰运气。
  • 处理得了弱网:知道丢包、延迟、抖动分别会破坏什么,以及各自该用什么策略兜住。
  • 做得出联机表现:能把同步数据变成平滑的插值动画与清晰的网络状态提示,而不是把技术指标直接甩给玩家。
  • 守得住安全底线:清楚客户端永远不可信,知道客户端侧能做什么、以及为什么真正的裁决必须在服务端。

这些能力无法只靠读获得,本卷的每一节都尽量给出可跑的 L1 代码与单测,方便你边读边试。

相关阅读


准备好了就翻开第 1 章 1.1 网络分层、拓扑与权威边界 开始。若还没读卷二,建议先看《Cocos 游戏开发实战》目录 。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「cocos」更多文章

  1. 《Cocos 游戏联机实战》9.3 延迟补偿与体验权衡
  2. 《Cocos 游戏联机实战》9.2 网络状态 UI 与提示
  3. 《Cocos 游戏联机实战》9.1 同步表现与插值动画