v0.7: CrystalOrb Canvas 粒子系统升级 + 角色属性系统(四维)

CrystalOrb 升级(P0 视觉震撼):
- 从 CSS 动画重写为 Canvas 2D 粒子系统
- 环绕能量粒子(3层32个,emerald/fuchsia/rose,带拖尾)
- 环境星尘(40个,闪烁漂移)
- 点击爆发粒子 + 冲击波环(连击解锁更多层)
- 晶核辉光呼吸 + 3层六边形纹理 + 鼠标视差
- VLM 视觉评分 8/10

角色属性系统(P1 RPG 深度):
- 新增 attributes.ts 逻辑层 + AttributesPanel UI
- 四维属性:探索力/智慧/勇气/灵感(emerald/fuchsia/amber/rose)
- 两区加成公式(0-50线性,50-100递减)
- 飞升获得属性点(ascensions×2+1),手动分配
- 完成活动获得属性经验,自动升级
- 接入 pulse/clickNode/resolveCurrentNode/grantCruiseReward/tickTide
- 旧存档兼容(migrateAttributes)
- 新增 2 项成就 + 第 8 个标签页「角色」
- VLM 视觉评分 7-8/10

lint 零错误;HTTP 200
This commit is contained in:
2026-06-23 21:00:42 +00:00
parent 8474f4caa7
commit 4545fe380b
11 changed files with 1812 additions and 159 deletions
+115 -7
View File
@@ -9,16 +9,15 @@
### 概况
- **项目**:回响星核 / Echo Nexus — 深空考古放置策略游戏
- **一句话**:自治无人机采矿 → 解码记忆晶体(原创共振谜题)→ 拼凑碎片叙事 → 飞升多周目。差异化:解码谜题驱动叙事涌现,全息晶体 + 深空粒子美学。
- **当前版本****v0.6**dev 服务器版本号已同步
- **当前版本****v0.7**CrystalOrb Canvas 粒子系统 + 角色属性系统
- **在线游玩**https://gitea-pages.atdunbg.xyz/Super_Z/echo-nexus/
- **仓库**https://git.atdunbg.xyz/Super_Z/echo-nexus
- **技术栈**Next.js 16 (App Router) + TypeScript + Tailwind + shadcn/ui + Canvas 2D + Zustand + Web Audio API
- **定时任务**:每 15 分钟一次 `webDevReview`自动 QA + 迭代开发)。注意:该任务每次跑完会被系统自动清除,需定期重建
- **定时任务**:每 15 分钟一次 `webDevReview``fixed_rate` + `"900"` 秒,priority=10job_id 228266)。正常完成不会被删除,无需自持续机制
### 状态判断
- dev 服务器运行正常(HTTP 200,编译 < 250ms
- v0.6 核心功能(深空巡航 Canvas 2D 实时玩法)已上线,UI 偏移/重叠 BUG 已修复
- 上一轮因对话上下文截断,CrystalOrb Canvas 粒子系统升级**未完成**,是下一阶段第一优先级
- v0.7 两大新功能已完成:CrystalOrb Canvas 粒子系统升级(VLM 8/10+ 角色属性系统(VLM 7/10
- 系统总体稳定,无阻塞性 bug,可继续推进新功能
### 已完成版本里程碑(精简)
@@ -34,7 +33,8 @@
| v0.5 | 深空信标(每日挑战 + 本地排行榜 Top20 + 7 标签页 + 编年史历史 BUG 修复)|
| v0.5.1 | 静态部署 Gitea Pages + 新手教程系统(7 步聚光灯引导)+ UI 间距优化 |
| v0.5.2 | 离线收益报告弹窗 + 标签页 UI 重设计 + persist rehydrate 竞态修复 |
| v0.6 | **深空巡航 Canvas 2D 实时玩法** + UI 偏移重叠修复(见下方详细记录)|
| v0.6 | 深空巡航 Canvas 2D 实时玩法 + UI 偏移重叠修复 |
| **v0.7** | **CrystalOrb Canvas 粒子系统升级 + 角色属性系统(四维)** |
### 核心系统清单(8 大系统)
1. **放置采矿** — 中央晶体球 + 主动脉冲 + 连击加成(`CrystalOrb.tsx`
@@ -45,13 +45,63 @@
6. **星图天文台** — 飞升后 3 选 1 天赋 draft,跨周目永久生效,18 个天赋(`ConstellationPanel.tsx` + `constellation.ts`
7. **回响编年史** — 跨周目叙事时间轴,5 纪元循环命名(`ChronicleDialog.tsx` + `chronicle.ts`
8. **深空信标** — 每日挑战 + 本地排行榜 Top20(`BeaconPanel.tsx` + `beacon.ts`
9. **深空巡航** — Canvas 2D 实时玩法,飞船操控/陨石躲避/星门通关(`CruiseMode.tsx` + `cruise.ts`)【v0.6 新增
9. **深空巡航** — Canvas 2D 实时玩法,飞船操控/陨石躲避/星门通关(`CruiseMode.tsx` + `cruise.ts`)【v0.6】
10. **角色属性系统** — 四维属性(探索力/智慧/勇气/灵感),飞升获得属性点,影响所有系统(`AttributesPanel.tsx` + `attributes.ts`)【v0.7 新增】
---
## 二、当前目标 / 已完成的修改 / 验证结果
### v0.6 深空巡航 Canvas 2D 实时玩法(已完成)
### v0.7 CrystalOrb Canvas 粒子系统升级(已完成)
**动机**:P0 优先级 — 将中央晶体球从 CSS 动画升级为 Canvas 粒子视觉盛宴,提升视觉震撼。
**重写文件**`src/components/game/CrystalOrb.tsx`
- 从纯 CSS 动画升级为 Canvas 2D 粒子系统
- **多层粒子**
- 环绕能量粒子(3层14/10/8个,emerald/fuchsia/rose三色,不同速度方向环绕晶核,带拖尾)
- 环境星尘(40个,缓慢漂移 + 闪烁)
- 点击爆发粒子(10-30个径向发散,颜色随连击等级变色)
- 冲击波环(点击触发1-3层错峰扩散,连击≥3/5解锁更多层)
- **晶核升级**:径向渐变辉光 + 3层六边形纹理旋转 + 高光 + 鼠标视差偏移
- **呼吸动画**:晶核 + 外层辉光随时间呼吸(sin波)
- **进度环**SVG渐变环(emerald→fuchsia→rose)保留
- **交互保留**:点击脉冲、连击Toast、浮动数字、音效、`data-tut="crystal-orb"` 锚点
- **性能**DPR cap 2ResizeObserver 自适应,requestAnimationFrame 60fps
**QA 验证**agent-browser + VLM):
- VLM 视觉评分 **8/10**:晶体球清晰可见,多层辉光,环绕粒子动态自然,无渲染问题
- 点击交互:冲击波环 ✅ + 爆发粒子 ✅,评分 7/10
- lint 零错误;HTTP 200
### v0.7 角色属性系统(已完成)
**动机**:P1 优先级 — 增加RPG深度,四维属性影响所有游戏系统。
**新增文件**
- `src/lib/game/attributes.ts`~330行逻辑层):CharacterAttributes/AttributeProgress 类型、ATTRIBUTE_CONFIG 元信息、getAttributeBonus 两区加成公式(0-50线性+0.5%/点,50-100递减+0.2%/点)、getAllBonuses 12项修饰器、levelUpCheck 自动升级、computePrestigeAttrPoints、migrateAttributes 旧存档兼容
- `src/components/game/AttributesPanel.tsx`(~330行 UI):四维卡片网格(小屏2×2/大屏1×4)、图标+中英文名+Lv.badge+数值/100+加成%+经验条+影响列表+分配按钮、顶部待分配点数badge闪烁、底部总览+12项修饰器明细
**修改文件**
- `types.ts`GameState 新增 attributes/attributeProgress/pendingAttrPoints
- `config.ts`INITIAL_STATE 补全默认值
- `engine.ts`recomputeStats 聚合属性加成;performPrestige 发放属性点(ascensions×2+1
- `gameStore.ts`:新增 allocateAttribute/gainAttributeExp actionspulse/clickNode/autoDecodeTick/resolveCurrentNode/grantCruiseReward/tickTide 全部接入属性经验;init() 调用 migrateAttributes
- `achievements.ts`:新增 ach_attr_total_50 + ach_attr_max_100 两项成就
- `page.tsx`grid-cols-7→8,新增「角色」标签页(User图标),红点提示,StatsPanel新增5行属性行,版本号 v0.6→v0.7
**四维属性设计**
- 探索力(emerald):探险力+X%/巡航飞船速度+X%
- 智慧(fuchsia):解码步数+X/洞见+X%/自动解码周期-X%
- 勇气(amber):探险生命+X/BOSS胜率+X%/巡航护盾+X
- 灵感(rose):接触率+X/星潮概率+X/脉冲连击+X%
**QA 验证**agent-browser + VLM):
- VLM 视觉评分 **7/10**(面板)/ **8/10**(待分配状态):四维卡片可见、数值/等级/加成/经验条齐全、四色全息
- 功能验证:setState pendingAttrPoints=5 → 显示5点待分配 → 点击分配按钮 → exploration 0→1, pending 5→4 ✅
- lint 零错误;HTTP 200
---
### v0.6 深空巡航 Canvas 2D 实时玩法(历史记录)
**动机**:回应用户反馈「玩法太单调(全是点点点)」+「视觉震撼不足」——首次引入实时操作玩法。
**新增文件**
@@ -161,3 +211,61 @@
- `08-星图天文台系统-v0.3.1.md`
- `09-回响编年史系统-v0.4.md`
- `10-深空信标系统-v0.5.md`
---
Task ID: 7
Agent: full-stack-developer
Task: 角色属性系统(探索力/智慧/勇气/灵感)
Work Log:
- 阅读 worklog.md 了解 v0.6 项目背景,确认 8 大系统架构与四色全息色彩规范
- 新建 `src/lib/game/attributes.ts` 逻辑层(~330 行):
- 定义 CharacterAttributes/AttributeProgress/AttributeKey 类型 + ATTRIBUTE_CONFIG 元信息
- getAttributeBonus 线性+递减两区加成公式(0-50 每 10 点 +5%50-100 每点 +2%
- getAllBonuses 返回 12 个修饰器(探险力/巡航速度/解码步数/洞见/自动解码周期/探险生命/BOSS 胜率/巡航护盾/接触率/星潮触发/脉冲连击/产能)
- levelUpCheck 自动跨多级 + expRequiredForLevel + computePrestigeAttrPoints + migrateAttributes 兼容
- 扩展 `src/lib/game/types.ts` GameState:新增 attributes/attributeProgress/pendingAttrPoints
- 扩展 `src/lib/game/config.ts` INITIAL_STATE:补全默认值(0 数值 + 空 progress
- 扩展 `src/lib/game/engine.ts`
- recomputeStats 末尾聚合 am.crystalsPerSecMult/insightMultAdd/contactRateMult/decodeStepsBonus
- performPrestige 保留 attributes 数值,清空 attributeProgress,发放 ascensions × 2 + 1 点属性点
- createInitialState 每次返回全新对象避免引用共享
- 扩展 `src/store/gameStore.ts`(核心改造,10+ 处 syncStats 调用全部补 attributes 参数):
- pulse:连击 ≥3 给灵感经验 + 脉冲威力乘灵感连击加成
- clickNode 完成:给智慧经验(tier × 2)
- autoDecodeTick:智慧经验 +1 + 自动解码周期受 am.autoDecodeIntervalMult 影响
- startExpedition:探险力乘 am.expeditionPowerMult,生命加 am.expeditionHpBonus
- resolveCurrentNodeBOSS 节点包装 RNG 提升 +am.bossWinRateBonus 胜率;战斗胜利给勇气+探索力经验
- grantCruiseReward:按总奖励量给探索力+勇气经验
- tickTide:灵感 am.tideTriggerBonus 缩短星潮间隙(上限 30%)
- init() 调用 migrateAttributes 补全旧存档
- 新增 allocateAttribute / gainAttributeExp 两个 action
- 新建 `src/components/game/AttributesPanel.tsx` UI 面板(~330 行):
- 四维卡片网格(小屏 2×2,大屏 1×4)
- 每张卡片:图标 + 中英文名 + Lv.badge + 数值/100 + 加成% + 经验条 + 影响列表 + 「+分配」按钮
- 顶部待分配点数 badgependingAttrPoints > 0 时 echo-pending-pulse 闪烁动画)
- 底部总等级/总加成概览 + 12 个修饰器明细
- 4 色辉光边框(emerald/fuchsia/amber/rose),顶角光晕装饰
- 接入 `src/app/page.tsx`
- grid-cols-7 → grid-cols-8,新增第 8 个「角色」TabsTriggerUser 图标,渐变主题)
- pendingAttrPoints > 0 时显示 rose 红点提示
- 渲染 AttributesPanel
- StatsPanel 新增 5 行属性行(探索力/智慧/勇气/灵感/待分配点)
- 版本号 v0.6 → v0.7
- 新增 `src/lib/game/achievements.ts` 2 项成就:
- ach_attr_total_50(四维觉醒):总属性 ≥ 50 → 产能+6%/洞见+6%
- ach_attr_max_100(维度精通):任一属性 100 → 产能+12%/洞见+10%
- 写入 `agent-ctx/7-full-stack-developer.md` 工作记录
- 最终验证:lint 零错误 + dev 服务器 HTTP 200 + 编译 < 250ms
Stage Summary:
- ✅ 角色属性系统 v0.7 P1 全部完成
- ✅ 新增 2 文件(attributes.ts + AttributesPanel.tsx),修改 6 文件(types/config/engine/gameStore/achievements/page
- ✅ 四维属性完整接入游戏各系统(探险/解码/脉冲/巡航/星潮)
- ✅ 飞升属性点公式 = ascensions × 2 + 1;经验累积自动升级(每级 10×level)
- ✅ 旧存档兼容(migrateAttributes 补全字段,同步 level 与 attributes
- ✅ lint 零错误 + HTTP 200 + 编译 < 250ms
- ✅ 严格四色全息(emerald/fuchsia/amber/rose),零蓝色/靛色
- ✅ 8 标签页 + 巡航按钮全部保留,data-tut 锚点未破坏
- ✅ 待分配点数时标签页 rose 红点提示 + 顶部 badge 闪烁