posts

《移动游戏产品的架构·客户端与移动运行时》 · 全书目录与章节索引(45 篇)

卷一《客户端与移动运行时》45 篇索引:13 章覆盖双案例与移动约束、四层分层、引擎与壳、生命周期、配置、资源内存、UI、设备、帧率功耗、存档、区域化、可观测性与收口基线,附可运行的 mga-lab 实验工程与三篇附录,每章三节构成一条可复盘的判断链。

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

这本卷回答什么

移动游戏的客户端架构不是「把引擎 API 包一层」,而是在内存、电量、发热、网络、机型五条约束下,决定哪些能力共用、哪些实现隔离。卷一给出这套判断的可执行版本:四层依赖、Host 契约、生命周期状态机、配置契约、资源与内存预算、UI 与输入仲裁、帧预算、存档恢复与可观测性,最后收口到两款产品的客户端基线。

阅读前提

全卷概览

章主题节数核心产物
1架构问题与双案例3src/core/layers.ts, src/core/result.ts
2客户端分层与模块边界3src/core/layers.ts, src/domain/match3.ts
3引擎与原生壳的边界3src/platform/host-mock.ts, src/platform/host.ts
4应用生命周期与恢复3src/runtime/lifecycle.ts, src/runtime/resume.ts
5配置驱动的玩法数据3src/config/schema.ts, src/config/table.ts, src/config/version-migrate.ts
6资源管线与内存3src/resource/cache.ts, src/resource/graph.ts, src/resource/memory-budget.ts
7UI 架构与交互3src/ui/layout-model.ts, src/ui/popup-arbiter.ts, src/ui/screen-stack.ts
8设备与输入适配3src/input/device-tiers.ts, src/input/form-factors.ts, src/input/gesture.ts
9帧率、功耗与发热3src/runtime/frame-budget.ts, src/runtime/thermal.ts
10存档与云存档3src/save/merge.ts, src/save/migrate.ts, src/save/store.ts
11多语言、时区与区域化3src/i18n/catalog.ts, src/i18n/region.ts, src/i18n/timezone.ts
12客户端可观测性3src/obs/crash-model.ts, src/obs/event.ts, src/obs/sampling.ts
13卷一收口:双案例客户端基线3src/lab/module-matrix.ts, src/lab/review-gate.ts, src/resource/perf-baseline.ts

前置

第 1 章 架构问题与双案例

节文章代码产物
1.11.1 一个 IP 两款产品:为什么客户端架构不能按品类复制src/core/layers.ts
1.21.2 移动端约束清单:内存、电量、发热、网络、机型src/core/layers.ts
1.31.3 mga-lab 的分层骨架与验收口径src/core/result.ts

第 2 章 客户端分层与模块边界

节文章代码产物
2.12.1 表现、玩法、系统、平台四层与依赖方向src/core/layers.ts
2.22.2 纯逻辑内核:把玩法从引擎里拆出来src/domain/match3.ts
2.32.3 边界测试:依赖规则写成可执行断言src/core/layers.ts

第 3 章 引擎与原生壳的边界

节文章代码产物
3.13.1 引擎负责什么,原生壳负责什么src/platform/host.ts
3.23.2 桥接层设计:消息、线程与生命周期src/platform/host-mock.ts
3.33.3 双案例壳层差异:轻壳与重壳src/platform/host-mock.ts

第 4 章 应用生命周期与恢复

节文章代码产物
4.14.1 冷启动、热启动与后台挂起src/runtime/lifecycle.ts
4.24.2 状态保存与恢复:快照与操作日志src/runtime/resume.ts
4.34.3 杀进程与异常退出的兜底src/runtime/lifecycle.ts

第 5 章 配置驱动的玩法数据

节文章代码产物
5.15.1 配置 schema 与版本化src/config/schema.ts
5.25.2 校验、引用完整性与灰度src/config/table.ts
5.35.3 策划工作流:从表格到线上src/config/version-migrate.ts

第 6 章 资源管线与内存

节文章代码产物
6.16.1 资源句柄、引用计数与生命周期src/resource/graph.ts
6.26.2 内存水位与低端机降级src/resource/memory-budget.ts
6.36.3 资源泄漏定位与回归src/resource/cache.ts

第 7 章 UI 架构与交互

节文章代码产物
7.17.1 UI 栈、弹窗队列与返回键语义src/ui/screen-stack.ts
7.27.2 多分辨率、刘海屏与安全区src/ui/layout-model.ts
7.37.3 触控仲裁与误触防护src/ui/popup-arbiter.ts

第 8 章 设备与输入适配

节文章代码产物
8.18.1 触控、陀螺仪与传感器抽象src/input/gesture.ts
8.28.2 机型分档与画质策略配置化src/input/device-tiers.ts
8.38.3 平板、折叠屏与异形屏src/input/form-factors.ts

第 9 章 帧率、功耗与发热

节文章代码产物
9.19.1 帧率分级与动态分辨率src/runtime/frame-budget.ts
9.29.2 每帧预算与主线程任务切片src/runtime/frame-budget.ts
9.39.3 功耗与发热的验收方法src/runtime/thermal.ts

第 10 章 存档与云存档

节文章代码产物
10.110.1 存档格式与迁移src/save/store.ts
10.210.2 云存档冲突与合并src/save/merge.ts
10.310.3 防篡改与回滚src/save/migrate.ts

第 11 章 多语言、时区与区域化

节文章代码产物
11.111.1 文本、字体与排版src/i18n/catalog.ts
11.211.2 时区、服务器时间与本地时间src/i18n/timezone.ts
11.311.3 区域化配置与内容分级src/i18n/region.ts

第 12 章 客户端可观测性

节文章代码产物
12.112.1 崩溃、ANR 与卡顿的采集边界src/obs/crash-model.ts
12.212.2 日志分级、采样与隐私脱敏src/obs/sampling.ts
12.312.3 线上问题定位闭环src/obs/event.ts

第 13 章 卷一收口:双案例客户端基线

节文章代码产物
13.113.1 模块矩阵与依赖报告src/lab/module-matrix.ts
13.213.2 性能预算与机型分档基线src/resource/perf-baseline.ts
13.313.3 卷一评审与进入卷二src/lab/review-gate.ts

附录

篇内容
附录 A 术语与指标速查全书统一口径:帧预算、内存水位、包体、崩溃率、Jank 率
附录 B 双案例唯一事实表两款产品的 DAU、平台、机型、包体、帧率、联网与收入结构
附录 C 客户端架构评审清单分层、生命周期、资源、UI、性能、存档、可观测性七组检查项

进入下一卷

卷一给出客户端的静态结构与运行约束。卷二进入网络、资源与热更新:移动网络现实、协议契约、重连、离线队列、战斗同步的客户端责任、流量账、首包与分包、热更政策边界、差量灰度与 CDN 下载。

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

《移动游戏产品的架构·客户端与移动运行时》8.1 触控、陀螺仪与传感器抽象

触控与陀螺仪的差别不在事件名,而在采样节奏、缺失处理与噪声。本节把触点、长按、滑动、缩放和视角统一成意图事件,用死区、平滑与步长上限处理传感器数据,并给出陀螺仪缺失或被拒绝时的拖拽降级,以及消消与方舟各自的输入策略边界、验收口径与提示差异。

8 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》7.3 触控仲裁与误触防护

触控仲裁不是命中测试,而是按时间、位移与手指数决定这一下算点击、滑动、长按还是多指。本节给出四类手势的阈值状态机,把弹窗遮罩、UI 与玩法输入的优先级写进同一套输入门,并说明边缘防误触与连点冷却如何用可回归测试锁住,避免一次手势被投递两遍。

6 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》7.1 UI 栈、弹窗队列与返回键语义

返回键不是「关闭当前界面」,而是从最上层消费一次导航意图。本节用页面栈、互斥弹窗队列、优先级、去重与抢占规则,解释 Android 返回键和 iOS 侧滑为何必须归一化成不同结果,并给出连点节流与 Toast 冷却的可运行模型,让误退出和重复弹窗变成可回归的断言。

7 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》5.3 策划工作流:从表格到线上

配置错误是移动游戏线上事故的主要来源之一,而多数事故并非算错数值,而是绕过了流水线。本节把导入、校验、评审、灰度、发布与回滚写成带准入门槛的状态机,用前向迁移处理结构变化、用上一版产物处理回滚,让差异报告决定评审人数,并把审计记录绑定到版本与差异。

7 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》5.2 校验、引用完整性与灰度

能通过 JSON.parse 的配置照样能让活动打不开。本节把类型、范围、枚举、重复、引用与孤儿行变成带错误码的校验报告,跨表检查引用完整性,再用客户端构建号与配置版本矩阵决定谁能读哪一版;最后给出以整数基点计算的灰度判据,明确 hold、promote 与 rollback 的边界。

8 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》5.1 配置 schema 与版本化

配置是客户端与玩法之间的层间契约,不是策划附件。本节用纯 TypeScript 为关卡、卡牌与活动表定义 schema,把字段类型、引用目标、可读层与兼容窗口写成可执行约束;再用 schema 版本与客户端构建号解析出每个玩家应加载的那一版,并给出旧版本退役前双版本共存的发布顺序。

7 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》4.3 杀进程与异常退出的兜底

进程被系统杀死时没有任何回调,这是移动端恢复的第一前提。本节把脏标记、检查点节流、临时文件加原子重命名、校验和与恢复提示写成可测试的记录器,给出干净、可恢复、已丢失三种启动决策,并说明消消的单局回放与方舟的战斗令牌为何需要不同的兜底策略与权威归属。

8 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》4.2 状态保存与恢复:快照与操作日志

90 秒单局与 8–12 分钟对局不该共用一套恢复策略。本节把快照与操作日志放进同一张成本表,用回放预算而不是产品名选择路线,并实现可合并的恢复令牌、幂等重放、乱序重排与快照加尾日志,最后比较消消与方舟各自的选择、恢复上限、检查点间隔与服务端校验。

9 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》4.1 冷启动、热启动与后台挂起

生命周期不是回调清单,而是一台可验证的状态机。本节把 Android 的 onPause、onStop、onDestroy 与 iOS 的前后台通知映射为 created、foregrounded、backgrounded、suspended、resumed、destroyed 六个状态,用注入 Clock 判定冷热启动分界,并比较消消与方舟在恢复动作上的差异。

9 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》3.3 双案例壳层差异:轻壳与重壳

壳的厚薄不取决于代码量,而取决于启动链路上有多少能力必须阻塞等待。消消的轻壳把账号、支付、广告降级为可延迟能力;方舟的重壳把账号、防沉迷与渠道 SDK 放上关键路径。同一份 Host 契约用能力、阻塞与回退三列容纳两者,桥接层不需要按产品写分支。

8 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》3.2 桥接层设计:消息、线程与生命周期

桥接层不是一组回调,而是一套有版本、有错误码、有线程归属的消息协议。本节用三条队列表达主线程、渲染线程与后台线程的边界,让每次调用都可超时、可取消、可测试,并给出 mock Host 的最小实现与五类错误语义;队列过滤与迟到响应处理是两处最容易被忽略的细节。

8 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》3.1 引擎负责什么,原生壳负责什么

引擎与原生壳的边界不按技术栈划分,而按十项职责的所有权划分:生命周期、主线程与权限归壳,渲染线程归引擎,文件路径、网络传输与传感器共享。本节把这份判定表写成可查询、可审计的 Host 契约,并用五条断言防止职责重复或缺席;表外的灰区必须显式登记,不能留给下一版口头约定。

9 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》2.3 边界测试:依赖规则写成可执行断言

依赖规则如果只写在评审清单里,就会在下一个紧急需求里被绕开。本节把向上依赖、跨层导入、未知模块与重复模块写成可执行断言,并用消消与方舟两张模块图报告验证:每条跨层边都必须向下,同层边单独计数,向上边直接阻断合并,报告可归档,也可作为发布前门禁。

7 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》2.2 纯逻辑内核:把玩法从引擎里拆出来

把三消规则从引擎节点、动画回调和全局随机数里拆出来,内核只接收棋盘、输入意图与注入的 Clock/Random,返回可重放的状态迁移与结算。本节给出棋盘生成、级联消除、重力补位与会话过期规则,并说明方舟卡牌战斗如何复用同一套边界,让同一局在 Node 里复现。

9 分钟阅读
书稿 移动游戏 客户端架构
books

《移动游戏产品的架构·客户端与移动运行时》2.1 表现、玩法、系统、平台四层与依赖方向

四层不是四个文件夹,而是四种能被单独验证的职责:平台层封装设备差异,系统层组织账号、支付与配置,玩法层维护纯状态,表现层只做映射。依赖只能向下,跨层调用必须经过接口;本节把职责、输入输出与典型误用写成可检查的契约,并给出允许矩阵与破例记录方式。

10 分钟阅读
书稿 移动游戏 客户端架构