# Mash Storm · 设计说明

## 一句话核心
快速连按 SPACE 维持风暴，停手即死

## 设计哲学

### 1. 「停手即死」是稀缺 failure
513 系列前 7 个都是"做错事失败"（撞到、漏过、错按、超时、堆满、步数耗尽）。本作首次让"不行动"成为失败方式——玩家被迫一直做。

### 2. 手速 = 直接武器
连按越快，风暴越大，杀敌越多。物理操作直接映射到游戏奖励，最纯粹的爽感。

### 3. 衰减机制让节奏紧
风暴每秒衰减 80px，相当于每秒需要按 ~7 次才能维持。这是有挑战性的连按节奏，但不至于让玩家精疲力尽。

### 4. 无 HP，纯节奏失败
玩家不会被敌人撞死，只会被自己手停下死。这让失败的责任完全在玩家，而非"我反应不够快"。

### 5. 30 秒可懂
SPACE 按起来 → 屏幕出现金色光环 → 越按越大 → 敌人进光环死 → 不按光环缩 → 3 秒不按 GG。

### 6. 不做的事
- 不做敌人攻击（玩家只死于连击中断）
- 不做关卡
- 不做账号/商店/BGM
- 不做血量条（用风暴半径 + 倒计时条代替）

## 数值结构

### 风暴公式
```
每帧风暴半径变化：
+ 玩家按下：+12
- 自然衰减：-80 * dt（每秒 -80）

维持稳定半径需要：每秒 ~7 次按键
扩大半径需要：每秒 8+ 次按键
```

### 得分公式
```
gained = 10 + floor(combo * 2)
连击 50：110/击杀
连击 100：210/击杀
连击 200：410/击杀
```

线性增长，避免指数爆炸。

### 失败超时
```
MASH_TIMEOUT_MS = 3000ms
不按超过 3 秒 = 风暴消散
```

3 秒是平衡点：足够喘息切换姿势，但又紧到不敢松懈。

### 难度递增
```
敌人 spawn 间隔 = base * max(0.3, 1 - elapsed_sec * 0.015)
敌人速度 = base * (1 + elapsed_sec * 0.05)
```

## 视觉

| 元素 | 实现 |
|---|---|
| 背景 | 中央高径向渐变（紫色调） |
| 星空 | 80 颗向左飘 |
| 英雄 | 中央黄红渐变球 + 旋转剑 |
| 风暴 | 多层径向渐变（黄→橙→红→透明）+ 金边发光 |
| 敌人 | 6 边不规则多边形 + 渐变色 |
| 击杀粒子 | 12 个同色粒 |
| 飘字 | +N 黄色 + MASH! 大金字 |
| 屏幕震动 | shake 变量 |
| 超时条 | 屏幕底部红橙渐变横条（DOM） |
| 闪屏 | 失败时红色覆盖 |

## 音频

WebAudio：
- 按键：square 220 + combo×8 Hz，0.04s
- 失败：sawtooth 80Hz，0.6s

按键音随连击爬升，是手速反馈的核心。

## 复玩动力

1. **MAX COMBO**：单数字挑战
2. **SURVIVED**：生存时长
3. **手速可见提升**：每局都比上局按更快更久
4. **难度递增**：每秒都更紧张

## 还可扩展
- 武器升级（每 100 连击解锁 / 攻击范围 / 衰减减半）
- 特殊敌人（弹反 / 加速 / 大型）
- BPM 模式（按特定节奏触发更高效）
- 双键模式（左右手交替按 / 节奏配合）
- 排行榜
