# Brick Paddle · 设计说明

## 一句话核心
**鼠标横移挡板把球反弹回去清掉砖块网格 —— 经典 Breakout 的现代手感版。**

## 设计哲学

### 1. 「间接控制」是 513 系列稀缺操作
513 全 9 轮的 input 都是"直接控制"——点击触发、拖拽轨迹、追随、hold、连按、按钮。10 轮首次引入**「玩家控制挡板 → 挡板影响球 → 球影响砖」**这条间接因果链。这是物理类游戏的核心吸引力。

### 2. 反弹角度由命中点决定 = 玩家的"无声 UI"
- 中央命中 → 球垂直反弹（最快回顶但角度可预测）
- 边缘命中 → 球大角度斜飞（覆盖角落但易跑偏）
- 让玩家"用挡板瞄准"，把无脑反弹变成有策略的反弹

公式：
```
rel = clamp((ball.x - paddle.center) / (paddle.w / 2), -1, 1)
angle = rel × 72°   // max 72° 偏移，避免水平推飞
ball.vx = sin(angle) × speed
ball.vy = -cos(angle) × speed   // 保证向上
```

### 3. 3 砖 + 2 powerup 是最小好玩复杂度
- 普通砖：玩家学习"我能击碎"
- 硬砖：玩家学习"需要 2 次"
- 爆炸砖：玩家学习"惊喜爆点"
- 变大挡板：玩家学习"我变强了"
- 多球：玩家学习"屏幕变满好爽"

更多种类会冲淡每个的辨识度。

### 4. 「球落底 = 失血」是稀缺 failure
513 全 9 轮失败方式：HP 归零（无）、时间结算、ERROR 次数、撞 3 次、漏 5 次、字符越界、步数耗尽、连击超时。**10 轮首次"单次位置事件触发 = 即时损失生命"**——不是计数，不是状态值耗尽，是几何意义上的"出界"。

### 5. 关卡通关而非无尽 = 短时段成就感
3-5 关每关 1-3 分钟，玩家可在 5-10 分钟内体验从 5 行到 9 行的难度递增；"STAGE CLEAR" 弹幕给即时正反馈，比无尽刷分更有节奏。

### 6. 30 秒可懂
看到底部挡板 + 顶部砖块 → 鼠标动一下 → "啊原来挡板跟手" → 点一下 → "啊球飞出去了" → 球弹到砖 → "啊砖碎了" → 全懂。

### 7. 不做的事
- 不做账号 / 商店 / BGM
- 不做敌人 AI
- 不做拼图编辑器（自动生成关卡足够）
- 不做联网排行榜
- 不做付费数值（破坏公平）

## 数值结构

### 关卡难度递增
| Stage | 砖块行数 | 球速 | 硬砖率 | 爆炸率 | 通关奖励 |
|---:|---:|---:|---:|---:|---:|
| 1 | 5 | 5.4 | 18% | 8% | 200 |
| 2 | 6 | 5.75 | 22% | 10% | 400 |
| 3 | 7 | 6.1 | 26% | 12% | 600 |
| 4 | 8 | 6.45 | 30% | 14% | 800 |
| 5+ | 9 (max) | 6.8+ | 34%+ | 16%+ | 1000+ |

球速上限 8.5 px/帧，避免 5 关后球速爆炸。

### 反弹手感
- 球速保持（无加速 / 减速副作用）
- 反弹角度最大 ±72°，避免水平推飞
- 球落底时 y > H+20 才删除，给短缓冲

### 道具节奏
- 18% 概率掉落（每碎一砖独立掷骰）
- 50/50 大挡 vs 多球
- 大挡持续 10s（与发球节奏匹配）
- 多球 +2，最多同屏 6 球（避免帧率崩）

### 计分曲线
| 行为 | 分数 |
|---|---:|
| 普通砖 | 50 |
| 硬砖（一次破碎） | 90 |
| 爆炸砖（中心） | 130 |
| 爆炸链式砖 | 40 / 个 |
| 通关奖励 | stage × 200 |

满屏 5 关清光理论上限：~12000-15000 分。

## 视觉

| 元素 | 实现 |
|---|---|
| 背景 | 径向渐变（中央 #101238 → 边缘 #06081a） |
| 星空 | 70 颗向下飘 |
| 砖块 | 圆角 + 顶部高光 + 底部阴影线性渐变 |
| 球 | 径向渐变（白 → 黄 → 橙）+ shadowBlur |
| 挡板 | 蓝/青渐变 + 顶部高光 + 边缘发光 |
| 道具 | 旋转浮动方块 + 字母标识 |
| 粒子 | 14 颗砖色粒 + 重力 |
| 飘字 | +N 黄色 |
| 屏幕震动 | shake 变量 |
| 闪屏 | 失败红 / 通关青 / 爆炸橙 |
| Stage banner | 大字青色 + 副标题 |

所有视觉用 Canvas 实时绘制，无外部图片资源。

## 音频
WebAudio 合成：
- 球反弹：square 360 + rel × 120 Hz，0.05s（角度变调）
- 砖块碎：square 680 - row × 12 Hz，0.06s（顶部行音调更高）
- 硬砖一击：square 280 Hz，0.04s（闷响）
- 爆炸：sawtooth 140 Hz，0.32s
- 道具拾取：triangle 820 / 960 Hz，0.16-0.18s（大挡低 / 多球高）
- 失败：sawtooth 180 Hz，0.36s
- 通关：triangle 880 + 1320 Hz 双音

## 复玩动力
1. **STAGE REACHED**：能打到第几关（数字挑战）
2. **BEST SCORE**：最高分（localStorage 持久化）
3. **道具运气性**：每局 powerup 分布不同
4. **关卡随机性**：每关砖块类型随机分布
5. **手感进步可见**：第一局可能死在 stage 2，10 局后稳过 stage 5

## 可扩展方向（详见 EXPANSION_PLAN.md）
- 更多砖块（金属砖、镜面砖、移动砖、再生砖）
- 更多 powerup（穿透球、激光、慢动作、磁力挡板）
- 关卡编辑器
- 每日挑战（固定种子）
- BOSS 关（大砖块 + 攻击）
- 联机对战（双 paddle 同屏）
- 皮肤系统（挡板 / 球 / 砖块 / 粒子）
