Files
FlowScope/docs/requirements/p2-package-editor-requirements.md
2026-05-21 17:00:16 +08:00

164 lines
6.3 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.
# FlowScope Game Core P2 需求文档
## 文档目的
本文用于开启 P2 新对话时作为需求入口。P2 不再继续修补 P0/P1 内核语义,而是在当前已稳定的 Runtime 基础上,推进包分发、编辑器体验、真实集成验收和跨项目复用。
## 当前基线
- P0 已提供 Container、Feature、GameFlow、ResourceService、ConfigProvider、SaveService、AudioService、UIManager 等轻量核心能力。
- P1 已完成生产化第一步资源后端抽象、Addressables 独立适配、配置 source/parser、存档 migration、UI 导航与预加载、MainMenuP0 样例升级。
- P2 前整改已收口 Container 生命周期、Feature scope、GameFlow shutdown、ResourceService 共享加载、UIPreloadService 取消/释放/重入边界。
- 进入 P2 前EditMode 与 PlayMode Unity Test Runner 已由人工确认全绿。
## P2 总目标
把 FlowScope 从“项目内 Runtime 骨架”推进到“可跨项目复用的 Unity Package 雏形”,让使用者能清楚安装、接入、验证、诊断,并避免误用 P0/P1 核心 API。
## 核心原则
- 不重写 P0/P1 核心生命周期。
- 不引入大型 DI、全局 EventBus、完整生态或多后端大一统。
- 先建立分发和验收边界,再扩展能力。
- Runtime、Addressables、Editor、Samples、Tests 之间保持 asmdef 边界清晰。
- 任何新增 API 必须有使用场景、测试和文档,不为了“框架完整感”提前扩张。
## 本轮范围
### 1. Package 分发结构
目标:让 FlowScope 可以被整理成标准 Unity Package 形态,并保留当前 Assets 内开发体验的迁移路径。
需求:
- 定义包名、版本号、displayName、Unity 版本和依赖。
- 明确 Runtime、Addressables adapter、Editor、Samples、Tests 的目录结构。
- 明确 asmdef 依赖方向:
- `FlowScope.Runtime` 不依赖 Addressables、Editor、Samples。
- `FlowScope.Addressables` 依赖 `FlowScope.Runtime` 与 Unity Addressables。
- `FlowScope.Editor` 只依赖需要检查的 runtime/editor 程序集。
- Samples 依赖 Runtime 与需要演示的适配包。
- 给出从 `Assets/FlowScope` 迁移到 package 结构的阶段方案,避免一次性大搬迁破坏现有测试。
验收:
- package 元数据完整。
- Unity 能识别 package。
- Runtime 与 Addressables asmdef 编译边界保持稳定。
- 迁移方案能说明哪些文件先不移动,以及原因。
### 2. 最小安装与接入文档
目标:让新项目能按文档完成 FlowScope 接入。
需求:
- 编写安装方式:
- 本地 package 路径安装。
- Git URL 安装。
- 项目内 Assets 开发模式。
- 编写最小 bootstrap 示例:
- 创建 Container。
- 注册 ResourceService 与 AddressablesResourceBackend。
- 注册 ConfigProvider、SaveService、AudioService、UIManager。
- 启动 GameFlow。
- Shutdown 时释放资源和订阅。
- 明确常见误用:
- 不要把 transient 对象注册成 singleton factory。
- 不要业务层直接调用 Addressables。
- 不要用 `UIScreenNavigator` 当完整页面路由。
- 不要跳过 shutdown cleanup。
验收:
- 文档能独立指导一个空 Unity 项目接入 Runtime。
- 文档中所有 API 名称与当前代码一致。
- 示例代码能通过 generated csproj 编译或在 Unity 中编译。
### 3. Addressables 真实集成验收
目标:补齐 P1 留下的真实 Addressables load/release 验收缺口。
需求:
- 准备最小 Addressables 测试资源或人工验收场景。
- 验证 `AddressablesResourceBackend.LoadAsync<T>` 成功加载真实资源。
- 验证 `Release(object asset)` 能释放已加载资源,不产生重复释放异常。
- 验证资源缺失或类型不匹配时错误可诊断。
- 如自动化 PlayMode 测试成本过高,先记录可重复的人工验收步骤和结果。
验收:
- 至少有一种可重复验证方式证明 Addressables adapter 不只是编译通过。
- 验收记录写入 docs作为 package 发布前 gate。
### 4. Editor 诊断工具第一步
目标:只做最小检查工具,不做完整编辑器平台。
需求:
- 提供一个 FlowScope 菜单入口或 EditorWindow。
- 检查项目是否具备必要依赖:
- Addressables package 是否存在。
- Runtime/Addressables asmdef 是否可见。
- Samples 是否缺失关键场景或 prefab 引用。
- 输出可执行的诊断结果,不自动修改项目。
验收:
- 工具可在 Unity Editor 打开。
- 检查结果不会误报为“已修复”。
- 没有自动生成或删除用户资源。
### 5. Samples 整理
目标:让 MainMenuP0 从 P1 验收样例变成 P2 package sample 的候选。
需求:
- 明确 MainMenuP0 是否移动到 `Samples~`,或暂时保留在 `Assets/FlowScope/Samples`
- 补充 sample README说明它覆盖的 Runtime 能力。
- 保持启动、点击、保存恢复、shutdown cleanup 测试有效。
验收:
- 用户能通过 sample 看懂最小接入方式。
- PlayMode sample 测试继续全绿。
## 暂不进入 P2 的范围
- YooAsset / AssetBundle / Resources 多后端完整实现。
- 云存档、远程配置、热更新配置。
- 完整 UI 路由、URL 跳转、跨 Feature 页面恢复。
- AudioMixer、3D 音频、动态音乐系统。
- 大型资源预算、内存分析和自动修复工具。
- 完整发布流水线和版本兼容策略。
## P2 第一轮建议执行顺序
1. 建立 P2 package 结构方案和迁移边界。
2. 补 Addressables 真实集成验收或人工验收记录。
3. 编写安装与最小 bootstrap 文档。
4. 做最小 Editor 诊断入口。
5. 整理 MainMenuP0 sample 文档和 package sample 候选路径。
## 新对话启动提示
新对话可以直接使用以下目标:
```text
根据 docs/requirements/p2-package-editor-requirements.md先不要直接写代码。请先审查当前 FlowScope P0/P1 基线、package/editor 相关现状和 Addressables 验收缺口,然后输出 P2 第一阶段实施计划。计划必须使用中文,并遵守 AGENTS.md 中的 Git/Plan 规则。
```
## 验收 Gate
P2 第一阶段完成前必须满足:
- EditMode 全绿。
- PlayMode 全绿。
- generated csproj build 0 error。
- Addressables adapter 有真实集成验收记录。
- package/editor 相关新增内容不破坏当前 Assets 内开发模式。
- 文档能说明安装、接入、验证和已知限制。