ECS (Entity Component System)
+特点:实体只是ID,数据存在组件,系统处理逻辑
+优点:高性能,组合灵活,适合复杂游戏
+缺点:学习曲线陡,简单游戏可能过度设计
+diff --git a/.gitignore b/.gitignore index 8da68ed..01ad4bc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ node_modules .cache dist -.idea \ No newline at end of file +.idea.superpowers/ diff --git a/.superpowers/brainstorm/55071-1776569663/content/architecture-options.html b/.superpowers/brainstorm/55071-1776569663/content/architecture-options.html new file mode 100644 index 0000000..0f50400 --- /dev/null +++ b/.superpowers/brainstorm/55071-1776569663/content/architecture-options.html @@ -0,0 +1,34 @@ +
全面重构,你倾向哪种架构风格?
+ + + +我个人推荐 C - 模块化分层,既保持了一定简洁性,又有足够的扩展性,适合框架逐步演化。你的选择?
diff --git a/.superpowers/brainstorm/55071-1776569663/content/current-architecture.html b/.superpowers/brainstorm/55071-1776569663/content/current-architecture.html new file mode 100644 index 0000000..3952120 --- /dev/null +++ b/.superpowers/brainstorm/55071-1776569663/content/current-architecture.html @@ -0,0 +1,104 @@ +现有代码结构分析
+ +我已经探索完代码,这是一个基于 PixiJS v8 的小游戏框架,已经具备了基本的场景管理、资源加载、组件系统。现在请回答我的第一个问题:
+ +框架还在演化中,目标是让自己用着舒服。哪些方面对你来说最重要?
+ + + +可以多选,点击已选项取消选择。选完告诉我就行。
diff --git a/.superpowers/brainstorm/55071-1776569663/content/proposed-architecture.html b/.superpowers/brainstorm/55071-1776569663/content/proposed-architecture.html new file mode 100644 index 0000000..4f39eaf --- /dev/null +++ b/.superpowers/brainstorm/55071-1776569663/content/proposed-architecture.html @@ -0,0 +1,80 @@ +清晰分层,每个模块职责单一,依赖明确
+ +这个架构你觉得对吗?方向是否符合你的预期?
+ + diff --git a/.superpowers/brainstorm/55071-1776569663/content/refactor-scope.html b/.superpowers/brainstorm/55071-1776569663/content/refactor-scope.html new file mode 100644 index 0000000..22d9134 --- /dev/null +++ b/.superpowers/brainstorm/55071-1776569663/content/refactor-scope.html @@ -0,0 +1,26 @@ +你希望重构的范围是多大?
+ + diff --git a/.superpowers/brainstorm/55071-1776569663/state/events b/.superpowers/brainstorm/55071-1776569663/state/events new file mode 100644 index 0000000..4a10f60 --- /dev/null +++ b/.superpowers/brainstorm/55071-1776569663/state/events @@ -0,0 +1 @@ +{"type":"click","text":"Y\n \n 方向正确,可以按这个设计来\n 认可这个分层架构,继续下一步写详细设计文档","choice":"approve","id":null,"timestamp":1776570444460} diff --git a/.superpowers/brainstorm/55071-1776569663/state/server-info b/.superpowers/brainstorm/55071-1776569663/state/server-info new file mode 100644 index 0000000..c5dccbc --- /dev/null +++ b/.superpowers/brainstorm/55071-1776569663/state/server-info @@ -0,0 +1 @@ +{"type":"server-started","port":50629,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:50629","screen_dir":"/home/dash/projects/pixi-demo/.superpowers/brainstorm/55071-1776569663/content","state_dir":"/home/dash/projects/pixi-demo/.superpowers/brainstorm/55071-1776569663/state"} diff --git a/.superpowers/brainstorm/55071-1776569663/state/server.log b/.superpowers/brainstorm/55071-1776569663/state/server.log new file mode 100644 index 0000000..3d35315 --- /dev/null +++ b/.superpowers/brainstorm/55071-1776569663/state/server.log @@ -0,0 +1,25 @@ +{"type":"server-started","port":50629,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:50629","screen_dir":"/home/dash/projects/pixi-demo/.superpowers/brainstorm/55071-1776569663/content","state_dir":"/home/dash/projects/pixi-demo/.superpowers/brainstorm/55071-1776569663/state"} +{"type":"screen-added","file":"/home/dash/projects/pixi-demo/.superpowers/brainstorm/55071-1776569663/content/current-architecture.html"} +{"source":"user-event","type":"click","text":"C\n \n 不确定/探索中\n 框架还在演化,想先做个好的基础再看","choice":"multiple","id":null,"timestamp":1776570052484} +{"source":"user-event","type":"click","text":"C\n \n 不确定/探索中\n 框架还在演化,想先做个好的基础再看","choice":"multiple","id":null,"timestamp":1776570060740} +{"source":"user-event","type":"click","text":"C\n \n 不确定/探索中\n 框架还在演化,想先做个好的基础再看","choice":"multiple","id":null,"timestamp":1776570060932} +{"type":"screen-added","file":"/home/dash/projects/pixi-demo/.superpowers/brainstorm/55071-1776569663/content/dev-experience.html"} +{"source":"user-event","type":"click","text":"D\n \n 性能优化\n 自动内存管理,资源释放,避免泄漏","choice":"performance","id":null,"timestamp":1776570230871} +{"source":"user-event","type":"click","text":"B\n \n 简洁易用\n 少写样板代码,API 直观,快速开始","choice":"simplicity","id":null,"timestamp":1776570232744} +{"source":"user-event","type":"click","text":"A\n \n 类型安全 / TypeScript\n 严格的类型定义,良好的自动补全,少踩坑","choice":"typesafety","id":null,"timestamp":1776570233120} +{"source":"user-event","type":"click","text":"B\n \n 简洁易用\n 少写样板代码,API 直观,快速开始","choice":"simplicity","id":null,"timestamp":1776570233496} +{"source":"user-event","type":"click","text":"B\n \n 简洁易用\n 少写样板代码,API 直观,快速开始","choice":"simplicity","id":null,"timestamp":1776570241056} +{"source":"user-event","type":"click","text":"C\n \n 可扩展性\n 模块化设计,容易添加新功能和工具","choice":"extensible","id":null,"timestamp":1776570242440} +{"source":"user-event","type":"click","text":"C\n \n 可扩展性\n 模块化设计,容易添加新功能和工具","choice":"extensible","id":null,"timestamp":1776570246216} +{"source":"user-event","type":"click","text":"B\n \n 简洁易用\n 少写样板代码,API 直观,快速开始","choice":"simplicity","id":null,"timestamp":1776570246720} +{"source":"user-event","type":"click","text":"A\n \n 类型安全 / TypeScript\n 严格的类型定义,良好的自动补全,少踩坑","choice":"typesafety","id":null,"timestamp":1776570247856} +{"source":"user-event","type":"click","text":"A\n \n 类型安全 / TypeScript\n 严格的类型定义,良好的自动补全,少踩坑","choice":"typesafety","id":null,"timestamp":1776570249360} +{"source":"user-event","type":"click","text":"B\n \n 简洁易用\n 少写样板代码,API 直观,快速开始","choice":"simplicity","id":null,"timestamp":1776570253408} +{"source":"user-event","type":"click","text":"C\n \n 可扩展性\n 模块化设计,容易添加新功能和工具","choice":"extensible","id":null,"timestamp":1776570266728} +{"type":"screen-added","file":"/home/dash/projects/pixi-demo/.superpowers/brainstorm/55071-1776569663/content/refactor-scope.html"} +{"source":"user-event","type":"click","text":"C\n \n 全面架构重构\n 重新设计整体架构,建立更清晰的模块分层和依赖关系","choice":"full","id":null,"timestamp":1776570283578} +{"type":"screen-added","file":"/home/dash/projects/pixi-demo/.superpowers/brainstorm/55071-1776569663/content/architecture-options.html"} +{"source":"user-event","type":"click","text":"A\n \n ECS (Entity Component System)\n 特点:实体只是ID,数据存在组件,系统处理逻辑\n 优点:高性能,组合灵活,适合复杂游戏\n 缺点:学习曲线陡,简单游戏可能过度设计","choice":"ecs","id":null,"timestamp":1776570305210} +{"source":"user-event","type":"click","text":"C\n \n 模块化分层架构 (推荐)\n 特点:清晰划分核心层/业务层,依赖注入,事件总线\n 优点:平衡了简洁和可扩展,符合\"自己用着舒服\"的目标\n 缺点:比纯场景驱动多一点抽象","choice":"modular","id":null,"timestamp":1776570312321} +{"type":"screen-added","file":"/home/dash/projects/pixi-demo/.superpowers/brainstorm/55071-1776569663/content/proposed-architecture.html"} +{"source":"user-event","type":"click","text":"Y\n \n 方向正确,可以按这个设计来\n 认可这个分层架构,继续下一步写详细设计文档","choice":"approve","id":null,"timestamp":1776570444460} diff --git a/.superpowers/brainstorm/55071-1776569663/state/server.pid b/.superpowers/brainstorm/55071-1776569663/state/server.pid new file mode 100644 index 0000000..fb33e8a --- /dev/null +++ b/.superpowers/brainstorm/55071-1776569663/state/server.pid @@ -0,0 +1 @@ +55079 diff --git a/docs/superpowers/plans/2026-04-19-pixijs-framework-refactor-plan.md b/docs/superpowers/plans/2026-04-19-pixijs-framework-refactor-plan.md new file mode 100644 index 0000000..22d8402 --- /dev/null +++ b/docs/superpowers/plans/2026-04-19-pixijs-framework-refactor-plan.md @@ -0,0 +1,1766 @@ +# PixiJS 游戏框架重构实现计划 + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** 对现有的 PixiJS 游戏开发框架进行全面架构重构,实现清晰的分层模块化设计,提升开发体验。 + +**Architecture:** 采用分层架构,从下到上依次是 Core 核心层、Scene 场景层、Component 组件层、Utils 工具层,上层依赖下层。保留自动场景文件发现的特性。每个模块职责单一,接口清晰,完整 TypeScript 类型支持。 + +**Tech Stack:** PixiJS v8, TypeScript, @pixi/sound, @tweenjs/tween.js, Vite + +--- + +## 文件结构 + +新文件将按以下结构创建: + +``` +src/ +├── core/ # Core Layer - 核心层 +│ ├── Game.ts # 主应用类,维护 renderer/stage/ticker +│ ├── EventBus.ts # 事件总线 +│ ├── AssetManager.ts # 资源管理器,带引用计数 +│ └── Logger.ts # 日志工具 +├── scene/ # Scene Layer - 场景层 +│ ├── SceneManager.ts # 场景管理器 +│ ├── BaseScene.ts # 场景抽象基类 +│ └── types.ts # 场景相关类型定义 +├── components/ # Component Layer - 组件层 +│ ├── Button.ts # 按钮组件(重构) +│ ├── Label.ts # 文本标签组件(新增) +│ └── Panel.ts # 面板容器组件(新增) +├── utils/ # Utils Layer - 工具层 +│ ├── Position.ts # 定位对齐工具 +│ ├── Tween.ts # 动画补间封装 +│ ├── Sound.ts # 音频管理 +│ ├── Storage.ts # 本地存储封装 +│ └── MathUtils.ts # 常用数学工具 +├── enums/ # 枚举定义 +│ ├── SceneType.ts # 场景类型枚举 +│ └── Orientation.ts # 屏幕方向枚举 +├── types/ # 全局类型 +│ └── index.d.ts # 全局类型定义 +└── scenes/ # Game Content - 游戏场景 + └── **/page_*.ts # 自动发现场景文件 +``` + +--- + +## 任务分解 + +### Task 1: 创建枚举定义 + +**Files:** +- Create: `src/enums/SceneType.ts` +- Create: `src/enums/Orientation.ts` + +- [ ] **Step 1: 创建 SceneType 枚举** + +```typescript +export enum SceneType { + Normal = 0, // 普通场景 - 退出时销毁 + Resident = 1, // 常驻场景 - 只隐藏不销毁 +} +``` + +- [ ] **Step 2: 创建 Orientation 枚举** + +```typescript +export enum Orientation { + Landscape = "landscape", + Portrait = "portrait", +} +``` + +- [ ] **Step 3: Commit** + +```bash +git add src/enums/*.ts +git commit -m "feat: add enum definitions for SceneType and Orientation" +``` + +--- + +### Task 2: 创建全局类型定义 + +**Files:** +- Create: `src/types/index.d.ts` + +- [ ] **Step 1: 创建全局类型定义文件** + +```typescript +// 全局构造函数类型 +declare type Constructor