Files
echo-nexus/docs/10-深空信标系统-v0.5.md

152 lines
7.3 KiB
Markdown
Executable File
Raw Permalink 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.
# 深空信标系统 · v0.5(每日挑战 + 本地排行榜)
> 版本:v0.5 · 日期:2026-06-23
> 路线图对应:v0.5 排行榜(本地版先行)+ 每日挑战动机注入
## 动机
v0.4 编年史系统完成后,游戏已有 6 大玩法层(采矿/解码/技术树/图谱/飞升 + 探险 + 星图 + 星潮 + 编年史),但缺少"今日目标"型的短期动机。玩家进入游戏后没有明确的"今天该做什么"指引。
本版本新增**深空信标(Deep Space Beacon**系统:
- **每日挑战**:基于 UTC 日期种子的确定性挑战,全球同一天同一挑战,每天 0 点(UTC)刷新
- **本地排行榜**:记录历次挑战得分,Top 20,纯 localStorage 持久化,无需后端
- 给放置循环注入"今日目标",并为 v0.5 路线图的"云排行榜"奠定数据结构基础
## 核心设计
### 每日挑战(Daily Challenge
- **确定性生成**`generateDailyChallenge(now)` 基于 UTC 日期 keyYYYY-MM-DD)派生 FNV-1a 种子 → mulberry32 PRNG,保证同一天全球玩家看到同一挑战
- **5 种挑战类型**
| 类型 | 标签 | 目标范围 | 单位 |
|------|------|----------|------|
| `decode` | 解码协议 | 6-15 × 难度倍率 | 颗 |
| `expedition` | 远征指令 | 1-3 × 难度倍率 | 次 |
| `pulse` | 脉冲任务 | 20-49 × 难度倍率 | 次 |
| `boss` | 猎杀契约 | 1 × 难度倍率 | 处 |
| `insight` | 洞见采集 | 40-119 × 难度倍率 | 点 |
- **3 档难度**(加权抽取):
| 难度 | 标签 | 倍率 | 权重 | 颜色 |
|------|------|------|------|------|
| `routine` | 常规信标 | ×1.0 | 55% | 翠 |
| `anomaly` | 异常波动 | ×1.6 | 33% | 琥 |
| `singular` | 奇点回响 | ×2.4 | 12% | 玫 |
- **奖励**:完成时按类型 + 难度发放洞见 / 接触进度
- **倒计时**:显示距 UTC 次日 0 点的 HH:MM:SS 倒计时
### 得分计算
```
得分 = 完成度 × 1000 × 难度倍率 + 速度奖励
速度奖励 = max(0, 500 - 完成时长秒 × 0.5) // 仅完成时计算
```
例:常规难度 × 1.090 秒完成 → 1000 + (500 - 45) = 1455 分
### 进度追踪(独立 localStorage
- 进度独立存储于 `echo-nexus-beacon-prog-v1`**不污染 GameState**,避免触发存档迁移
- 在 gameStore 关键动作后调用 `trackBeacon(type, delta)`
- `pulse`:每次脉冲 +1
- `decode`:每次解码完成 +1(手动 + 自动解码均计)
- `expedition`:每次探险结束 +1(胜负都计)
- `boss`:每次 BOSS 胜利 +1
- `insight`:每次洞见获取按数值累加
- 挑战类型与今日挑战不匹配时 `trackBeacon` 直接 return,零开销
### 本地排行榜
- 存储于 `echo-nexus-beacon-lb-v1`Top 20,按得分降序
- 每条记录含:时间戳 / 日期 key / 挑战类型 / 难度 / 完成度 / 得分 / 用时
- UI:奖牌图标(1st 金 / 2nd 银 / 3rd 铜)+ 难度色点 + 类型名 + 用时 + 得分
- 今日记录高亮(fuchsia 边框)
## 文件变更
### 新增
- `src/lib/game/beacon.ts`~290 行):核心逻辑模块
- `generateDailyChallenge()` — 确定性挑战生成
- `computeBeaconScore()` — 得分计算
- `loadLeaderboard()` / `pushLeaderboardEntry()` — 排行榜 CRUD
- `loadDailyProgress()` / `saveDailyProgress()` / `addBeaconProgress()` — 进度 CRUD
- `claimBeaconReward()` — 领取奖励 + 推送排行榜
- `msUntilNextDay()` / `formatCountdown()` — 倒计时
- `src/components/game/BeaconPanel.tsx`~280 行):UI 面板
- 每日挑战卡片(难度色 + 脉冲环动画 + 进度条 + 领取按钮)
- 本地排行榜(Top 20 + 奖牌 + 今日高亮)
- 难度图例
- 倒计时
### 修改
- `src/store/gameStore.ts`
- 新增 `trackBeacon()` 模块级辅助函数
- 新增 `grantBeaconReward(insights, contact)` action
-`pulse` / `clickNode`(完成) / `autoDecodeTick` / `resolveCurrentNode` 后接入 `trackBeacon`
- `src/app/page.tsx`
- 新增第 7 个标签页「信标」(grid-cols-7
- 新增 `beaconClaimable` 状态(2s 轮询,可领取时显示绿点)
- StatsPanel 新增「信标最高分」行
- 版本号 v0.4 → v0.5
- `src/lib/game/chronicle.ts`
- 导出 `buildLore()`(原私有)
- 新增 `regenerateLoreFromEntry(entry)` — 显示时重新生成 lore,修复历史条目中 `tide_ruins` 等原始键名
- `src/components/game/ChronicleDialog.tsx`:叙事文本改用 `regenerateLoreFromEntry(entry)` 替代 `entry.lore`
## BUG 修复
### 编年史历史条目显示原始 tide 键名
- **现象**:v0.4 之前创建的编年史条目 lore 中显示 `tide_ruins` 而非「遗迹共振」(最新条目已修复,旧条目未回填)
- **根因**:lore 文本在条目创建时一次性生成并存储,历史条目存储了修复前的错误文本
- **修复**:新增 `regenerateLoreFromEntry()`,在 ChronicleDialog 显示时从 entry 的结构化数据(tidesThisRun / perksThisAscension / milestones)重新生成 lore,保证历史与未来条目命名一致
- **验证**:第二纪元 lore 现正确显示「遗迹共振、晶体潮、虚空低语、谐振风暴」
## QA 验证(agent-browser + VLM
### 编年史 BUG 修复验证
- ✅ 第二纪元 lore 显示「遗迹共振、晶体潮、虚空低语、谐振风暴」(修复前显示 `tide_ruins` 等原始键)
- ✅ 第三纪元 lore 保持正确「星核悸动」
- ✅ 徽章显示正确
### 深空信标系统验证
- ✅ 第 7 个标签页「信标」渲染正确
- ✅ 每日挑战卡片:难度标签 + 类型标签 + 标题 + 描述 + 进度条 + 奖励 + 领取按钮
- ✅ 倒计时显示「08:47:12」并每秒更新
- ✅ 难度图例显示 3 档(×1 / ×1.6 / ×2.4
- ✅ 进度追踪:解码 1 颗晶体 → 洞见采集进度 +12(解码奖励的洞见值)
- ✅ 完成挑战后按钮变为「领取奖励」
- ✅ 领取奖励后:contact +5.113.47 → 18.57),按钮变「已领取」
- ✅ 排行榜生成条目:「洞见采集 ✓ 1m30s 1.46K」
- ✅ 统计面板新增「信标最高分」行
- ✅ 可领取时标签页显示绿点提示
- ✅ VLM 视觉评估:高美观度,颜色搭配佳,无重叠 bug
### 全系统回归验证
- ✅ 主视图(资源条 / 晶体球 / 解码面板)正常
- ✅ 探险全流程(出发 → 探索 → 前进 → BOSS → 结束 → 日志)正常
- ✅ 解码谜题生成 + 自动求解通过
- ✅ 星潮事件触发 + 指示器 + Footer 联动正常
- ✅ 成就解锁 Toast 正常
- ✅ 星图标签页(9/18 天赋,6 类别)正常
- ✅ 编年史对话框(2 条目,时间轴,里程碑)正常
- ✅ lint 零错误;HTTP 200;编译 < 250ms
## 路线图进展
- [x] v0.1 MVP:放置采矿 + 解码 + 技术树 + 图谱 + 飞升
- [x] v0.1.1:解码可解性修复
- [x] v0.2:遗迹探险肉鸽
- [x] v0.2.1:程序化音频 + 成就系统
- [x] v0.3:星潮事件系统
- [x] v0.3.1:星图天文台元进程
- [x] v0.4:回响编年史
- [x] **v0.5:深空信标(每日挑战 + 本地排行榜)** ← 本轮
- [ ] v0.5+:云存档 + 云排行榜(后端同步)
- [ ] v0.5+:全 5 纪元手写叙事节点
- [ ] 后续:socket 多人同步星潮
## 下一阶段优先
1. 云存档 + 云排行榜(需后端 API,可将本地 localStorage 同步到服务端)
2. 全 5 纪元手写叙事节点(替换模板化 lore)
3. socket 多人同步星潮(全局事件,所有在线玩家同时经历)