# Color Trace · 设计说明

## 一句话核心
按住拖出同色长链 → 松开消除 → N² 得分 → 5 次拖错结束

## 设计哲学

### 1. 拖拽 = 控制感
鼠标按住拖拽是触屏世界最自然的操作。相比"点击触发"，拖拽给玩家"我在主动绘制"的感觉。

### 2. 视觉收集
路径是实时绘制的发光线，珠子被加入时高亮 + 外发光。玩家看着自己的"成果"沿着指尖延伸 = 强烈正反馈。

### 3. 风险收益不对称
- 短链：小分 + 安全（2 颗 = 40 分）
- 长链：大分 + 风险（拖错就 ERROR）
- 拖 10+ 颗：1000+ 分但路径上任何一颗异色都会失败

这种「越想要大鱼越容易失手」的张力是核心爽点。

### 4. 失败有限但有重量
5 次错误 = 一局，每次错误都让 ERROR 红点点亮，给玩家强烈的"剩 X 次机会"心理压力。

### 5. 没有时间压力
无倒计时 = 玩家可以慢慢思考，匹配「拖拽 = 计划」的认知。失败不是"反应慢"，是"判断错"。这是这个游戏跟 01/02 的核心情绪差异。

## 数值结构

### 得分公式
```
score = floor(10 * N^SCORE_EXPONENT)   // 默认 N²
```

### 相邻判定
`NEIGHBOR_DIST = 110px`：两颗珠中心距离 < 110px 视为相邻。这个值经过：
- 太小（< 80）：屏幕上常常没有可连珠 → 挫败
- 太大（> 140）：随便点都能连成长链 → 无策略

### 颜色分布
4 色等概率。每色平均占 25%。设定为 4 色而非 3 色因为：
- 3 色太容易：随便拖都同色
- 5 色太难：很难找到相邻同色簇

## 视觉

| 元素 | 实现 |
|---|---|
| 背景 | 中央高、边缘低的径向渐变 `#1a1132 → #0d0b1f` |
| 珠子 | 径向渐变 + 高光圆 + 呼吸缩放 + 出生缩放动画 |
| 高亮 | 外发光（径向渐变叠加）+ 白色描边 |
| 警示 | 红色覆盖 + 红色外发光 |
| 路径 | 8px 圆角折线 + 同色 shadowBlur 20 |
| 拖拽预览 | 单珠时虚线连鼠标 |
| 错误反馈 | ERROR 红色飘字 + 屏幕震动 |
| 大消除 | 居中 `N CHAIN!` 青色字 |

## 音频

WebAudio 合成：
- 拖加珠：三角波 330 + N×30 Hz，0.06s
- 消除：连续三角波，每颗珠 50ms 错开
- 错误：锯齿波 140 Hz，0.3s

## 复玩动力

1. **平方得分曲线**：玩家本能想拖更长的链
2. **5 次错误**：每局节奏明确（不会"卡在 60 秒里"）
3. **最大链长记忆**：MAX CHAIN 是另一个挑战目标，独立于总分
4. **路径选择困难**：屏幕上常有多条候选路径，每次决策都有得失分权衡

## 还可以加

- 特殊珠子（万能色、炸弹色）
- 关卡模式（每关目标分数）
- 时间挑战模式（叠加倒计时）
- 排行榜
- 皮肤、特效
