全书 45 篇 = 序、前言、目录 3 篇 + 13 章 39 节 + 附录 A/B/C 3 篇。
双案例:《潮汐消消》(休闲)为主案例,《潮汐方舟》(中重度)为对照;两者共用一个发行中台。
正文代码块带// file:/// tier:/// verify:头,可在实验工程mga-lab中逐字节还原并运行测试。
这本卷回答什么
移动游戏的客户端架构不是「把引擎 API 包一层」,而是在内存、电量、发热、网络、机型五条约束下,决定哪些能力共用、哪些实现隔离。卷一给出这套判断的可执行版本:四层依赖、Host 契约、生命周期状态机、配置契约、资源与内存预算、UI 与输入仲裁、帧预算、存档恢复与可观测性,最后收口到两款产品的客户端基线。
阅读前提
- 熟悉 TypeScript 或任一静态类型语言,能读懂接口与状态机。
- 做过至少一个移动端项目,知道冷启动、切后台、弱网和机型分档的真实含义。
- 不要求会写引擎;本书把引擎当作 Host,重点在引擎之上的产品架构。
全卷概览
| 章 | 主题 | 节数 | 核心产物 |
|---|---|---|---|
| 1 | 架构问题与双案例 | 3 | src/core/layers.ts, src/core/result.ts |
| 2 | 客户端分层与模块边界 | 3 | src/core/layers.ts, src/domain/match3.ts |
| 3 | 引擎与原生壳的边界 | 3 | src/platform/host-mock.ts, src/platform/host.ts |
| 4 | 应用生命周期与恢复 | 3 | src/runtime/lifecycle.ts, src/runtime/resume.ts |
| 5 | 配置驱动的玩法数据 | 3 | src/config/schema.ts, src/config/table.ts, src/config/version-migrate.ts |
| 6 | 资源管线与内存 | 3 | src/resource/cache.ts, src/resource/graph.ts, src/resource/memory-budget.ts |
| 7 | UI 架构与交互 | 3 | src/ui/layout-model.ts, src/ui/popup-arbiter.ts, src/ui/screen-stack.ts |
| 8 | 设备与输入适配 | 3 | src/input/device-tiers.ts, src/input/form-factors.ts, src/input/gesture.ts |
| 9 | 帧率、功耗与发热 | 3 | src/runtime/frame-budget.ts, src/runtime/thermal.ts |
| 10 | 存档与云存档 | 3 | src/save/merge.ts, src/save/migrate.ts, src/save/store.ts |
| 11 | 多语言、时区与区域化 | 3 | src/i18n/catalog.ts, src/i18n/region.ts, src/i18n/timezone.ts |
| 12 | 客户端可观测性 | 3 | src/obs/crash-model.ts, src/obs/event.ts, src/obs/sampling.ts |
| 13 | 卷一收口:双案例客户端基线 | 3 | src/lab/module-matrix.ts, src/lab/review-gate.ts, src/resource/perf-baseline.ts |
前置
第 1 章 架构问题与双案例
| 节 | 文章 | 代码产物 |
|---|---|---|
| 1.1 | 1.1 一个 IP 两款产品:为什么客户端架构不能按品类复制 | src/core/layers.ts |
| 1.2 | 1.2 移动端约束清单:内存、电量、发热、网络、机型 | src/core/layers.ts |
| 1.3 | 1.3 mga-lab 的分层骨架与验收口径 | src/core/result.ts |
第 2 章 客户端分层与模块边界
| 节 | 文章 | 代码产物 |
|---|---|---|
| 2.1 | 2.1 表现、玩法、系统、平台四层与依赖方向 | src/core/layers.ts |
| 2.2 | 2.2 纯逻辑内核:把玩法从引擎里拆出来 | src/domain/match3.ts |
| 2.3 | 2.3 边界测试:依赖规则写成可执行断言 | src/core/layers.ts |
第 3 章 引擎与原生壳的边界
| 节 | 文章 | 代码产物 |
|---|---|---|
| 3.1 | 3.1 引擎负责什么,原生壳负责什么 | src/platform/host.ts |
| 3.2 | 3.2 桥接层设计:消息、线程与生命周期 | src/platform/host-mock.ts |
| 3.3 | 3.3 双案例壳层差异:轻壳与重壳 | src/platform/host-mock.ts |
第 4 章 应用生命周期与恢复
| 节 | 文章 | 代码产物 |
|---|---|---|
| 4.1 | 4.1 冷启动、热启动与后台挂起 | src/runtime/lifecycle.ts |
| 4.2 | 4.2 状态保存与恢复:快照与操作日志 | src/runtime/resume.ts |
| 4.3 | 4.3 杀进程与异常退出的兜底 | src/runtime/lifecycle.ts |
第 5 章 配置驱动的玩法数据
| 节 | 文章 | 代码产物 |
|---|---|---|
| 5.1 | 5.1 配置 schema 与版本化 | src/config/schema.ts |
| 5.2 | 5.2 校验、引用完整性与灰度 | src/config/table.ts |
| 5.3 | 5.3 策划工作流:从表格到线上 | src/config/version-migrate.ts |
第 6 章 资源管线与内存
| 节 | 文章 | 代码产物 |
|---|---|---|
| 6.1 | 6.1 资源句柄、引用计数与生命周期 | src/resource/graph.ts |
| 6.2 | 6.2 内存水位与低端机降级 | src/resource/memory-budget.ts |
| 6.3 | 6.3 资源泄漏定位与回归 | src/resource/cache.ts |
第 7 章 UI 架构与交互
| 节 | 文章 | 代码产物 |
|---|---|---|
| 7.1 | 7.1 UI 栈、弹窗队列与返回键语义 | src/ui/screen-stack.ts |
| 7.2 | 7.2 多分辨率、刘海屏与安全区 | src/ui/layout-model.ts |
| 7.3 | 7.3 触控仲裁与误触防护 | src/ui/popup-arbiter.ts |
第 8 章 设备与输入适配
| 节 | 文章 | 代码产物 |
|---|---|---|
| 8.1 | 8.1 触控、陀螺仪与传感器抽象 | src/input/gesture.ts |
| 8.2 | 8.2 机型分档与画质策略配置化 | src/input/device-tiers.ts |
| 8.3 | 8.3 平板、折叠屏与异形屏 | src/input/form-factors.ts |
第 9 章 帧率、功耗与发热
| 节 | 文章 | 代码产物 |
|---|---|---|
| 9.1 | 9.1 帧率分级与动态分辨率 | src/runtime/frame-budget.ts |
| 9.2 | 9.2 每帧预算与主线程任务切片 | src/runtime/frame-budget.ts |
| 9.3 | 9.3 功耗与发热的验收方法 | src/runtime/thermal.ts |
第 10 章 存档与云存档
| 节 | 文章 | 代码产物 |
|---|---|---|
| 10.1 | 10.1 存档格式与迁移 | src/save/store.ts |
| 10.2 | 10.2 云存档冲突与合并 | src/save/merge.ts |
| 10.3 | 10.3 防篡改与回滚 | src/save/migrate.ts |
第 11 章 多语言、时区与区域化
| 节 | 文章 | 代码产物 |
|---|---|---|
| 11.1 | 11.1 文本、字体与排版 | src/i18n/catalog.ts |
| 11.2 | 11.2 时区、服务器时间与本地时间 | src/i18n/timezone.ts |
| 11.3 | 11.3 区域化配置与内容分级 | src/i18n/region.ts |
第 12 章 客户端可观测性
| 节 | 文章 | 代码产物 |
|---|---|---|
| 12.1 | 12.1 崩溃、ANR 与卡顿的采集边界 | src/obs/crash-model.ts |
| 12.2 | 12.2 日志分级、采样与隐私脱敏 | src/obs/sampling.ts |
| 12.3 | 12.3 线上问题定位闭环 | src/obs/event.ts |
第 13 章 卷一收口:双案例客户端基线
| 节 | 文章 | 代码产物 |
|---|---|---|
| 13.1 | 13.1 模块矩阵与依赖报告 | src/lab/module-matrix.ts |
| 13.2 | 13.2 性能预算与机型分档基线 | src/resource/perf-baseline.ts |
| 13.3 | 13.3 卷一评审与进入卷二 | src/lab/review-gate.ts |
附录
| 篇 | 内容 |
|---|---|
| 附录 A 术语与指标速查 | 全书统一口径:帧预算、内存水位、包体、崩溃率、Jank 率 |
| 附录 B 双案例唯一事实表 | 两款产品的 DAU、平台、机型、包体、帧率、联网与收入结构 |
| 附录 C 客户端架构评审清单 | 分层、生命周期、资源、UI、性能、存档、可观测性七组检查项 |
进入下一卷
卷一给出客户端的静态结构与运行约束。卷二进入网络、资源与热更新:移动网络现实、协议契约、重连、离线队列、战斗同步的客户端责任、流量账、首包与分包、热更政策边界、差量灰度与 CDN 下载。