posts

《移动游戏产品的架构·网络、资源与热更新》 · 全书目录与章节索引(45 篇)

卷二《网络、资源与热更新》45 篇索引:13 章覆盖移动网络现实、协议契约、重连、离线队列、同步责任、战报、流量账、资源依赖图、首包分包、热更政策、差量灰度、CDN 与交付流水线,附可运行的 mga-net-lab 实验工程与三篇附录,每章三节构成一条可复盘的判断链。

全书 45 篇 = 序、前言、目录 3 篇 + 13 章 39 节 + 附录 A/B/C 3 篇。
双案例:《潮汐消消》(弱联网)为主案例,《潮汐方舟》(强联网)为对照;两者共用一个发行中台。
正文代码块带 // file: / // tier: / // verify: 头,可在实验工程 mga-net-lab 中逐字节还原并运行测试。

这本卷回答什么

卷一刻画了移动客户端的静态结构与运行约束,卷二回答另一类问题:当客户端离开办公室的 Wi-Fi,进入真实的弱网、商店、CDN 与灰度环境,哪些能力决定它还能正常交付。

答案不是「加个重试」,而是一组可复核的契约与交付规则:协议怎么兼容、断线怎么恢复、离线操作怎么去重、同步责任怎么划、流量怎么记账、资源怎么分包、热更的边界在哪、失败怎么回滚。

阅读前提

全卷概览

章主题节数核心产物
1移动网络的现实3src/net/network-profile.ts, src/net/online-mode.ts, src/lab/net-lab.ts
2协议与消息契约3src/net/message-envelope.ts, src/net/request-tracker.ts, src/net/contract-check.ts
3连接生命周期与重连3src/net/connection-fsm.ts, src/net/backoff.ts, src/net/resync.ts
4离线队列与最终一致3src/net/offline-policy.ts, src/net/offline-queue.ts, src/net/conflict.ts
5强联网同步的客户端责任3src/net/sync-roles.ts, src/net/predict.ts, src/net/lag-comp.ts
6战斗与赛季数据的客户端模型3src/net/battle-report.ts, src/net/replay.ts, src/net/season.ts
7流量与连接成本3src/net/traffic-ledger.ts, src/net/heartbeat.ts, src/net/traffic-budget.ts
8资源依赖图与打包3src/resource/dependency-graph.ts, src/resource/pack-groups.ts, src/resource/pack-plan.ts
9首包、分包与按需下载3src/resource/first-package.ts, src/resource/on-demand.ts, src/lab/package-ledger.ts
10热更新的政策边界3src/hotfix/store-policy.ts, src/hotfix/boundary.ts, src/hotfix/failure-drill.ts
11差量更新与灰度3src/hotfix/delta.ts, src/hotfix/rollout.ts, src/hotfix/rollback.ts
12CDN 与下载体验3src/cdn/downloader.ts, src/cdn/cdn-plan.ts, src/cdn/fallback.ts
13卷二收口:网络与资源交付基线3src/lab/net-matrix.ts, src/delivery/pipeline.ts, src/lab/review-gate-net.ts

前置

第 1 章 移动网络的现实

节文章代码产物
1.11.1 弱网、切换与丢包:客户端要面对的三种网络src/net/network-profile.ts
1.21.2 弱联网与强联网:两种联网形态的责任边界src/net/online-mode.ts
1.31.3 mga-lab-net 的网络实验骨架与验收口径src/lab/net-lab.ts

第 2 章 协议与消息契约

节文章代码产物
2.12.1 消息信封、版本与兼容规则src/net/message-envelope.ts
2.22.2 请求响应、推送与超时语义src/net/request-tracker.ts
2.32.3 协议契约测试:把兼容规则写成断言src/net/contract-check.ts

第 3 章 连接生命周期与重连

节文章代码产物
3.13.1 连接状态机:从连接到就绪src/net/connection-fsm.ts
3.23.2 指数退避与抖动:重连节奏怎么定src/net/backoff.ts
3.33.3 重连后的状态校准src/net/resync.ts

第 4 章 离线队列与最终一致

节文章代码产物
4.14.1 离线可做与不可做:队列边界src/net/offline-policy.ts
4.24.2 操作队列的幂等与去重src/net/offline-queue.ts
4.34.3 冲突解决与可见性延迟src/net/conflict.ts

第 5 章 强联网同步的客户端责任

节文章代码产物
5.15.1 状态同步与帧同步:客户端各做什么src/net/sync-roles.ts
5.25.2 预测、回滚与显示平滑src/net/predict.ts
5.35.3 延迟补偿的客户端边界src/net/lag-comp.ts

第 6 章 战斗与赛季数据的客户端模型

节文章代码产物
6.16.1 战报结构:可复盘的最小数据集src/net/battle-report.ts
6.26.2 战报回放与一致性校验src/net/replay.ts
6.36.3 赛季结算与客户端展示口径src/net/season.ts

第 7 章 流量与连接成本

节文章代码产物
7.17.1 一次会话的流量构成src/net/traffic-ledger.ts
7.27.2 心跳、长连接与推送的取舍src/net/heartbeat.ts
7.37.3 流量预算与弱网适配src/net/traffic-budget.ts

第 8 章 资源依赖图与打包

节文章代码产物
8.18.1 资源依赖图与循环检测src/resource/dependency-graph.ts
8.28.2 资源分组:共享、场景与产品src/resource/pack-groups.ts
8.38.3 打包策略与冗余控制src/resource/pack-plan.ts

第 9 章 首包、分包与按需下载

节文章代码产物
9.19.1 首包边界:什么必须进包src/resource/first-package.ts
9.29.2 分包与按需下载的调度src/resource/on-demand.ts
9.39.3 双案例的首包账:120MB 与 350MBsrc/lab/package-ledger.ts

第 10 章 热更新的政策边界

节文章代码产物
10.110.1 商店允许更新什么src/hotfix/store-policy.ts
10.210.2 热更的内容边界与红线src/hotfix/boundary.ts
10.310.3 热更失败与回滚兜底src/hotfix/failure-drill.ts

第 11 章 差量更新与灰度

节文章代码产物
11.111.1 差量算法与补丁格式src/hotfix/delta.ts
11.211.2 灰度发布:分组、比例与观测src/hotfix/rollout.ts
11.311.3 回滚与版本收敛src/hotfix/rollback.ts

第 12 章 CDN 与下载体验

节文章代码产物
12.112.1 下载器设计:分片、并发与断点续传src/cdn/downloader.ts
12.212.2 CDN 选型与回源策略src/cdn/cdn-plan.ts
12.312.3 下载失败的降级与重试src/cdn/fallback.ts

第 13 章 卷二收口:网络与资源交付基线

节文章代码产物
13.113.1 网络与资源指标矩阵src/lab/net-matrix.ts
13.213.2 交付流水线与发布门禁src/delivery/pipeline.ts
13.313.3 卷二评审与进入卷三src/lab/review-gate-net.ts

附录

篇内容
附录 A 网络与资源术语速查RTT、弱网、断线率、重连成功率、差量、灰度等口径
附录 B 双案例网络与资源事实表网络质量、包体构成、热更节奏、CDN 下载量与政策边界
附录 C 网络与资源交付评审清单协议、连接、离线、同步、战报、流量、资源、热更、下载九组检查项

进入下一卷

卷二给出客户端与外部系统之间的契约与交付规则。卷三进入商业化与发行工程:收入结构、账号体系、渠道 SDK、支付通道、订单对账、广告、归因、防作弊、LiveOps、埋点、推送深链、合规与发行验收。

卷二末尾的四问——支付边界、活动通道、归因链路、渠道包体——是卷三的起点。

全部文章 Books game Java Indie golang 客户端开发 Minigame Saas rust Python
books

《移动游戏产品的架构·网络、资源与热更新》8.1 资源依赖图与循环检测

资源不是一棵树:同一张图集会被多个场景、多个角色共享,依赖关系因此变成有向图。本节从一次打包脚本无法结束的故障出发,说明如何用三色标记找出循环、用规范化路径去重、用拓扑序稳定输出,并把最大深度与闭包大小变成打包前就能检查的指标,避免问题拖到发布前才暴露。

11 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》7.2 心跳、长连接与推送的取舍

心跳间隔不是越短越可靠:它同时受保活、NAT 映射、服务端会话与耗电约束。本节以消消的 25 秒心跳为例,拆开长连接、轮询与推送三种形态,给出用连续未响应次数判定断线的可运行模型,并对照方舟的场景化间隔,说明缩短间隔并不能降低断线率,先把代价算清楚。

8 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》6.3 赛季结算与客户端展示口径

赛季结算页上,段位、进度、百分位和奖励四个数字经常互相矛盾。本节以两项目对照为线索,区分服务端权威数据与客户端展示投影,给出段位阈值、千分位进度、百分位口径、赛季错位校验与奖励合并规则,并配一套可运行的 TypeScript 展示模型与取舍。

8 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》6.2 战报回放与一致性校验

同一场战斗,客户端和服务端给出不同结果时,靠什么判断谁对?本节以方舟的 20Hz 输入与 10Hz 快照为线索,拆开回放帧、检查点、分歧分类与确定性状态四件事,给出整数状态机、缺帧校验和表现漂移与结果漂移的判定,并配一套可运行的 TypeScript 回放模型。

8 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》6.1 战报结构:可复盘的最小数据集

方舟一场八到十二分钟的战斗会产生数千条快照,全部上传既占带宽也难检索。本节把战报拆成结果层、关键事件层与校验层,讨论事件配额、分层采样、分桶统计与覆盖全量事件的摘要,并给出客户端战报的信任边界和一套可运行的 TypeScript 模型与取舍。

8 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》5.1 状态同步与帧同步:客户端各做什么

强联网里客户端该算多少,取决于同步模型而不是团队习惯。本节把状态同步与帧同步拆成输入、裁决、呈现、纠偏与随机五类职责,用方舟 10Hz 快照、20Hz 输入以及 350B 快照、48B 输入的体量算清双向流量,并划出客户端不可让渡的边界与可运行模型。

10 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》4.3 冲突解决与可见性延迟

离线改动回到服务端时,冲突不是「谁覆盖谁」一个问题。本节把等级、最高分、货币、昵称与语言拆成四种合并策略,比较服务端权威、取最大值、时间戳后写与客户端偏好,并给出乐观可见层、暂缓字段与可见性延迟的估算模型,用消消与方舟两种强度做对照,最后收口到可执行的规则表。

10 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》4.2 操作队列的幂等与去重

离线队列的难点不是排队,而是同一条操作被提交两次。本节以消消的单局提交为线索,拆开客户端 opId、服务端幂等键与确认丢失三件事,给出可重放的队列状态机、指数退避、确认剪枝与重复负载识别,并用测试覆盖重复提交、确认丢失与重试耗尽,并说明边界。

9 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》4.1 离线可做与不可做:队列边界

弱联网产品最容易犯的错,是把「能点」当成「能离线」。本节用消消的关卡、收集与商店操作划出队列边界:哪些可以排队、哪些只能在线、哪些排队后必须刷新,并给出类型、年龄与预算三重准入判据和一个可运行的分类模型,边界外的操作会带着明确原因被拒绝,让离线体验可控。

8 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》3.3 重连后的状态校准

《潮汐消消》一局 90 秒,提交 14–22 次,每次 600B–1.2KB,8% 的重连需要补状态。重连后最危险的不是丢包,而是把已结算的提交再交一次。本节用纪元、序号、增量窗口与已确认集合,把无需校准、增量、快照、重置四种决策写成可测试的校准器,并给出待提交的重放与去重规则。

10 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》3.2 指数退避与抖动:重连节奏怎么定

重连风暴不是带宽问题,而是所有客户端在同一时刻做同一件事。《潮汐方舟》14% 的会话处于弱网,断线率 1.4%,固定间隔重试会让失败者在同一秒再次碰撞。本节用指数增长、封顶、最大尝试次数与稳定重置四个参数,加上 full、equal、none 三种抖动,把重连节奏写成可复现的纯函数模型。

9 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》3.1 连接状态机:从连接到就绪

《潮汐方舟》一场战斗 8–12 分钟,5 秒一次心跳,断线率 1.4%,重连后仍有 31% 的会话需要服务端补状态。本节把连接拆成空闲、建连、握手、同步、就绪、排空、失败与关闭八个阶段,用事件表、阶段预算与拒绝理由写成可测试的状态机,说明为什么布尔量无法表达重连中的真实处境。

8 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》2.3 协议契约测试:把兼容规则写成断言

兼容规则写在文档里,下一次热更就会被绕过。本节把消消与方舟的协议契约拆成 schema、黄金样本和 schema diff 三层断言,给出一个能同时校验两个产品样本的检查器,并说明哪些问题必须阻断发版、哪些只应记成警告,以及为什么旧版本样本必须留在 CI 里。

7 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》2.2 请求响应、推送与超时语义

同一条长连接上,请求、响应和推送的语义完全不同。本节以方舟战斗中 20Hz 上行输入和 10Hz 快照下发为背景,拆解请求 id、重试次数、超时截止与重复响应的处理,并给出一个可测试的请求跟踪器,把「超时后到达的包」变成明确的状态而不是新的请求。

8 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》2.1 消息信封、版本与兼容规则

方舟的客户端与服务端不可能同时升级。本节从灰度期的快照解析错位出发,把固定头、主次版本号、未知字段与必需字段的处理写成可执行规则,并给出一个固定头加模式名的二进制编解码实现,让旧客户端在新服务端面前只做可预期的降级,而不是在解析失败后才发现问题。

9 分钟阅读
书稿 移动游戏 网络架构
books

《移动游戏产品的架构·网络、资源与热更新》1.3 mga-lab-net 的网络实验骨架与验收口径

实验骨架的价值不是多写一个脚本,而是把「弱网」从形容词变成可复现的输入与可比的输出。本节用 mga-lab-net 把探针、门禁与报告拆成三层,给出消消与方舟两组夹具、验收阈值和证据要求,并说明骨架在后续章节如何扩展而不返工,让每次实验都能复现。

8 分钟阅读
书稿 移动游戏 网络架构