template/.planning/ROADMAP.md

212 lines
9.2 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.

# Roadmap: 魔塔游戏引擎(mota-ts)
## Overview
引擎从旧 mota-js 运行时逐步重构,渲染端已重构完成,数据端接口设计中。本路线图沿「事件系统 → 寻路 → 数据端完成 → 渲染适配 → legacy 移植 → 单元测试」的依赖顺序推进:先补齐剧情事件、自动寻路两大玩法系统,再完成数据端 L0–L3 接口落地,随后把新数据层与已重构渲染端打通并支持双布局,接着清理被新接口覆盖的 legacy,最后以单元测试兜底,使引擎能完整跑通一部魔塔。接口/架构设计由用户主导,AI 负责实现与测试;验证通过后 AI 可自行创建 git commit。
## Phases
**Phase Numbering:**
- Integer phases (1, 2, 3): Planned milestone work
- Decimal phases (2.1, 2.2): Urgent insertions (marked with INSERTED)
Decimal phases appear between their surrounding integers in numeric order.
- [ ] **Phase 1: 事件系统** - blockly 式低代码事件定义,驱动简单场景事件流程(验证已通过,待完成阶段收尾)
- [ ] **Phase 2: 寻路系统** - 自动寻路与移动端点击地图触发移动
- [ ] **Phase 3: 数据端完成** - 数据端 L0–L3 接口全部落地,可在 Node 环境独立跑回放验证
- [ ] **Phase 4: 渲染适配与双布局** - 新数据层 ↔ 已重构渲染端对接,支持移动端与桌面端双布局
- [ ] **Phase 5: Legacy 移植** - 删除被新接口覆盖的旧系统,迁移仍需要的内容
- [ ] **Phase 6: 单元测试** - 为核心系统补齐单元测试
## Phase Details
### Phase 1: 事件系统
**Goal**: 引擎能以 blockly 式低代码定义事件,并驱动简单场景的事件流程
**Depends on**: Nothing (first phase)
**Requirements**: EVT-01, EVT-02, EVT-03
**Success Criteria** (what must be TRUE):
1. 开发者能通过数据/序列化接口定义事件(blockly 式低代码可序列化为引擎事件数据,编辑器在外部项目)
2. 引擎能执行踩踏触发事件(角色踩上地板触发对应事件)
3. 引擎能执行踩踏触发事件驱动的事件执行链路(对话/开门依赖 A2 内建函数清单,延后到收尾工作)
4. 事件系统保持面向初学者的简单抽象,未引入复杂场景的通用表达能力
**Plans**: 13/13 plans executed
Plans:
- [x] 01-13-PLAN.md
- [x] 01-04-PLAN.md
- [x] 01-05-PLAN.md
- [x] 01-06-PLAN.md
- [x] 01-07-PLAN.md
- [x] 01-08-PLAN.md — GameEventStore add/get/duplicate-warning regression; rawEvent and cycle baselines preserved
- [x] 01-09-PLAN.md — GameMap point-event-only save aggregation; production registration deferred
- [x] 01-10-PLAN.md
- [x] 01-11-PLAN.md — CoreState legacy map initialization selects eventLayer; existing source-aware movement path remains reachable
- [x] 01-12-PLAN.md — Close phase-owned type diagnostics and CRLF/Prettier quality-gate gaps without behavior changes
**Wave 1**
- [x] 01-01-PLAN.md — L0/L1 事件数据契约落地 + 图块/点位事件视图 + 存读档迁移
**Wave 2** *(blocked on Wave 1 completion)*
- [x] 01-02-PLAN.md — 执行器接口用户确认(checkpoint)+ 执行器实现 + 删除旧 ITrigger(D-13)+ CoreState 装配
**Wave 3** *(blocked on Wave 2 completion)*
- [x] 01-03-PLAN.md — moverImpl 踩踏触发重写为事件执行 + 阶段验收
**Wave 8** *(blocked on completed event ingestion, dispatch, and persistence gap plans)*
- [x] 01-11-PLAN.md — CoreState legacy map initialization selects eventLayer; existing source-aware dispatch remains reachable
**Wave 9** *(blocked on Wave 8 completion)*
- [x] 01-12-PLAN.md — Phase-owned type and CRLF/Prettier gap closure
### Phase 2: 寻路系统
**Goal**: 引擎支持自动寻路,移动端点击地图即可触发移动
**Depends on**: Phase 1
**Requirements**: PATH-01, PATH-02
**Success Criteria** (what must be TRUE):
1. 角色能在地图上自动寻路移动到指定格
2. 移动端点击地图上的可达格时,角色自动寻路移动到该格
3. 寻路正确避开不可通行格(碰撞/障碍/墙体)
**Plans**: 5/5 plans executed
**Scope correction (2026-09-10):** 用户审查确认本阶段不交付未授权的 `HeroPathfinding` L3 勇士封装;当前阶段保留 L2 寻路核心、共享通行性谓词与 DataCommon 方向映射依赖,勇士或渲染侧接线不作为本阶段实现内容。
**UI hint**: yes
Plans:
- [x] 02-01-PLAN.md — 接口草案 + mover.ts:651 缺陷调查 + 回归脚手架 + D-07 用户拍板关卡(checkpoint)
- [x] 02-02-PLAN.md — L0 坐标回写缺陷修复 + L2 寻路核心(有向图 + 最小损失 + 仅取路径 + 回退策略槽位)
- [x] 02-03-PLAN.md — L3 接线(逐步/瞬移/回退默认策略/D-08 双语义/打断接管)+ barrel/logger 装配 + 阶段门禁
- [x] 02-04-PLAN.md — 恢复用户授权的 path/types.ts 契约并收口 moverImpl TS18047
- [x] 02-05-PLAN.md — 稳定全量 Vitest 门禁并提供非 watch 测试命令
**Wave 1**
- [x] 02-01-PLAN.md — 接口草案与拍板关卡(autonomous: false)
**Wave 2** *(blocked on Wave 1 用户拍板)*
- [x] 02-02-PLAN.md — L0 修复 + L2 寻路核心
**Wave 3** *(blocked on Wave 2)*
- [x] 02-03-PLAN.md — L3 接线与阶段门禁
### Wave 4 *(gap closure; blocked on Wave 3 completion)*
- [x] 02-04-PLAN.md — 用户契约范围与阶段类型错误收口
- [x] 02-05-PLAN.md — 全套件超时与跳过测试门禁收口
### Phase 3: 数据端完成
**Goal**: 数据端 L0–L3 接口实现完成,数据层各系统可用并可在 Node 环境独立运行回放验证
**Depends on**: Phase 2
**Requirements**: DATA-01
**Success Criteria** (what must be TRUE):
1. 用户设计的 L0–L3 数据层接口全部落地,地图/角色/敌人/flag/战斗/触发器/存档/回放各系统可用
2. 数据端可在 Node 环境独立运行回放验证,无 DOM 依赖
3. 数据端与渲染端保持双端分离,渲染相关代码经 `r()`/`rf()` 门控或走 hook,渲染端不向数据端推送更新
4. 接口设计由用户主导,AI 仅负责实现
**Plans**: 4/6 plans executed
Plans:
- [x] 03-01-PLAN.md — Node-safe CoreState、内部 legacy 依赖边界与最小 replay tracer
- [x] 03-02-PLAN.md — 八个事件内建函数契约 checkpoint 与最小注册实现
- [x] 03-03-PLAN.md — 稳定 replay enum、异步 command 与 top-level 注册
- [ ] 03-04-PLAN.md — 固定 Node 回放 fixture、首分歧 thrown diagnostic 与最终快照
- [ ] 03-05-PLAN.md — DATA-01 focused closure 与四包 type/circular 最终门禁
- [x] 03-06-PLAN.md — Tile events contract 与 legacy conversion 收口
**Wave 1**
- [x] 03-01-PLAN.md — Node-safe CoreState、内部 legacy 依赖边界与最小 replay tracer
**Wave 2** *(blocked on Wave 1 completion)*
- [x] 03-02-PLAN.md — 八个事件内建函数契约 checkpoint 与最小注册实现
- [x] 03-06-PLAN.md — Tile events contract 与 legacy conversion 收口
**Wave 3** *(blocked on Wave 2 completion)*
- [ ] 03-03-PLAN.md — 稳定 replay enum、异步 command 与 top-level 注册
**Wave 4** *(blocked on Wave 3 completion)*
- [ ] 03-04-PLAN.md — 固定 Node 回放 fixture、首分歧 thrown diagnostic 与最终快照
**Wave 5** *(blocked on Wave 4 completion)*
- [ ] 03-05-PLAN.md — DATA-01 focused closure 与四包 type/circular 最终门禁
### Phase 4: 渲染适配与双布局
**Goal**: 渲染端通过新数据层接口驱动,并同时支持移动端与桌面端布局
**Depends on**: Phase 3
**Requirements**: REND-01, REND-02
**Success Criteria** (what must be TRUE):
1. 用新数据层接口加载一张地图后,已重构的渲染端能正确渲染该地图场景
2. 桌面端布局下,地图、角色、界面元素正常显示并可操作
3. 移动端(窄屏)布局下,同一场景正常显示且可操作
4. 数据端与渲染端保持双端分离——数据端无 DOM,仍可在 Node 环境跑回放验证
**Plans**: TBD
**UI hint**: yes
### Phase 5: Legacy 移植
**Goal**: 删除被新接口覆盖的 legacy 系统,迁移仍需要的内容
**Depends on**: Phases 1-4
**Requirements**: LEGACY-01, LEGACY-02
**Success Criteria** (what must be TRUE):
1. 被新接口覆盖的 legacy 系统已删除,代码中无残留引用
2. 仍需要的 legacy 内容已迁移到新接口
3. 仅当无新接口覆盖时才新增接口,且接口设计经用户 review
4. 移植后引擎仍能完整跑通一部魔塔,无功能回归
**Plans**: TBD
### Phase 6: 单元测试
**Goal**: 为核心系统(数据层等)补齐单元测试
**Depends on**: Phases 1-5
**Requirements**: TEST-01
**Success Criteria** (what must be TRUE):
1. 核心数据层系统有单元测试覆盖
2. 测试覆盖关键行为(战斗伤害、触发器、寻路、事件等)
3. 测试在本地可运行且全部通过
4. 测试由 AI 编写并运行,通过验证后可提交
**Plans**: TBD
## Progress
**Execution Order:**
Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6
| Phase | Plans Complete | Status | Completed |
|-------|----------------|--------|-----------|
| 1. 事件系统 | 13/13 | In Progress| |
| 2. 寻路系统 | 5/5 | In Progress| |
| 3. 数据端完成 | 4/6 | In Progress| |
| 4. 渲染适配与双布局 | 0/TBD | Not started | - |
| 5. Legacy 移植 | 0/TBD | Not started | - |
| 6. 单元测试 | 0/TBD | Not started | - |