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

《移动游戏产品的架构·客户端与移动运行时》13.3 卷一评审与进入卷二

卷末评审不是打分,而是一道门禁:结构、数值、证据三项全过才能进入卷二。本节把附录 C 的清单写成可运行评审器,明确「部分通过按未过处理」「无证据的通过自动降级」,用九组汇总识别结构性缺失,并给出进入网络与资源卷之前必须回答的四个问题,以及带病进入的登记方式。

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

《移动游戏产品的架构·客户端与移动运行时》13.2 性能预算与机型分档基线

性能预算不是一句「要流畅」,而是帧预算、内存水位、启动时间与机型分档四组可校验的数字。本节把双案例的基线写成可运行校验:水位必须留出 20% 余量,30fps 与 60fps 的 Jank 率不能直接横比,低端机预算按 RAM 分档计算,并给出跨产品比较前的判断顺序。

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

《移动游戏产品的架构·客户端与移动运行时》13.1 模块矩阵与依赖报告

卷一的收口从一张矩阵开始:每个模块必须同时回答属于哪一层、提供什么能力、谁负责、是共享还是隔离。本节给出可运行的矩阵构建与审计脚本,用三类问题清单把「架构图」变成每次版本都能重跑的依赖报告,并给出双案例 2/6/2/1 的层分布与五项共享能力。

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

《移动游戏产品的架构·客户端与移动运行时》12.3 线上问题定位闭环

告警只说明整体指标异常,定位要靠版本、机型、渠道、区域四维切片。本节把指纹归一、统计门槛、切片分母与灰度止损串成闭环,用可运行模型演示小样本不误报、坏切片能排序、灰度能回滚,并给出修复验证的回归判据、无分母事件的单列规则与回到原切片的复核方法。

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

《移动游戏产品的架构·客户端与移动运行时》12.2 日志分级、采样与隐私脱敏

日志不是越多越好。方舟的内购排查需要订单上下文,但原始日志同时带走了手机号、令牌与玩家自由文本。本节用分级、确定性采样、字段白名单与按日轮换的假名化,给出可运行的采样与脱敏实现,并说明采样与脱敏的先后顺序,以及客户端与服务端两层脱敏的职责边界。

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

《移动游戏产品的架构·客户端与移动运行时》11.3 区域化配置与内容分级

《潮汐方舟》多区域发行的事故复盘:商店区域、服务区域、内容分级与语言必须拆成四个轴,分级结论要驱动资源变体、概率披露与购买限制,区域覆盖包必须原子应用,语言选择不能靠设备推断。隐私与数据出境只给接口边界,不做法律判断,并给出可运行配置模型与工程边界。

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

《移动游戏产品的架构·客户端与移动运行时》10.3 防篡改与回滚

改系统时间刷离线收益、改存档金币,是移动游戏最常见的两类作弊。本节先区分校验和与签名,再用服务端时间锚点、离线窗口与速率上限、服务端权威字段三道闸门拦截,最后按签名、时间、保留期与版本在候选档中选出上一个可用存档,并给出可运行的 migrate.ts 与 16 条测试。

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

《移动游戏产品的架构·客户端与移动运行时》9.3 功耗与发热的验收方法

手机发热后降频,平均帧率会掩盖最后十分钟的塌陷。本节以《潮汐消消》为主案例,给出长时间挂机与连续对局两套场景、四档温控曲线、帧率保持率与降频起点指标,并明确机内传感器只能建模:验收必须来自真机证据,模型输出不能签字,同时给出一套可复现的真机验收流程。

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

《移动游戏产品的架构·客户端与移动运行时》9.2 每帧预算与主线程任务切片

一帧不是一整块时间,而是输入、逻辑、渲染、提交四段共享同一份预算。本节用《潮汐消消》一键收菜造成的 200ms 长帧,说明如何先归因再切片:输入与提交不切,渲染不跨帧,逻辑在安全点按批次让帧,并用可运行模拟器验证长帧归属与延迟,最后给出双案例的参数差异。

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

《移动游戏产品的架构·客户端与移动运行时》9.1 帧率分级与动态分辨率

帧率档位不是把 30 改成 60 就结束:60fps 的帧预算只有 16.7ms,切档必须带回滞,动态分辨率也只能救 GPU 瓶颈。本节以《潮汐消消》为主案例,给出 30/60fps 双档策略、先降分辨率再降帧率的降级顺序、升级判定、抖动抑制与最低档报警口径,并说明方舟为什么不能照搬。

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

《移动游戏产品的架构·客户端与移动运行时》8.3 平板、折叠屏与异形屏

平板、折叠屏与异形屏不能用宽高比一个数判断。本节把尺寸、折叠状态与窗口模式拆成三个输入,给出 600/840dp 断点、折叠动画的稳定窗口、安全区换算与重排判据,并用无头模型列出矩阵缺口,明确哪些结论必须回到真机矩阵验证,不能由无头模型替代。

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