# Wave Rider · 设计说明

## 一句话核心
鼠标控制飞船贴住中央能量带 → 充能满激光清场 → 距离推进 → 撞 3 次报废

## 设计哲学

### 1. 连续追随 = 全新 input 维度
与前 3 轮的「点击 / 拖拽」全然不同，连续追随是最低门槛但最高沉浸度的 input：手部不离开，鼠标位置就是飞船位置，几乎零认知负担。

### 2. 「贴住」是天然爽感动作
玩家自然倾向于在波形上「保持」，这本身就是一个被奖励的行为（充能 +）。无需教学。

### 3. 充能爆发 = 高潮按钮
玩家无需主动点击爆发，充能满了自动触发。这避免了"我忘了按"的挫败，让爽感成为必然。

### 4. 撞 3 次而非时间结算
失败方式从前 3 轮的时间结算 / ERROR 耗尽切换到撞击次数。心形 HUD 自带情绪重量。

### 5. 不做的事
- 不做关卡：无尽推进
- 不做教学页：3 行字 + 视觉自解释
- 不做账号 / 商店 / BGM
- 不做复杂武器系统

## 数值结构

### 充能公式
```
charge += CHARGE_RATE * (1 - distToBand / BAND_RANGE)   每帧
满充能 = CHARGE_MAX (100)
默认 CHARGE_RATE 1.2 → 距能量带正中央时 ~ 83 帧（约 1.4 秒）充满
```

### 难度递增
```
curSpeed = WORLD_SPEED + distance * RAMP_PER_DIST
障碍间隔 = 基础区间 * (1 - min(0.5, distance * 0.00003))
```
随距离推进，速度+障碍密度都增加，但有上限避免无解。

### 得分构成
- 距离分：每帧自动累加（线性）
- 金币：+50
- 充能爆发：+100 + 30/被清陨石

## 视觉

| 元素 | 实现 |
|---|---|
| 背景 | 上深下黑渐变 + 星空粒子 |
| 能量带 | 蓝色 sin+noise 折线 + shadowBlur 16 |
| 充能边界 | 半透明蓝虚线（上下偏移 BAND_RANGE） |
| 飞船 | 渐变蓝白菱形 + 引擎光 + 尾迹粒子 |
| 陨石 | 不规则多边形 + 灰色渐变 + 自旋 |
| 金币 | 金色发光球 + 呼吸缩放 |
| 激光 | 白色长条 + 强 shadowBlur |
| HP | SVG 心形（损失变灰） |
| 充能条 | HUD 横条 + 满时呼吸动画 |

## 音频

WebAudio 合成：
- 金币：sin 880Hz, 0.1s
- 撞击：sawtooth 80Hz, 0.4s
- 爆发：sawtooth 120Hz + triangle 880Hz 双层

## 复玩动力

1. **距离数字**：单维度挑战，每次都想"再远一点"
2. **3 次机会**：失败可控
3. **充能爆发**：每次爆发都是小高潮，激励玩家追求"贴更久"
4. **难度递增**：30 秒后障碍密度上升，刺激"我能撑到哪里"

## 还可扩展

- 能量带形态变化（突然急转弯）
- 特殊陨石（金陨石得分翻倍 / 反应陨石追踪飞船）
- 武器升级
- 关卡模式（Boss 战）
