# Pop Chain · 设计说明

## 一句话核心
点击屏幕刺破泡泡 → 物理冲击波推开周围泡泡 → 同色撞击触发链式爆破 → 60 秒打出史上最大连锁。

## 设计哲学

### 1. 单输入设备 + 单键
鼠标点击是 PC 上最直觉的操作。无需教学。

### 2. 物理 + 颜色判定 = 涌现复杂度
机制本身只有"点击 → 推力 → 同色撞击 → 再爆"，但因为是物理模拟，每局的泡泡分布都不同，玩家会自发寻找"高密度同色簇"作为切入点。

### 3. 连锁是核心情绪
所有反馈（屏幕震动、粒子、飘字、音调上升）都围绕「连锁递增」做正向强化。

### 4. 不做的事
- 不做关卡：一个无尽场景就够了
- 不做生命值：失败方式是时间结算，零挫败
- 不做升级树：60 秒一局，长线策略不进来
- 不做教学：3 行字 + 一次试错就能懂

## 数值结构

### 得分公式
```
score_gained = floor(BASE_SCORE * (1 + (chain - 1) * CHAIN_BONUS))
             = floor(10 * (1 + (chain - 1) * 0.6))
```

| 连锁 | 单泡得分 |
|---:|---:|
| 1 | 10 |
| 2 | 16 |
| 3 | 22 |
| 5 | 34 |
| 10 | 64 |
| 20 | 124 |

倍率不爆炸（不是指数），但触发越长越值。

### 连锁窗口
两次破裂相隔 < 1.4 秒视为同一连锁。这个窗口要足够长，让物理推力有时间传递；又不能太长，让玩家觉得"这是我打出来的"。

### 物理参数
- 阻尼 0.945：泡泡会自然减速，连锁不会无限推
- 墙反弹 0.7：撞墙后保留 70% 速度，可能形成"回弹连锁"
- 同色触发速度阈值 3.5：避免静止状态下意外触发

## 视觉

| 元素 | 实现 |
|---|---|
| 背景 | 深紫黑 `#0a0a1a` |
| 泡泡 | 径向渐变 + 高光圆 + 呼吸缩放 |
| 粒子 | 同色小圆 + 速度衰减 + 透明渐隐 |
| 飘字 | 粗黑边白字 + 同色填充 + 向上飘 |
| 大连锁 | 屏幕中央 72px 金字 + 缩放动画 |
| 震动 | translate 小偏移，强度随 `shake` 衰减 |

## 音频

WebAudio 合成正弦波：
- 频率 = 220 + chain × 60 Hz
- 时长 0.18 秒
- 指数频率下滑（pop 感）
- 同时下滑增益（淡出）

连锁越大，音调越高，自然形成"爽感渐进"。

## 复玩动力来源

1. **物理涌现**：每局泡泡分布随机，没有最优解
2. **数字爬升**：MAX CHAIN 是单数字目标，刷比上次高很难抗拒
3. **60 秒短局**：失败成本极低，"再来一把"门槛接近零
4. **倍率诱惑**：理论最大连锁没有上限

## 还可以加什么（已纳入 EXPANSION_PLAN）

- 难度模式（颜色 3/4/5/6 种）
- 特殊泡泡（炸弹、彩虹）
- 每日挑战种子
- 皮肤、特效包
- 排行榜
