Files
echo-nexus/docs/08-星图天文台系统-v0.3.1.md

6.9 KiB
Executable File
Raw Permalink Blame History

v0.3.1 · 星图天文台(Constellation Observatory)元进程天赋系统

第二次回应 Issue #1「就一直连连看?」——为飞升循环加入 Slay the Spire 式 3 选 1 天赋 draft 跨周目永久生效,配合 Canvas 动态星图可视化,提供长期成长目标与策略选择。

一、设计动机

v0.3 星潮事件已为放置循环注入动态变化,但玩家仍缺长期 meta-progression 目标。本系统在飞升后触发:

  • 策略选择:3 选 1 的 draft 让每次飞升都有差异化构建方向
  • 永久成长:天赋跨周目保留,配合蓝图/成就形成三层加成
  • 视觉反馈:Canvas 动态星图,每解锁一个天赋就在对应星座点亮一颗星
  • 目标驱动:18 个天赋 + 2 个专属成就,给玩家清晰的中长期目标

二、系统架构

2.1 数据层(src/lib/game/constellation.ts

// 6 大星座 × 3 颗星 = 18 个天赋
type ConstellationCategory =
  | "mining" | "decoding" | "expedition"
  | "contact" | "economy" | "cosmic";

interface ConstellationPerk {
  id: string;          // c_min_1, c_dec_2, ...
  category: ConstellationCategory;
  name: string;
  desc: string;
  order: 1 | 2 | 3;    // 星座内位置
}

2.2 18 个天赋一览

类别 #1 #2 #3
翠·永动矿脉 永动钻头(产能+20% 深井网络(上限+50% 谐振熔炉(脉冲+50%
玫·光谱矩阵 光谱记忆(洞见+15% 步幅延展(步数+1 自动校准(自解-3s
琥·远征星图 维生护盾(生命+25% 信标矩阵(探险力+20% 能量共振(能量上限+1
紫·接触回响 接触共鸣(接触率+20% 飞升加速(门槛-10 蓝图回响(每蓝图+2%全属性)
灰·虚空市场 离线缓存(离线+15% 晶体富集(T2/T3+8% 星潮引导(间隙-10s
金·宇宙回响 飞升礼包(+30晶体/+5洞见) 二周目经验(解码+10% 全息共振(全产能+8%

2.3 修饰器聚合

constellationBonuses(perks: string[]): ConstellationModifiers 返回 19 项修饰器recomputeStats() / tickTide() / tick() / clickNode() / autoDecodeTick() / computeExpeditionPower() / computeExpeditionHp() 等所有相关用点处应用。

2.4 状态扩展

// types.ts
interface GameState {
  // ... 既有字段
  constellation: string[];              // 已解锁天赋 ID
  pendingPerkChoices: string[] | null;  // 飞升后待选 3 个
}

// config.ts INITIAL_STATE
constellation: [],
pendingPerkChoices: null,

2.5 飞升流程

performPrestige(state)
  ├─ 计算 newBp(蓝图数)
  ├─ rollPerkChoices(constellation) → 3 个不同类别的可选天赋
  ├─ 应用「飞升礼包」补偿(+30 晶体 / +5 洞见,若已解锁)
  ├─ 重置资源/技术/接触进度
  └─ 保留:fragments / totalDecoded / blueprints / achievements / constellation

飞升后 pendingPerkChoices 不为空 → ConstellationDialog 自动弹出 → 玩家选 1 → chooseConstellationPerk(perkId) 写入 constellation 并清空 pending。

三、UI 组件

3.1 ConstellationPanel(星图标签内容)

Canvas 动态渲染requestAnimationFrame 60fps):

  • 六边形布局 6 个星座中心点
  • 每星座内 3 颗星(三角形排布:order 1 顶部,2/3 底部)
  • 未解锁星:暗灰小点 + 弱光晕
  • 已解锁星:类别色填充 + 强光晕 + 4 道十字光线 + 闪烁动画
  • 同星座已解锁星之间:连接线(类别色 60% 透明度)
  • 星座 → 中心星核:虚线(已解锁 ≥1 时显示,呼吸效果)
  • 中心星核:紫红色径向渐变,半径随时间正弦呼吸
  • Hover:星点 14px 范围内显示 tooltip(天赋名/描述/类别/序号)

底部信息区

  • 6 类别图例条(彩色圆点 + 名称 + 已解锁/总数)
  • 已解锁天赋列表(彩色边框 + 名称 + 描述 + 类别标签)
  • 空状态:虚线边框卡片 + 引导文案

3.2 ConstellationDialog(飞升后 draft 模态)

  • 自动 openpendingPerkChoices 非空时
  • 3 张卡片:左侧类别色条 + 圆形首字图标 + 天赋名 + 类别徽章 + 描述
  • 选中动画:8 个粒子 ping + 卡片缩放 + 类别色发光
  • 「重新抽取」按钮:rerollPerkChoices(依然保证 3 不同类别)
  • 底部说明:「选择后永久保留,跨周目生效」

3.3 顶部「觉醒」按钮

pendingPerkChoices 存在时显示,fuchsia 边框 + animate-pulse,点击打开 ConstellationDialog。

四、平衡设计

4.1 单天赋强度

  • 每个天赋加成约 +15%~+25% 单项,避免数值膨胀
  • 「飞升礼包」给前期起飞资源(30 晶体 + 5 洞见)
  • 「全息共振」给全局 +8%,作为终极通用天赋

4.2 跨周目叠加

  • 18 个天赋全解锁 ≈ 总加成 200%300%(与 6 蓝图、14 成就叠加后约 5x8x
  • 配合飞升次数加成(每次 +15% 探险力、+10 生命),后期探险胜率显著提升

4.3 类别多样性

  • rollPerkChoices 第一轮强制不同类别,避免 3 选全是同类
  • 玩家可在 6 类别间自由构建:采矿流/解码流/探险流/速飞升流/经济流/全能流

五、QA 验证记录

测试项 结果
星图标签页渲染 6 类别图例 + Canvas + 空状态
对话框自动弹出 pendingPerkChoices 设置后立即开
3 卡片显示 来自 3 不同类别
点击天赋 constellation 添加,crystalsPerSec 提升,pending 清空
重新抽取 3 张新卡片(依然不同类别)
多天赋叠加 c_min_1+c_con_1 → 产能 1.416 / 接触率 1.2
6 类别成就触发 六分星辉 Toast 弹出
VLM 视觉确认 单星点亮(绿色永动矿脉)
lint 零错误
编译 < 200ms

六、与既有系统的协同

           飞升(Prestige)
              │
    ┌─────────┼─────────┐
    ▼         ▼         ▼
  蓝图+    星图天赋+   成就+
  (5%/3%/4%) (各天赋)  (各成就)
    │         │         │
    └─────────┴─────────┘
              │
              ▼
        recomputeStats()
              │
    ┌─────────┼─────────┐
    ▼         ▼         ▼
  产能    解码奖励    探险力/生命
              │
              ▼
        星潮修饰(即时乘)
              │
              ▼
        实际游戏体验

七、后续扩展方向

  • 天赋觉醒动画:选择天赋时全屏闪光 + 星图缩放
  • 天赋重置:消耗稀有资源重置 constellation,重新选择
  • 隐藏天赋:达成特殊条件解锁(如「飞升 10 次自选 1 天赋」)
  • 天赋树依赖order 2 需要 order 1 解锁(增加构建深度)
  • socket 同步:多人共享同一星图,协作解锁