Files
ichni_Official/docs/release-readiness-roadmap.md

331 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ichni Release Readiness Roadmap
> 文档状态Active
> 首次基线2026-07-18
> 最近扫描2026-07-18
> 最近 Scope 更新2026-07-18
> 当前阶段Production研发中期
> 当前结论NOT READY FOR RELEASE
> 主工作范围:`D:\Projects\ichni Official`
> 条件性关联:仅当任务实际修改共享序列化、内容导出/导入或节奏游戏核心数据契约时,再纳入 `D:\Projects\IchniCreatorStudio`
## 1. 文档用途
这是 ichni 从当前研发中期走到可发布版本的长期执行文档。它同时承担四个职责:
1. 保存当前项目基线,避免后续只凭印象判断进度。
2. 定义 Release 的完成标准和阶段门。
3. 用稳定的任务编号逐项推进、复核和留证。
4. 记录需要跨项目处理时的明确依赖;本轮默认只处理 `ichni Official`
本文件中的百分比是“发布就绪度区间”,不是工时完成率,也不能直接用于推算发布日期。每项任务只有在验收证据可复查时才能标记为完成。
## 2. 已确认的 Release Scope
本节已由产品负责人于 2026-07-18 确认。路线图从此按下列范围执行Chapter 1 和 Creator 都不能阻塞 Chapter 0 首发。
- [x] `DEC-001` 首发平台PCWindows、Android、iOS。
- [x] `DEC-002` 首发内容Chapter 0 是最低且必须完成的首发内容Chapter 1 为 Stretch Goal只能在不危及 Chapter 0 的前提下推进。
- [x] `DEC-003` 首发语言:`en``zh-CN``ja``ko``vi-VN`
- [ ] `DEC-004` 发布渠道:尚未确定;在 Gate 3 前必须决定具体 PC 与移动端商店。
- [x] `DEC-005` 首发模式:纯 Offline账户、登录、联网服务均不属于首发功能。
- [x] `DEC-006` 目标日期:暂无固定日期;原则是 Chapter 0 达到质量门后尽早发布,而不是用未确定的谱面工期反推日期。
- [x] `DEC-007` 工作重心:当前只计划/美术/游戏框架/剧情/本地化/设置/发布准备Chapter 0 谱面流程已稳定,由独立节奏游戏制作链路自行推进并只提供完成状态。
记录格式:
| Decision | 选择 | 决策日期 | 决策人 | 影响 |
|---|---|---|---|---|
| DEC-001 | Windows + Android + iOS | 2026-07-18 | 产品负责人 | 三平台 Build、QA、Input、Safe Area 与商店合规 |
| DEC-002 | Chapter 0 必达Chapter 1 Stretch | 2026-07-18 | 产品负责人 | Chapter 1 不得阻塞内容锁定 |
| DEC-003 | en / zh-CN / ja / ko / vi-VN | 2026-07-18 | 产品负责人 | 五语翻译、字体、排版和 LQA |
| DEC-004 | TBD | — | 产品负责人 | 商店 SDK、签名、年龄分级、隐私和商店材料 |
| DEC-005 | Pure Offline | 2026-07-18 | 产品负责人 | 移除/Feature Gate 登录与网络依赖 |
| DEC-006 | 无固定日期,尽早完成 | 2026-07-18 | 产品负责人 | 用 Gate 和质量证据管理,不承诺虚假日期 |
| DEC-007 | 非谱面工作优先;谱面由独立流程跟踪 | 2026-07-18 | 产品负责人 | 路线图不展开 Creator 或谱面生产排期 |
## 3. 现状扫描结论
### 3.1 阶段判断
项目处于明确的 **Production** 阶段,置信度高:核心音游 Runtime、两个主要 Scene、内容加载、谱面制作器、Wwise、章节/选曲/演奏/结算等系统已经存在,且已有可运行内容。项目尚未进入 Feature Complete、Content Complete 或 Release Candidate 阶段,因为主 GameLoop 的结果持久化、剧情节点、本地化、设置完整性、测试、Build Pipeline 和发布合规仍有阻断项。
### 3.2 发布就绪度快照
| 领域 | 就绪度区间 | 状态 | 当前判断 |
|---|---:|---|---|
| 核心音游 Runtime | 6075% | Yellow | 演奏、判定、暂停、结算骨架存在;记录初始化、进度写回和异常路径需补齐 |
| 谱面与章节内容 | 约 60% | Yellow | 以用户提供的 60% 为准Official 当前扫描到 13 个歌曲目录、31 组难度包 |
| GameLoop / Progression | 3045% | Red | 页面链路存在但结果未确认写回存档Story 的 Song/Tutorial 节点仍为占位 |
| UI/UX | 3550% | Yellow | 已有完整视觉方向和主要页面响应式、Safe Area、可访问性、占位文本与统一规范未完成 |
| Settings / Input | 3550% | Red | 音量、帧率、Render Scale、Offset、语言、Rebind 已有;存在逻辑缺口与移动端风险 |
| 剧情系统与文本 | 2035% | Red | Yarn/Presenter/Portrait/Save 框架存在;目前只有少量原型文本和不完整 StoryData |
| Localization | 1025% | Red | 同时使用 I2 与 Unity Localization源语言配置冲突多数 Locale 空缺 |
| Creator 内容管线 | 不纳入本轮 | Gray | 仅在 Official 出现共享数据或导入/导出关联证据时重新纳入 |
| QA / Automation | 010% | Red | 未发现项目自有自动化测试、Test asmdef、CI 或正式回归证据体系 |
| Build / Release Engineering | 515% | Red | 缺少可复现 Build Profile、CI、版本/渠道矩阵、发布候选流程和回滚方案 |
| Legal / Store / Operations | 010% | Red | 未发现隐私政策、EULA、Credits、第三方许可台账、商店素材清单或上线运维手册 |
### 3.3 已确认的工程与内容资产
- `ichni Official` 使用 Unity `6000.3.7f1`Creator 的同版本信息仅作为条件性关联基线保存。
- Official Build Settings 当前包含 `Assets/Scenes/MenuScene.unity``Assets/Scenes/GameScene.unity`
- Official 的用户代码规模已经足以支撑完整产品,不建议推倒重写;应以修复闭环、统一数据与建立验证体系为主。
- Official 当前发现 13 个歌曲目录和 31 组完整加密谱面包,每组含 `Beatmap``ProjectInfo``SongInfo``CommandScripts`
- Creator 当前发现 15 个项目目录和 16 组对应 JSON 内容;这是基线信息,不是本轮工作范围。只有当 Official 的首发内容出现共享数据/导出异常时,才建立跨项目 Manifest 或处理 Creator。
- UI 已有统一的深蓝/青色、轨道与装饰线条风格,适合渐进式重构,不需要先更换全部视觉语言。
- 新 Story 系统已具备 Yarn 播放、Typewriter、Choice、Portrait、Variable Save 等能力,重点是完成内容、数据和 GameLoop 接入。
## 4. 需要优先解决的 Release Blockers
### P0阻止形成完整产品闭环
1. **演奏结果初始化和存档闭环待 Unity 端到端验证。** 2026-07-18 已在 `GameManager` 初始化 `PlayingRecorder`,并在 Wwise 歌曲结束回调中将结果写入 `BeatmapSave` / `SongStatusSave`;需要验证结算、退出、重开后的 Accuracy / FC / AP 和完成状态一致。
2. **Story 到 Song/Tutorial 的转场仍是占位。** `SongBlockView``TutorialBlockView` 只输出 `Debug.Log`
3. **Chapter 0 StoryData 不完整。** 当前定义了 `A-0``B-0``B-1``C-0`,只有 `A-0` 绑定 Yarn条件中引用了未定义的 `B-2`
4. **Localization 源语言与内容不一致。** Yarn Project 的 Base Language 是 `en`,但当前 `en` Story Table 中实际是中文;`zh-CN` 仅有少量空项,其他 Locale 大多为空。
5. **Offline 首发必须完全关闭 Online/Login 路径。** TapTap 初始化被禁用Start 页面绕过登录API 指向 `http://localhost:53734`,并存在硬编码凭据、敏感响应日志和本地 Token 存储风险。首发应移除或明确 Feature Gate而非让不可用服务残留在用户路径上。
### P1阻止 Feature Complete / Beta
1. Offline 内容解锁已统一为独立 `UnlockSaveModule`;仍需补齐新档、授予 Key、重启读取与所有入口拦截的 Unity 端到端证据。
2. Settings 加载未应用语言I2 与 Unity Localization 依赖相同 Index 顺序,容易错配。
3. Rebind 使用 `Rebinds` 保存,但 Reset 查询/删除 `Rebind`,无法正确恢复默认值。
4. `KeyRebindButton` 在找不到 Action 的异常路径中可能不恢复 Input 与 Waiting Cover。
5. Input Actions 缺少完整的 Submit/Back/Controller 导航与 Control Scheme未发现 `EnhancedTouchSupport.Enable()`,移动端触控需实机验证。
6. UI Scene 内混用 `1920×1080``2560×1440` 和 Constant Pixel Size未发现 `Screen.safeArea` 适配。
7. Scene 中仍存在大量测试值、硬编码中英文、`114514``Choice 0`、Test 文案等候选占位内容。
8. Localization 资产不完整I2 54 个 Term 中多个语言缺失,且有 5 个引用 Term 与资源命名不一致Unity UI Table 只有 7 个 Key`en`/`zh-CN` 外其余表为空Message Table 为空。
9. `StreamingAssets` 同时包含 Android、iOS、Windows64 ThemeBundle可能让各平台 Build 携带无关资源。
10. Runtime `Assets` 中保存了大量 PSD、整屏 Mockup 和 120 帧 Loading PNG需在不破坏引用的前提下分离 Source Art 与 Runtime Export。
### 条件性跨项目事项(不进入当前执行队列)
- Creator 的静态构建曾报 3 个 `PositionSync` 相关错误。这是 Creator 自身的健康问题,但当前 UI、剧情、设置、Offline GameLoop 和首发准备不依赖它;除非 Official 的 Chapter 0 导入/读取出现明确关联,本轮不处理。
- 未来只要任务修改共享 `BM`、加密/序列化 Schema、Beatmap Export Contract 或 `BaseElement` 节奏游戏元素,就必须先重新评估 Official/Creator 同步范围,并在任务说明中明确提醒。
### P2阻止 Release Candidate / 长期维护
1. 未发现项目自有自动化测试、CI、稳定的 Build Profile 和可追踪测试证据。
2. 未建立 Crash Reporting、性能基线、最低设备矩阵、长时间 Soak Test 和存档兼容测试。
3. 未建立隐私政策、EULA、Credits、第三方 SDK/字体/音乐/素材许可台账。
4. PlayerSettings 中 Standalone Application Identifier 仍是 Unity Template 值;版本、渠道、签名和商店资料未形成单一来源。
5. 代码中仍有 14 处 `NotImplementedException`、158 处 `Debug.Log` 和少量 TODO需按 Runtime 可达性审计,不能仅机械删除。
6. Summary 的 Share Button 存在但未发现实现;需要实现或移除。
## 5. Release Definition of Done
ichni 只有同时满足以下条件,才可以进入正式 Release
- [ ] 产品 Scope、平台、语言、渠道与 Online 范围已经冻结并记录。
- [ ] 新用户可以从启动页进入章节、完成剧情/选曲、完成歌曲、查看结算、保存进度、退出并重开继续。
- [ ] Chapter 0 的首发歌曲、谱面、剧情、教程、音频和 UI 内容完成并锁定Chapter 1 仅在不影响该 Gate 时纳入。
- [ ] 不存在可达的占位节点、测试按钮、测试文本、开发后门或默认服务地址。
- [ ] `en``zh-CN``ja``ko``vi-VN` 达到 100% Key 覆盖,完成字体、溢出、断行和真机 LQA。
- [ ] Settings 在所有目标平台可保存、迁移、重置并实际生效Debug Settings 在 Release Build 不可访问。
- [ ] 键鼠、手柄和目标移动设备的 Input 路径通过验证;所有移动平台通过 Safe Area 测试。
- [ ] 如首发工作实际触及共享 Schema、序列化或导出/导入契约,则 Official 与 Creator 的相关面已完成同步与回放验证;否则无需作为首发 Gate。
- [ ] 每个首发 Build 可由干净环境按文档重复构建并产出版本、Hash、符号和变更记录。
- [ ] P0/P1 Bug 为 0获准延期的 P2 有 Owner、风险说明和后续版本计划。
- [ ] 核心流程自动化测试、人工回归、性能、Soak、存档升级和崩溃恢复均有可复查证据。
- [ ] 商店素材、年龄分级、隐私、EULA、Credits、许可、SDK 声明和联系方式准备完成。
- [ ] Release Candidate 在目标设备矩阵上通过最终签署,并已演练回滚/Hotfix 流程。
## 6. 阶段路线图与 Gate
本路线图采用 Gate而不是先虚构日期。平台、内容、语言、Offline 和工作重心已经冻结;仅在 Gate 3 前补充商店渠道决策与对应日历排期。谱面制作不作为本路线图的排期驱动项。
### Gate 0 — Scope Baseline
目标:把“什么叫首发完成”冻结成可执行合同。
交付物:
- 已确认的 `DEC-001``DEC-003``DEC-005``DEC-007` 录入本文;在 Gate 3 前确认 `DEC-004`
- Chapter 0 Release ManifestSong、Difficulty、Story Node、Tutorial、Locale、PlatformChapter 1 单独标记为 Stretch。
- Offline 决策落实为登录/网络功能的 Build-time 或 Runtime Feature Gate。
- 首发设备矩阵、性能预算和 Release Definition of Done 复核。
Exit Criteria所有后续任务都能判断“首发必须 / 可延期 / 不做”,且没有未归属的 Release Scope。
### Gate 1 — Complete Playable Loop
目标:先让一个 Chapter 0 样本形成可靠闭环,再扩大内容生产。
必须完成:`CORE-001``CORE-008``STORY-001``SET-001``QA-001`
Exit Criteria新存档从启动到完成一首歌、结算、解锁、返回、退出并重开后数据一致失败/取消/重试也不会损坏存档。
### Gate 2 — Feature Complete Alpha
目标Chapter 0 的所有首发功能都有最终实现路径不再新增大功能Chapter 1 只作为独立 Stretch 轨道推进。
必须完成Story、Settings、Input、UI 基础规范、Offline Feature Gate所有可达占位实现清零或明确剔除。Creator 不在本 Gate 内,除非实际改动共享内容契约。
Exit Criteria所有首发功能都可用可以缺内容和细节 Polish但不能存在“以后再接”的功能节点。
### Gate 3 — Content Complete Beta
目标:内容锁定,进入系统性修复和质量验证。
必须完成Chapter 0 首发谱面状态确认、剧情、五语翻译、音频、UI Export 和教程;完成 Release Manifest 对账。
Exit Criteria除 Bug Fix、性能、LQA 和批准的微调外,不再改数据 Schema、核心流程或新增文本。
### Gate 4 — Release Candidate
目标:构建一个可直接发布、仅等待签署的候选版本。
必须完成:自动化/人工回归、平台认证检查、性能、Soak、存档升级、安装/卸载、Offline 启动与离线可玩验证、Legal/Store、Build Reproducibility。
Exit CriteriaP0/P1 为 0候选包 Hash 固定;所有签署证据齐全;回滚和 Hotfix 已演练。
### Gate 5 — Release & Stabilization
目标:安全上线并监控第一轮真实用户问题。
交付物发布包、版本说明、支持渠道、Crash/日志观察、Known Issues、Day-One Patch 判断、Postmortem 数据。
Exit Criteria首发观察窗口结束严重问题关闭或已部署修复进入正常版本节奏。
## 7. 可逐项执行的 Master Backlog
状态只能使用:`TODO``IN PROGRESS``BLOCKED``VERIFY``DONE``DEFERRED``EXTERNAL``EXTERNAL` 表示由独立节奏游戏制作流程跟踪但仍受 Release Gate 验证;`DONE` 必须填写 Evidence。
| ID | Priority | 项目 | 工作项 | Size | Dependency | Status | Evidence |
|---|---|---|---|---|---|---|---|
| REL-001 | P0 | Official | 确认平台、渠道、内容、语言、Online 和日期 Scope | S | — | IN PROGRESS | DEC-001/2/3/5/6/7 已于本文第 2 节确认DEC-004 待定 |
| REL-002 | P0 | Official | 建立 Chapter 0 Release Manifest 与唯一内容 IDChapter 1 单独标为 Stretch | M | REL-001 | TODO | Manifest + 对账报告 |
| REL-003 | P0 | Official | 定义 Release DoD、性能预算和目标设备矩阵 | S | REL-001 | TODO | 本文复核 + 设备表 |
| CORE-001 | P0 | Official | 创建 `PlayingRecorder` 后调用并验证 `Initialize()` | S | — | DONE | 2026-07-18已通过完整游玩流程与重启读取验证。 |
| CORE-002 | P0 | Official | 结算时写回最高 Accuracy、FC/AP、完成状态与持久化当前项目尚未定义 Score 规则 | L | CORE-001 | DONE | 2026-07-18已验证 ES3 写入、重启读取与结果合并。 |
| SAVE-001 | P1 | Official | 游戏记录 Schema Version、旧存档迁移前备份、未来版本只读保护 | M | CORE-002 | DONE | 2026-07-18当前预发布策略为 Schema v1 不兼容存档重置;正式发布前须恢复迁移/保护策略。 |
| SAVE-002 | P1 | Official | 每谱面 Chart Revision 与历史 Max ComboRevision 变化仅重置该谱面成绩 | M | CORE-002 | DONE | 2026-07-18已验证 Revision 变化与 Max Combo 合并行为。 |
| UI-008 | P1 | Official | 保持章节内存选曲/难度缓存:恢复退出歌曲和难度,不写入玩家存档 | S | CORE-002 | DONE | 2026-07-18已验证失效歌曲、不可用难度与空配置的安全回退。 |
| CORE-003 | P0 | Official | 明确纯 Offline 下的 Story/Song/Payment Unlock 行为;无首发用途的 Payment Unlock 必须移除或可靠禁用 | M | REL-001 | DONE | 2026-07-18已验证独立 Unlock Save v1、章节/歌曲统一规则、Yarn grant_unlock、重启读取和所有现有进歌入口拦截Payment Unlock 运行时代码已移除。 |
| CORE-004 | P0 | Official | 实现 `SongBlockView` 到歌曲加载/返回 Story 的流程 | M | REL-002 | TODO | PlayMode + Manual E2E |
| CORE-005 | P0 | Official | 实现 `TutorialBlockView` 或从首发 Scope 移除 | M | REL-001 | TODO | Tutorial E2E / Scope Decision |
| CORE-006 | P0 | Official | 为 Project/Theme/Bundle/Beatmap 加载增加错误、重试、取消和平台失败处理 | L | — | TODO | Fault-injection Checklist |
| CORE-007 | P1 | Official | 实现或移除 Summary Share Button | S | REL-001 | TODO | UI Test |
| CORE-008 | P1 | Official | 清理 `ProjectLoader.TestLoad()` 命名与开发假设,形成正式入口 | S | CORE-006 | TODO | Code Review |
| STORY-001 | P0 | Official | 修复 Chapter 0 Story Graph未定义 `B-2`、空绑定与条件完整性 | M | REL-002 | TODO | Graph Validator |
| STORY-002 | P0 | Official | 决定 Yarn 真正 Source Language 并修正 Yarn Project/Table | M | DEC-003 | TODO | Locale Contract |
| STORY-003 | P0 | Official | 完成首发剧情、角色表、Portrait、Command 与分支条件 | L | REL-002, STORY-002 | TODO | Story Content Audit |
| STORY-004 | P1 | Official | 移除 `Test Title` 等原型命令,补充缺失内容验证器 | M | STORY-003 | TODO | Zero-placeholder Report |
| LOC-001 | P0 | Official | 选择 I2/Unity Localization 的职责边界或迁移方案,禁止同 Index 隐式绑定 | L | STORY-002 | TODO | Localization ADR |
| LOC-002 | P0 | Official | 建立单一 Key Manifest、术语表、Source/Target Locale 规则 | M | LOC-001 | TODO | Key Manifest |
| LOC-003 | P0 | Official | 修复 5 个缺失 I2 Term 引用和现有空翻译 | S | LOC-002 | TODO | Automated Coverage Report |
| LOC-004 | P0 | Official | 完成首发语言 100% Key 覆盖并锁定文本 | L | DEC-003, LOC-002 | TODO | Locale Coverage = 100% |
| LOC-005 | P1 | Official | 配置 TMP Font/Fallback 并完成溢出、断行、RTL如适用和 LQA | L | LOC-004 | TODO | Screenshot Matrix |
| SET-001 | P0 | Official | 修复 `Rebinds` / `Rebind` Reset Key 错配 | S | — | TODO | Automated Save Test |
| SET-002 | P0 | Official | Settings Load 时应用语言,并验证 Locale 顺序不再隐式耦合 | M | LOC-001 | TODO | Restart Test |
| SET-003 | P1 | Official | 修复 Rebind 异常退出,补 Submit/Back/Controller/Control Scheme | M | — | TODO | Input Matrix |
| SET-004 | P1 | Official | 移动端启用/验证 Enhanced Touch、触控取消与多点触控 | M | DEC-001 | TODO | Device Test |
| SET-005 | P1 | Official | 增加 Settings Version、Validation、Migration、Atomic Save 与 Reset All | L | — | TODO | Migration Tests |
| SET-006 | P1 | Official | 将 Debug/Judge/AutoPlay 从 Release Settings 隔离 | S | — | TODO | Release Build Inspection |
| SET-007 | P1 | Official | 明确 Resolution/Render Scale/Fullscreen/VSync/Frame Limit 的平台行为 | M | DEC-001 | TODO | Platform Settings Matrix |
| UI-001 | P0 | Official | 建立 UI InventoryScreen、Prefab、State、Text Key、Owner、完成度 | M | REL-001 | TODO | UI Inventory |
| UI-002 | P1 | Official | 建立 UI Design TokensColor、Type、Spacing、Border、Motion、Icon | M | UI-001 | TODO | UI Style Guide |
| UI-003 | P1 | Official | 统一 Canvas Scaler 策略并实现 Safe Area | L | DEC-001, UI-002 | TODO | Resolution Screenshot Matrix |
| UI-004 | P1 | Official | 清理 Scene 中测试/硬编码文本并全部接入 Localization | L | LOC-002 | TODO | Static Scan + Runtime Review |
| UI-005 | P1 | Official | 补齐 Focus、Keyboard/Controller Navigation、文字缩放与色彩对比 | L | UI-002, SET-003 | TODO | Accessibility Checklist |
| UI-006 | P1 | Official | 按 `ai-assisted-ui-art-workflow.md` 完成一个 Pilot Screen | M | UI-002 | TODO | Pilot A/B + Unity Capture |
| UI-007 | P2 | Official | 审核并迁移 PSD/整屏 Mockup只保留 Runtime Export 在 `Assets` | L | UI-001 | TODO | Reference Audit + Build Size Diff |
| CONTENT-001 | P2 | Creator条件性 | 仅当 Official 出现共享数据/导出异常时,建立 Creator Source → Export → Official Package 对账 | M | REL-002 | DEFERRED | 关联问题的 Roundtrip Report |
| CONTENT-002 | P2 | Creator条件性 | 修复/确认 3 个 `PositionSync` 静态编译错误 | M | — | DEFERRED | 仅在 Creator 成为当前阻塞项时执行 |
| CONTENT-003 | P0 | Official外部跟踪 | Chapter 0 谱面完成状态与逐谱面 Schema、Timing、Audio、Difficulty 验证 | L | REL-002 | EXTERNAL | Beatmap QA Sheets / 完成状态 |
| CONTENT-004 | P1 | Official | 审核 Wwise Event/Bank、缺失音频、平台导入与音量分类 | L | REL-002 | TODO | Wwise Validation |
| CONTENT-005 | P1 | Official | 按目标平台只打包对应 ThemeBundle移除跨平台冗余 | M | DEC-001 | TODO | Build Size Report |
| QA-001 | P0 | Official | 建立最小 EditMode/PlayMode Test asmdef 和核心流程 Smoke Test | L | — | TODO | Test Results XML |
| QA-002 | P1 | Official | 为存档升级、Story Graph、Localization 和 Chapter 0 Runtime Data 写自动检查;共享导出仅在需要时纳入 | L | QA-001 | TODO | CI Test Results |
| QA-003 | P1 | Official | 建立 Bug 模板、Severity/Priority 和每 Gate 的回归清单 | M | — | TODO | QA Docs |
| QA-004 | P1 | Official | 建立 CPU/GPU/Memory/Loading/Build Size 基线和最低设备预算 | L | DEC-001 | TODO | Profiler Captures |
| QA-005 | P1 | Official | 执行 2h/8h Soak、暂停恢复、来电/切后台、无网络环境启动/游玩和存档破坏测试 | L | Gate 3 | TODO | Soak Logs |
| BUILD-001 | P0 | Official | 建立可复现的 Development/Release Build Profile 与版本来源 | L | DEC-001 | TODO | Clean Build Record |
| BUILD-002 | P1 | Official | 建立 CICompile、Tests、Content Validators、Build Artifact | L | BUILD-001, QA-001 | TODO | CI Run URL/Log |
| BUILD-003 | P1 | Official | 修正 Application Identifier、Signing、Scripting Backend 和平台设置 | M | DEC-001, DEC-004 | TODO | PlayerSettings Audit |
| BUILD-004 | P1 | Official | 建立 Crash Symbol、日志、Crash Reporting 与隐私约束 | M | DEC-004 | TODO | Staging Crash Test |
| ONLINE-001 | P0 | Official | 将纯 Offline 决策落实:完全剔除或可靠 Feature Gate 登录、TapTap、网络入口和 Localhost 配置 | M | DEC-005 | VERIFY | 2026-07-18玩家路径已绕过并隐藏登录界面Release Build 无网络 E2E 待补 |
| ONLINE-002 | P2 | Official | 为未来 Online 版本建立 HTTPS、Server URL、Secret、Token 安全改造设计 | L | ONLINE-001 | DEFERRED | Security ADR |
| ONLINE-003 | P2 | Official | 为未来 Online 版本建立登录、断网、撤销和隐私删除测试设计 | L | ONLINE-002 | DEFERRED | Integration Test Plan |
| LEGAL-001 | P1 | Official | 建立第三方 SDK、字体、音乐、图片和代码 License/Credit 台账 | M | REL-002 | TODO | License Register |
| LEGAL-002 | P1 | Official | 准备 Offline 数据声明/Privacy Policy、EULA、Support 与年龄分级材料 | L | DEC-004, ONLINE-001 | TODO | Approved Documents |
| STORE-001 | P1 | Official | 准备商店文案、截图、Trailer、Icon、Capsule、系统需求和 Locale | L | Gate 3 | TODO | Store Preview |
| REL-004 | P0 | Official | 执行最终 Release Checklist、签署 RC 和回滚演练 | L | Gate 4 | TODO | Signed RC Record |
## 8. 推荐的首批执行顺序
不要先批量重做美术。当前最高收益顺序是:
1. 将第 2 节确认的 Scope 固化到 `REL-002` Chapter 0 Release ManifestChapter 1 只保留 Stretch 标记。
2. 执行 `STORY-001``CORE-004`,让 Chapter 0 Story 真正连接歌曲并形成可验证的主线闭环。
3. 决定并执行 `CORE-005`:接入 Tutorial Block或将其从首发 Chapter 0 Scope 移除。
4. 执行 `ONLINE-001`,从首发 Build 中彻底关闭 Login、TapTap、网络入口和 Localhost 配置。
5. 执行 `LOC-001``STORY-002`,在继续写 Chapter 0 剧情/五语翻译前确定源语言和管线。
6. 执行 `SET-001``SET-002``SET-003``SET-004`,修复 Settings/Input并优先验证 Android/iOS Touch。
7. 执行 `QA-001` 和核心 E2E Smoke Test防止后续改 UI 时破坏 GameLoop。
8. 执行 `UI-001``UI-002`,再开始 `UI-006` 的 AI Dialogue Pilot不要让 Chapter 1 美术阻塞此处。
9. 由独立谱面流程更新 `CONTENT-003` 的 Chapter 0 完成状态;本路线图只消费其 QA 证据,不安排 Creator 工作。
10. 在 Gate 2 后启动完整 Build/Store/Legal 工作;最晚在 Gate 3 前决定 `DEC-004` 商店渠道。
## 9. 验证矩阵
### Core E2E 必测路径
- Fresh Install → Start → Chapter → Story → Song → Loading → Play → Pause/Resume → Summary → Return。
- Pass / Fail / Restart / Abort / Force Close / Relaunch。
- 首次 Clear、重复 Clear、更高分、更低分、FC、AP、不同 Difficulty。
- Story Choice、章节/歌曲条件锁、Unlock Key 授予、Save Upgrade。
- 缺 ThemeBundle、损坏 Beatmap、无网络、Wwise Bank 缺失、Locale 资源缺失。
### UI 设备/分辨率最低矩阵
- 16:91920×1080、2560×1440。
- 16:101920×1200。
- Ultrawide2560×1080 或目标范围。
- Android/iOS至少各一台带刘海/挖孔和一台低端设备;横屏 Safe Area 为首发必测项。
- Keyboard/Mouse、Controller、Touch系统文字缩放和不同 Locale 长文本。
### 存档兼容
- 无存档、当前版本存档、上一发布版本存档、缺字段、损坏文件。
- Settings、Key Rebind、Story Variables、Song Progress、Unlock Keys 分别验证。
- 写入期间强制退出,验证不会同时损坏主存档与备份。
## 10. 基线证据索引
| 发现 | 证据路径 |
|---|---|
| Recorder 只创建未初始化 | `Assets/Scripts/Manager/GameManager.cs``Assets/Scripts/Manager/PlayingRecorder.cs` |
| Song Save 只发现初始化/读取,未发现结算写回 | `Assets/Scripts/Saving/GameSaveManager.cs``Assets/Scripts/UI/SongSelection/` |
| Song/Tutorial Story 节点为占位 | `Assets/Scripts/NewStorySystem/Tree/SongBlockView.cs``TutorialBlockView.cs` |
| Chapter 0 引用未定义 `B-2` | `Assets/Story/Chapter0/StoryData_Chapter0.asset` |
| Yarn 与 Story Localization 配置冲突 | `Assets/Story/Chapter0/Chapter0.yarnproject``Assets/Localization/Story/` |
| I2 Term 覆盖与命名缺口 | `Assets/Resources/I2Languages.asset` |
| Rebind Reset Key 错配 | `Assets/Scripts/UI/Settings/RebindingWindow.cs` |
| Login 被绕过、Localhost API 与 SDK 禁用 | `Assets/Scripts/UI/StartPage/StartUIPage.cs``Assets/Scripts/Online/` |
| UI 缩放策略混合 | `Assets/Scenes/MenuScene.unity``Assets/Scenes/GameScene.unity` |
| 多平台 ThemeBundle 同时位于 StreamingAssets | `Assets/StreamingAssets/ThemeBundles/` |
| Creator 编译阻断(条件性,不在当前队列) | `D:\Projects\IchniCreatorStudio\Assets\Scripts\Console\consoleOnMono.cs``Assets\Scripts\DynamicUI\Core\InspectorBuilder.cs` |
构建验证备注2026-07-18 的 Creator `dotnet build --no-restore` 报 3 个 `PositionSync` 相关错误。Official 的同类静态检查受到 `obj\Debug\Assembly-CSharp.dll` 文件锁影响,未得到可作为代码结论的结果;必须在 Unity Console 与清洁构建环境重新验证。Git/LFS clean filter 也阻止了本次可靠获取完整 Worktree 状态,因此本文不把 Git 状态作为发布证据。
## 11. 长期维护规则
1. 每周或每个 Sprint 只更新任务的 `Status``Evidence` 和“最近扫描”日期,不随意改 ID。
2. Scope 变化必须先更新 Decision再评估受影响的 Gate、测试矩阵和内容总量。
3. 只有 Official 任务实际修改共享 Schema、序列化类、导出契约或 `BaseElement` 节奏游戏元素时,才纳入 Creator并要求两边的实现和 Roundtrip Evidence。
4. `DONE` 不等于“代码写完”,而是 Acceptance Criteria 已通过且 Evidence 可复查。
5. 每个 Gate 前创建一次 SnapshotBuild Version、Commit、Content Manifest Hash、Test Results、Known Bugs。
6. 新 P0/P1 Bug 必须立即关联到 Gate不能仅记录在聊天或个人 TODO 中。
7. 进入 Release Candidate 前,再正式执行项目的 `/launch-checklist` 工作流进行全团队签署;本次扫描没有替代该最终流程。
## 12. 下一次更新入口
当前 Scope 已确认后:
1. 先建立 `REL-002` 的 Chapter 0 Release Manifest并把 Chapter 1 标为 Stretch。
2.`STORY-001``CORE-004` 开始实施 Gate 1 的下一段主线闭环。
3. 同步建立第一份 Core E2E 测试证据。
4. 在 Gate 3 前补充 `DEC-004` 的具体商店渠道、账号、签名与提交要求。