331 lines
29 KiB
Markdown
331 lines
29 KiB
Markdown
# 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` 首发平台:PC(Windows)、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 | 60–75% | Yellow | 演奏、判定、暂停、结算骨架存在;记录初始化、进度写回和异常路径需补齐 |
|
||
| 谱面与章节内容 | 约 60% | Yellow | 以用户提供的 60% 为准;Official 当前扫描到 13 个歌曲目录、31 组难度包 |
|
||
| GameLoop / Progression | 30–45% | Red | 页面链路存在,但结果未确认写回存档,Story 的 Song/Tutorial 节点仍为占位 |
|
||
| UI/UX | 35–50% | Yellow | 已有完整视觉方向和主要页面;响应式、Safe Area、可访问性、占位文本与统一规范未完成 |
|
||
| Settings / Input | 35–50% | Red | 音量、帧率、Render Scale、Offset、语言、Rebind 已有;存在逻辑缺口与移动端风险 |
|
||
| 剧情系统与文本 | 20–35% | Red | Yarn/Presenter/Portrait/Save 框架存在;目前只有少量原型文本和不完整 StoryData |
|
||
| Localization | 10–25% | Red | 同时使用 I2 与 Unity Localization;源语言配置冲突,多数 Locale 空缺 |
|
||
| Creator 内容管线 | 不纳入本轮 | Gray | 仅在 Official 出现共享数据或导入/导出关联证据时重新纳入 |
|
||
| QA / Automation | 0–10% | Red | 未发现项目自有自动化测试、Test asmdef、CI 或正式回归证据体系 |
|
||
| Build / Release Engineering | 5–15% | Red | 缺少可复现 Build Profile、CI、版本/渠道矩阵、发布候选流程和回滚方案 |
|
||
| Legal / Store / Operations | 0–10% | 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 Manifest:Song、Difficulty、Story Node、Tutorial、Locale、Platform;Chapter 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 Criteria:P0/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 与唯一内容 ID;Chapter 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 Combo;Revision 变化仅重置该谱面成绩 | 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 Inventory:Screen、Prefab、State、Text Key、Owner、完成度 | M | REL-001 | TODO | UI Inventory |
|
||
| UI-002 | P1 | Official | 建立 UI Design Tokens:Color、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 | 建立 CI:Compile、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 Manifest;Chapter 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:9:1920×1080、2560×1440。
|
||
- 16:10:1920×1200。
|
||
- Ultrawide:2560×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 前创建一次 Snapshot:Build 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` 的具体商店渠道、账号、签名与提交要求。
|