怎么用这张清单
这是一张证据清单,不是打分表。每一组检查项都要求给出可核对的证据:一张依赖图、一段测试输出、一份真机报告、一条线上查询。答「有做」不算通过,答「证据在哪」才算。
建议在两个时点使用:
- 立项或大改版前:完整过一遍,标出没有证据的项,作为技术方案的第一批风险。
- 版本复盘时:只过与本次改动相关的组,确认没有回退。
判定只有三档:通过(证据齐全)、部分(有设计无证据)、未过(无设计且无证据)。「部分」按未过处理,因为它意味着结论还没被验证。
一、分层与依赖
| 检查项 | 通过标准 | 证据形式 | 失败后果 |
|---|---|---|---|
| 四层划分明确 | 表现、玩法、系统、平台四层各有目录与负责人 | 依赖图 + 目录树 | 代码所有权模糊,改动互相踩 |
| 依赖方向单向 | 不存在玩法层依赖表现层的调用 | 可执行的依赖检查脚本 | 玩法无法脱离引擎测试 |
| 玩法内核可离线运行 | 三消与卡牌的内核能在 Node 下跑确定性回放 | node --test 输出 | 逻辑与渲染耦合,回归成本极高 |
| 横切能力有归属 | 账号、活动、存档、埋点各有明确归属层 | 模块矩阵 | 同一个功能在两处实现 |
| 边界有断言 | 依赖规则不是文档,而是测试或 lint | 测试用例 | 规则随人员流动失效 |
最关键的一条是「边界有断言」。写在 Wiki 里的分层规则,三个月后就会变成历史建议;写成测试的规则,才会在 CI 里拦住违规提交。
二、生命周期与恢复
| 检查项 | 通过标准 | 证据形式 | 失败后果 |
|---|---|---|---|
| 三条启动路径分开 | 冷启动、热启动、杀进程恢复各有独立处理 | 状态机图 | 用一套逻辑处理三种场景,必然有一处错 |
| 后台挂起有快照 | 进入后台前写入最小必要状态 | 快照字段表 | 切回后进度丢失 |
| 快照有版本 | 快照带版本号与迁移路径 | 迁移测试 | 版本升级后旧快照无法恢复 |
| 恢复有失败分支 | 恢复失败时能回到安全状态,而不是白屏 | 故障注入用例 | 一次坏快照导致全量玩家进不去 |
| 恢复有速率限制 | 连续恢复失败会降级为重新开始 | 计数器与阈值 | 坏数据反复触发崩溃循环 |
判断标准很简单:任意时刻强杀进程,重新进入后玩家损失是否可以接受。「可以接受」要写进产品需求,不能由开发自己拍。
三、配置
| 检查项 | 通过标准 | 证据形式 | 失败后果 |
|---|---|---|---|
| 配置有 schema | 每个字段有类型、范围、必填性 | schema 文件 | 策划填错直接进线上 |
| 引用完整性校验 | 外键与跨表引用在发布前校验 | 校验报告 | 空引用导致运行时崩溃 |
| 有版本与兼容窗口 | 客户端声明支持的配置版本区间 | 版本矩阵 | 老版本客户端白屏 |
| 灰度可回滚 | 配置可按渠道、机型、区域灰度,且能秒级回滚 | 灰度记录 | 一次错配全量生效 |
| 客户端有兜底 | 配置缺失时使用内置默认值 | 降级用例 | 网络抖动导致玩法不可用 |
最常见的事故不是「配置错了」,而是「配置错了之后客户端没有兜底」。校验解决的是发布前,兜底解决的是发布后。
四、资源与内存
| 检查项 | 通过标准 | 证据形式 | 失败后果 |
|---|---|---|---|
| 引用计数正确 | 资源释放由引用归零触发,不靠手动调用 | 泄漏回归用例 | 长时间游玩内存单调上涨 |
| 有水位与降级顺序 | 告警水位、强降水线、降级顺序均有定义 | 水位表 + 降级策略 | 低端机随机闪退 |
| 降级可观测 | 每次降级有事件上报 | 埋点定义 | 不知道玩家为什么画质变差 |
| 预热与释放平衡 | 高频资源常驻,低频资源按场景释放 | 内存曲线 | 反复加载导致卡顿 |
| 分档统计 | 内存指标按低端机、中端机、高端机分档 | 分档报表 | 平均值掩盖低端机崩溃 |
降级顺序必须事先定死:先降特效、再降分辨率、再降同屏单位、最后降帧率。每次临时决定顺序,结果就是同一款产品在不同版本里表现不一致。
五、UI 与输入
| 检查项 | 通过标准 | 证据形式 | 失败后果 |
|---|---|---|---|
| UI 栈语义明确 | 压栈、出栈、返回键行为有统一规则 | 栈状态机 | 返回键行为各页面不一致 |
| 弹窗有仲裁 | 同一时刻只允许一个高优先级弹窗 | 仲裁器测试 | 弹窗互相覆盖、玩家点不到 |
| 安全区适配 | 刘海、挖孔、圆角、手势条均不遮挡交互 | 真机截图 | 关键按钮被遮挡 |
| 触控有防抖 | 关键操作有防连点与误触保护 | 参数表 | 误触导致误购、误升级 |
| 多形态覆盖 | 手机、平板、折叠屏的布局模式有定义 | 布局模型 | 折叠屏展开后布局错乱 |
UI 层的评审要拿真机截图,不要只看设计稿。安全区、字体缩放、系统深色模式这三件事,设计稿永远显示不出来。
六、帧率与功耗
| 检查项 | 通过标准 | 证据形式 | 失败后果 |
|---|---|---|---|
| 帧预算明确 | 目标帧率与每帧预算写在需求里 | 预算表 | 「卡」变成无法验收的主观感受 |
| 帧率档位有回滞 | 升降档有滞回区间,避免反复横跳 | 档位状态机 | 画质频繁变化,体感更差 |
| 主线程有切片 | 超过预算的任务可分帧执行 | 调度器测试 | 加载或结算时长时间卡死 |
| 温控有验收方法 | 长时间运行的温度与帧率曲线有验收标准 | 真机报告 | 发热问题拖到上线才暴露 |
| 长帧有归因 | 每个长帧能定位到具体阶段 | 分阶段计时 | 只知道卡,不知道卡在哪 |
帧率类问题的难点不在「优化」,而在「验收」。没有预算表和真机曲线,「我觉得还行」会一直拖到玩家投诉。
七、存档
| 检查项 | 通过标准 | 证据形式 | 失败后果 |
|---|---|---|---|
| 存档有版本 | 每次结构变更都有迁移函数 | 迁移链测试 | 升级后老玩家存档损坏 |
| 云端冲突有策略 | 本地与云端冲突时有明确合并规则 | 合并用例 | 玩家进度被覆盖 |
| 关键字段服务端权威 | 货币、奖励、进度以服务端为准 | 字段归属表 | 改本地文件即可作弊 |
| 有完整性校验 | 存档带校验和,篡改可检测 | 校验用例 | 离线篡改无法发现 |
| 有回滚能力 | 可回滚到上一个可用存档 | 回滚演练 | 坏存档导致玩家永久卡死 |
存档是唯一不可重建的玩家资产。其它模块出问题可以热更,存档出问题往往只能补偿。
八、区域化
| 检查项 | 通过标准 | 证据形式 | 失败后果 |
|---|---|---|---|
| 文本全部走 key | 不存在硬编码文案 | 扫描报告 | 新语言无法上线 |
| 语言包可回退 | 缺失 key 回退到默认语言并上报 | 回退用例 | 界面出现空白或原始 key |
| 字体覆盖目标语言 | 目标语言字符集在字体文件中完整 | 字体覆盖报告 | 出现方块字 |
| 时区口径唯一 | 活动时间只按一种时区计算 | 口径说明 | 跨时区玩家看到不同时间 |
| 区域开关可配置 | 区域差异通过配置表达,不靠分支代码 | 配置表 | 每进一个区域就分叉一套代码 |
区域化评审最容易漏的是「字体覆盖」和「时区口径」。前者上线才看得见,后者往往在跨时区活动开启的第一天才爆发。
九、可观测性
| 检查项 | 通过标准 | 证据形式 | 失败后果 |
|---|---|---|---|
| 崩溃率有分母 | 口径、分母、是否含启动崩溃均写清楚 | 指标字典 | 指标好看但体验没变 |
| ANR 独立统计 | ANR 与崩溃分开采集与归因 | 报表 | 主线程阻塞问题被掩盖 |
| 采样率随事件上报 | 每条事件携带采样率 | 事件 schema | 后端无法还原真实量级 |
| 客户端脱敏 | 敏感字段在采集端移除 | 脱敏规则 + 用例 | 合规风险 |
| 四维切片可用 | 版本、机型、渠道、区域均可切 | 查询示例 | 定位只能靠猜 |
| 有回归验证 | 修复后能在下一版本验证指标回落 | 复盘记录 | 同一个问题反复出现 |
没有切片的可观测性等于没有可观测性。一个 0.1% 的整体崩溃率,可能由某个机型 5% 的分支和其余机型 0.02% 拼成;只看总数,永远找不到那个分支。
十、评审的收口方式
评审结束时,产出一张表,而不是一段结论:
| 组 | 通过 | 部分 | 未过 | 负责人 | 截止时间 |
|---|---|---|---|---|---|
| 分层与依赖 | 4 | 1 | 0 | 客户端负责人 | 版本发布前 |
| 生命周期与恢复 | 3 | 1 | 1 | 客户端负责人 | 下个迭代 |
| 配置 | 5 | 0 | 0 | 技术策划 | — |
| 资源与内存 | 4 | 1 | 0 | 性能负责人 | 版本发布前 |
| UI 与输入 | 5 | 0 | 0 | 客户端负责人 | — |
| 帧率与功耗 | 3 | 2 | 0 | 性能负责人 | 真机验证后 |
| 存档 | 4 | 1 | 0 | 服务端 + 客户端 | 赛季前 |
| 区域化 | 3 | 1 | 1 | 发行 + 客户端 | 出海版本前 |
| 可观测性 | 5 | 1 | 0 | 数据负责人 | 下个迭代 |
「部分」项要写明缺的是哪份证据,以及什么时候能补。没有截止时间的「部分」,三个月后仍然是「部分」。
第 13 章会把这张表与双案例基线合并成两份可复核的产出:模块矩阵与性能预算。评审清单负责「有没有」,基线表负责「到什么程度」;两者都齐了,卷一才算真正收口。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。