mirror of
https://github.com/motajs/template.git
synced 2026-09-13 10:18:50 +08:00
4.4 KiB
4.4 KiB
魔塔游戏引擎(mota-ts)
What This Is
一个完整的、数据驱动的、可复用的魔塔(Mota / Tower of the Sorcerer)游戏引擎。引擎在 mota-ts pnpm monorepo 中从旧引擎逐步重构而来,当前仍在建设中。它由运行时核心(数据驱动)+ 渲染表现层组成,能够驱动一部魔塔作品从开局到结局完整可玩;配套的可视化编辑器(blockly 式低代码)位于独立项目,不在本仓库。
Core Value
引擎能完整跑通一部魔塔——开局到结局,存档、战斗、地图、事件、剧情全链路可玩。
Requirements
Validated
- ✓ 分层架构:
src → packages-user → packages单向依赖 — 现有 - ✓
Mota模块注册表(运行时 DI 容器)— 现有 - ✓ 数据端 / 渲染端双端分离(数据端可在 Node 中独立跑回放验证)— 现有
- ✓ 渲染引擎(WebGL2 + 自定义 Vue renderer)— 已重构完成
- ✓ 数据层 L0–L3(data-common / data-base / data-system / data-state)— 接口设计进行中
- ✓
SaveSystem(Dexie)/ReplaySystem(回放验证)— 现有 - ✓ 战斗伤害系统 + 触发器注册表 — 现有
- ✓ audio / animate / loader / system(热键与 UI)— 现有
Active
- 事件系统:低代码(blockly 式)目标,面向初学者,仅覆盖简单场景,不为复杂场景过度设计
- 寻路系统:自动寻路,移动端点击地图触发移动
- 渲染端适配:新数据层 ↔ 已重构的渲染端对接
- 移动端 + 桌面端双布局:渲染端支持两种布局
- legacy 内容移植:删除被新接口覆盖的旧系统,迁移相关内容;无覆盖才新增接口
- 单元测试:为重构后的引擎补齐单测(由 AI 完成)
- 收尾工作:系统完成后随测试逐步发现的零碎项,不提前规划
Out of Scope
- 可视化编辑器 — 位于独立项目,不在本仓库
- 复杂场景的通用事件表达能力 — 事件系统定位为初学者抽象,避免为提高表达力走偏
Context
- 技术栈:TypeScript 6 + Vue 3 + 自研 WebGL2 渲染器 + Vite 7 + pnpm 10 monorepo;数据端独立打包为 IIFE 供 Node 回放验证。
- 重构背景:从旧 mota-js 运行时(
public/)逐步重构,通过Patch桥接 legacy 全局变量。渲染端先完成重构,数据端接口设计中。 - 双端约束:数据端无 DOM;渲染相关代码必须用
r()/rf()门控或走hook事件,渲染端被动、不向数据端推送更新。 - 协作模型:接口/架构设计由用户主导;AI 负责接口实现与单元测试;AI 可在验证通过后自行创建 git commit,无需用户逐次审批。
Constraints
- 技术栈:TypeScript + Vue 3 + WebGL2 + Vite + pnpm(固定,重构延续)
- 协作分工:AI 不做接口设计,仅做实现与测试
- 代码质量:strict 模式、禁用
as断言、logger 数字错误码、禁止循环依赖与模块顶层副作用 - Git:实现通过验证后可由 AI 自行创建 git commit;验证未通过不得提交
Key Decisions
| Decision | Rationale | Outcome |
|---|---|---|
| 数据层接口设计由用户完成,AI 仅实现 | 保证接口设计质量 | — Pending |
| 渲染层先于数据层完成重构 | 从旧引擎逐步重构的既定顺序 | — Pending |
| 事件系统采用 blockly 式低代码,仅覆盖简单场景 | 面向初学者,避免过度设计 | — Pending |
| 引擎含编辑器,但编辑器在独立项目 | 职责边界清晰 | — Pending |
| AI 可在验证通过后自行创建 git commit | 以自动化验证替代逐次审批,降低碎片化提交成本 | — Pending |
Evolution
This document evolves at phase transitions and milestone boundaries.
After each phase transition (via /gsd-transition):
- Requirements invalidated? → Move to Out of Scope with reason
- Requirements validated? → Move to Validated with phase reference
- New requirements emerged? → Add to Active
- Decisions to log? → Add to Key Decisions
- "What This Is" still accurate? → Update if drifted
After each milestone (via /gsd-complete-milestone):
- Full review of all sections
- Core Value check — still the right priority?
- Audit Out of Scope — reasons still valid?
- Update Context with current state
Last updated: 2026-09-07 after initialization