附录 C 客户端架构评审清单

把卷一的判断落成一张可执行的评审清单:分层与依赖、生命周期与恢复、配置、资源与内存、UI 与输入、帧率功耗、存档、区域化、可观测性九组检查项,每项给出通过标准、证据形式与失败后果,并说明三档判定与收口表格,可直接用于立项评审与版本复盘,不含打分。

怎么用这张清单

这是一张证据清单,不是打分表。每一组检查项都要求给出可核对的证据:一张依赖图、一段测试输出、一份真机报告、一条线上查询。答「有做」不算通过,答「证据在哪」才算。

建议在两个时点使用:

  • 立项或大改版前:完整过一遍,标出没有证据的项,作为技术方案的第一批风险。
  • 版本复盘时:只过与本次改动相关的组,确认没有回退。

判定只有三档:通过(证据齐全)、部分(有设计无证据)、未过(无设计且无证据)。「部分」按未过处理,因为它意味着结论还没被验证。

一、分层与依赖

检查项通过标准证据形式失败后果
四层划分明确表现、玩法、系统、平台四层各有目录与负责人依赖图 + 目录树代码所有权模糊,改动互相踩
依赖方向单向不存在玩法层依赖表现层的调用可执行的依赖检查脚本玩法无法脱离引擎测试
玩法内核可离线运行三消与卡牌的内核能在 Node 下跑确定性回放node --test 输出逻辑与渲染耦合,回归成本极高
横切能力有归属账号、活动、存档、埋点各有明确归属层模块矩阵同一个功能在两处实现
边界有断言依赖规则不是文档,而是测试或 lint测试用例规则随人员流动失效

最关键的一条是「边界有断言」。写在 Wiki 里的分层规则,三个月后就会变成历史建议;写成测试的规则,才会在 CI 里拦住违规提交。

二、生命周期与恢复

检查项通过标准证据形式失败后果
三条启动路径分开冷启动、热启动、杀进程恢复各有独立处理状态机图用一套逻辑处理三种场景,必然有一处错
后台挂起有快照进入后台前写入最小必要状态快照字段表切回后进度丢失
快照有版本快照带版本号与迁移路径迁移测试版本升级后旧快照无法恢复
恢复有失败分支恢复失败时能回到安全状态,而不是白屏故障注入用例一次坏快照导致全量玩家进不去
恢复有速率限制连续恢复失败会降级为重新开始计数器与阈值坏数据反复触发崩溃循环

判断标准很简单:任意时刻强杀进程,重新进入后玩家损失是否可以接受。「可以接受」要写进产品需求,不能由开发自己拍。

三、配置

检查项通过标准证据形式失败后果
配置有 schema每个字段有类型、范围、必填性schema 文件策划填错直接进线上
引用完整性校验外键与跨表引用在发布前校验校验报告空引用导致运行时崩溃
有版本与兼容窗口客户端声明支持的配置版本区间版本矩阵老版本客户端白屏
灰度可回滚配置可按渠道、机型、区域灰度,且能秒级回滚灰度记录一次错配全量生效
客户端有兜底配置缺失时使用内置默认值降级用例网络抖动导致玩法不可用

最常见的事故不是「配置错了」,而是「配置错了之后客户端没有兜底」。校验解决的是发布前,兜底解决的是发布后。

四、资源与内存

检查项通过标准证据形式失败后果
引用计数正确资源释放由引用归零触发,不靠手动调用泄漏回归用例长时间游玩内存单调上涨
有水位与降级顺序告警水位、强降水线、降级顺序均有定义水位表 + 降级策略低端机随机闪退
降级可观测每次降级有事件上报埋点定义不知道玩家为什么画质变差
预热与释放平衡高频资源常驻,低频资源按场景释放内存曲线反复加载导致卡顿
分档统计内存指标按低端机、中端机、高端机分档分档报表平均值掩盖低端机崩溃

降级顺序必须事先定死:先降特效、再降分辨率、再降同屏单位、最后降帧率。每次临时决定顺序,结果就是同一款产品在不同版本里表现不一致。

五、UI 与输入

检查项通过标准证据形式失败后果
UI 栈语义明确压栈、出栈、返回键行为有统一规则栈状态机返回键行为各页面不一致
弹窗有仲裁同一时刻只允许一个高优先级弹窗仲裁器测试弹窗互相覆盖、玩家点不到
安全区适配刘海、挖孔、圆角、手势条均不遮挡交互真机截图关键按钮被遮挡
触控有防抖关键操作有防连点与误触保护参数表误触导致误购、误升级
多形态覆盖手机、平板、折叠屏的布局模式有定义布局模型折叠屏展开后布局错乱

UI 层的评审要拿真机截图,不要只看设计稿。安全区、字体缩放、系统深色模式这三件事,设计稿永远显示不出来。

六、帧率与功耗

检查项通过标准证据形式失败后果
帧预算明确目标帧率与每帧预算写在需求里预算表「卡」变成无法验收的主观感受
帧率档位有回滞升降档有滞回区间,避免反复横跳档位状态机画质频繁变化,体感更差
主线程有切片超过预算的任务可分帧执行调度器测试加载或结算时长时间卡死
温控有验收方法长时间运行的温度与帧率曲线有验收标准真机报告发热问题拖到上线才暴露
长帧有归因每个长帧能定位到具体阶段分阶段计时只知道卡,不知道卡在哪

帧率类问题的难点不在「优化」,而在「验收」。没有预算表和真机曲线,「我觉得还行」会一直拖到玩家投诉。

七、存档

检查项通过标准证据形式失败后果
存档有版本每次结构变更都有迁移函数迁移链测试升级后老玩家存档损坏
云端冲突有策略本地与云端冲突时有明确合并规则合并用例玩家进度被覆盖
关键字段服务端权威货币、奖励、进度以服务端为准字段归属表改本地文件即可作弊
有完整性校验存档带校验和,篡改可检测校验用例离线篡改无法发现
有回滚能力可回滚到上一个可用存档回滚演练坏存档导致玩家永久卡死

存档是唯一不可重建的玩家资产。其它模块出问题可以热更,存档出问题往往只能补偿。

八、区域化

检查项通过标准证据形式失败后果
文本全部走 key不存在硬编码文案扫描报告新语言无法上线
语言包可回退缺失 key 回退到默认语言并上报回退用例界面出现空白或原始 key
字体覆盖目标语言目标语言字符集在字体文件中完整字体覆盖报告出现方块字
时区口径唯一活动时间只按一种时区计算口径说明跨时区玩家看到不同时间
区域开关可配置区域差异通过配置表达,不靠分支代码配置表每进一个区域就分叉一套代码

区域化评审最容易漏的是「字体覆盖」和「时区口径」。前者上线才看得见,后者往往在跨时区活动开启的第一天才爆发。

九、可观测性

检查项通过标准证据形式失败后果
崩溃率有分母口径、分母、是否含启动崩溃均写清楚指标字典指标好看但体验没变
ANR 独立统计ANR 与崩溃分开采集与归因报表主线程阻塞问题被掩盖
采样率随事件上报每条事件携带采样率事件 schema后端无法还原真实量级
客户端脱敏敏感字段在采集端移除脱敏规则 + 用例合规风险
四维切片可用版本、机型、渠道、区域均可切查询示例定位只能靠猜
有回归验证修复后能在下一版本验证指标回落复盘记录同一个问题反复出现

没有切片的可观测性等于没有可观测性。一个 0.1% 的整体崩溃率,可能由某个机型 5% 的分支和其余机型 0.02% 拼成;只看总数,永远找不到那个分支。

十、评审的收口方式

评审结束时,产出一张表,而不是一段结论:

组通过部分未过负责人截止时间
分层与依赖410客户端负责人版本发布前
生命周期与恢复311客户端负责人下个迭代
配置500技术策划—
资源与内存410性能负责人版本发布前
UI 与输入500客户端负责人—
帧率与功耗320性能负责人真机验证后
存档410服务端 + 客户端赛季前
区域化311发行 + 客户端出海版本前
可观测性510数据负责人下个迭代

「部分」项要写明缺的是哪份证据,以及什么时候能补。没有截止时间的「部分」,三个月后仍然是「部分」。

第 13 章会把这张表与双案例基线合并成两份可复核的产出:模块矩阵与性能预算。评审清单负责「有没有」,基线表负责「到什么程度」;两者都齐了,卷一才算真正收口。

继续阅读

探索更多技术文章

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

全部文章 返回首页

「books」更多文章

  1. 《移动游戏产品的架构·商业化与发行工程》附录 C 商业化与发行评审清单
  2. 《移动游戏产品的架构·商业化与发行工程》附录 B 双案例商业化事实表
  3. 《移动游戏产品的架构·商业化与发行工程》附录 A 商业化与发行术语速查