# 超时空激战 — 游戏设计文档 (GDD)

## 1. 游戏概述

### 1.1 基本信息
- **游戏名称：** 超时空激战
- **游戏类型：** 竖版 Roguelike 飞机大战
- **开发技术：** 纯 JavaScript + Canvas，零依赖
- **运行环境：** Web 浏览器（直接打开 index.html）
- **画布尺寸：** 600×800 像素
- **目标帧率：** 基准 200fps，运动基于 dt 帧率无关

### 1.2 核心玩法
玩家操控战机在竖版场景中射击敌人，通过击杀敌人获取分数和宝石，解锁词条(buff)系统强化战机能力，挑战不断出现的 Boss。游戏融合了 Roguelike 的随机词条系统和经典飞机大战的射击玩法。

### 1.3 游戏模式
1. **无尽模式：** 经典 Roguelike 玩法，通过分数触发词条选择，挑战越来越强的敌人和 Boss
2. **关卡模式：** 7 个精心设计的关卡，每个关卡有独特目标和 Boss 战

---

## 2. 核心系统

### 2.1 战机系统

#### 2.1.1 战机类型
游戏提供 4 种可选战机，每种具有独特的射击方式和特性：

| 战机名称 | 射击方式 | 特点 |
|---------|---------|------|
| 紫色更有韵味 | 单发直射 | 均衡型，射速 200ms，伤害 1.0 |
| 苍穹号 | 散射弹幕 | 范围攻击，散射子弹速度 2.8，射程 320px |
| 墨子号 | 炸弹投掷 | 范围伤害，爆炸半径 60px，伤害 2 |
| 赤红号 | 持续激光 | 高 DPS，每秒 5 点伤害，激光宽度 6px |

#### 2.1.2 玩家属性
- **生命值：** 初始 5 点，最大 10 点
- **移动速度：** 3.5 像素/帧
- **无敌时间：** 受击后 120 帧无敌
- **拖尾效果：** 记录 20 个历史坐标点，形成引擎尾焰

### 2.2 子弹系统

#### 2.2.1 子弹类型
- **玩家子弹：** 速度 4，伤害 1（可强化）
- **僚机子弹：** 速度同玩家，伤害 0.5（可强化）
- **追踪导弹：** 速度 3.5，转向力 0.08，持续 3 秒
- **敌人子弹：** 各敌人类型速度不同
- **Boss 子弹：** 带火焰拖尾特效

#### 2.2.2 特殊机制
- **穿透弹：** 最多穿透 2 个敌人，3 级解锁闪电连锁前置
- **双发：** 左右各增加一颗子弹
- **超频射速：** 射速翻倍（间隔除以 2）

### 2.3 敌人系统

#### 2.3.1 敌人类型

| 类型 | 名称 | 出现条件 | 行为模式 | 属性 |
|------|------|---------|---------|------|
| basic | 基础敌机 | 始终 | 直线下落 | 速度 2，血量 1，分数 5 |
| shooter | 射击敌机 | 50 分后 | 悬停 + 每 2s 射击 | 速度 1.5，血量 2，分数 10 |
| rusher | 冲锋敌机 | 300 分后 | 悬停 + 扇形射 8s 后冲刺 | 速度 1.5，血量 2，分数 20 |
| spinner | 旋转敌机 | 500 分后 | 悬停 + 每 1.5s 两波扇形弹 | 速度 1.8，血量 3，分数 30 |
| minion | Boss 小怪 | Boss 召唤 | 快速下落 | 速度 4，血量 1 |

#### 2.3.2 动态难度
- 每 300 分提升 1 级难度
- 刷新间隔 ×0.95（最低 50%）
- 敌人血量 +20%/级（最高 +300%）

### 2.4 Boss 系统

#### 2.4.1 Boss 列表
游戏包含 3 个 Boss，按顺序轮回出现：

| Boss | 名称 | 触发分数 | 基础血量 |
|------|------|---------|---------|
| one_eye_king | 独眼王 | 400 分 | 200 |
| night_fury | 夜煞 | 击败独眼王后 500 分 | 250 |
| ice_evil_king | 冰邪王 | 击败夜煞后 500 分 | 300 |

#### 2.4.2 Boss 技能

**独眼王（黑红机甲）**
1. **热能扫射：** 扇形扫射，带预警阶段，前 0.8s 快速射击，后 1.2s 减速
2. **暗红护盾：** 无敌状态 2.5s，持续散射暗红弹丸
3. **召唤小怪：** 召唤 4 个小怪，带召唤阵特效

**夜煞**
1. **单激光追踪：** 持续追踪玩家的激光
2. **三激光横扫：** 三条激光同时横扫
3. **反弹护盾：** 护盾反弹子弹

**冰邪王**
1. **冰锥扫射：** 扇形冰锥攻击
2. **可破坏冰墙：** 阻挡玩家子弹的冰墙
3. **冰霜漩涡：** 减速 + 内缩冰刺 + 终结爆散

#### 2.4.3 Boss 增强机制
- 击败所有 Boss 后进入下一轮
- 每轮血量倍率：×（1 + 轮次 × 0.5）
- 击败间隔递增：500 → 600 → 800 → 1000 → 1500 → 2000

### 2.5 词条系统（Roguelike 核心）

#### 2.5.1 等级系统
- 升级公式：25l² + 75l + 50（50→150→300→500→750...）
- 分数达标触发 3 选 1 buff
- 开局免费选一次

#### 2.5.2 词条列表（13 种）

| 词条 | 稀有度 | 效果 | 上限 |
|------|--------|------|------|
| 速射 | 普通 | 射速 +25% | 3 |
| 双发 | 传说 | 左右各增加一颗子弹 | 1 |
| 僚机 | 稀有 | 召唤僚机协同作战 | 2 |
| 僚机伤 | 稀有 | 僚机伤害翻倍 | 1 |
| 僚机疾 | 稀有 | 僚机射速翻倍 | 1 |
| 追踪导弹 | 史诗 | 每 3s 自动发射追踪导弹 | 1 |
| 追踪导弹·疾 | 史诗 | 发射间隔缩短 1s | 2 |
| 追踪导弹·量 | 史诗 | 同时发射 +1 枚导弹 | 2 |
| 超频时间延长 | 史诗 | 超频持续时间 +1s | 3 |
| 超频充能 | 稀有 | 击杀能量 +1 | 4 |
| 生命回复 | 稀有 | 生命值 +1（最大 10） | — |
| 磁力宝石 | 普通 | 宝石拾取范围 +20% | 5 |
| 隐身镀层 | 传说 | 10s 未受伤生成镀层 | 1 |
| 穿透弹 | 传说 | 穿透敌人（3 级解锁连锁前置） | 3 |
| 宝石增值 | 普通 | 宝石分数 +10% | 5 |
| 贪婪 | 史诗 | 30% 概率额外掉宝石 | 1 |
| 闪电连锁 | 传说 | 击杀时连锁攻击最近敌人 | 5 |

#### 2.5.3 稀有度权重
- 普通 (common)：5
- 稀有 (rare)：3
- 史诗 (epic)：1
- 传说 (legendary)：0.65

### 2.6 超频系统

#### 2.6.1 机制
- 击杀敌人积累能量（基础 4 点/击杀）
- 能量满 100 按空格激活
- 持续时间：3 秒（可强化）
- 效果：射速翻倍 + 无敌状态

#### 2.6.2 视觉效果
- 金色光环脉冲特效
- 拖尾颜色变为橙金色
- 白色闪烁无敌提示

### 2.7 宝石系统

#### 2.7.1 宝石行为
1. **爆发阶段：** 击杀时向外扩散
2. **下落阶段：** 重力影响下落
3. **磁吸阶段：** 玩家附近自动吸附

#### 2.7.2 强化效果
- 磁力宝石：拾取范围 +20%/层，5 层满屏吸取
- 宝石增值：分数 +10%/层，最高 50%
- 贪婪：30% 概率额外掉落

### 2.8 镀层系统

#### 2.8.1 机制
- 需要"隐身镀层"词条激活
- 10 秒未受伤自动生成
- 免疫一次伤害后破碎
- 无敌和超频期间不计时

#### 2.8.2 视觉效果
- 存在时：金色外壳光环
- 破碎时：白色碎片闪烁

---

## 3. 关卡设计

### 3.1 关卡模式概述
7 个精心设计的关卡，难度逐步递增：

| 关卡 | 名称 | 目标 | 特点 |
|------|------|------|------|
| 1 | 新兵试炼 | 100 分 | 分阶段刷怪：50 分前基础，50 分后射击 |
| 2 | 火力初开 | 200 分 | 一二三级混合，刷新率 0.9 |
| 3 | 独眼王 | 击败 Boss | Boss 关，无小怪 |
| 4 | 全面围攻 | 300 分 | 全部敌人类型，血量 ×1.3 |
| 5 | 夜煞降临 | 击败 Boss | Boss 关，无小怪 |
| 6 | 冰封王座 | 击败 Boss | Boss 关，无小怪 |
| 7 | 终极决战 | 击败所有 Boss | 三个 Boss 连战，血量 ×1.5 |

### 3.2 关卡参数
- **spawnMult：** 敌人刷新率倍率
- **hpMult：** 敌人血量倍率
- **maxLife：** 最大生命值
- **bossTriggerScore：** Boss 触发分数

### 3.3 通关条件
- 分数达标关卡：达到目标分数自动通关
- Boss 关卡：击败指定 Boss 通关
- 终极决战：击败所有三个 Boss 通关

---

## 4. UI 设计

### 4.1 主界面
- **标题：** "超时空激战" 科幻风格标题
- **副标题：** "无尽冒险 · 词条搭配"
- **战机预览：** 大号战机展示，可左右切换
- **模式按钮：** "无尽冒险" 和 "关卡模式" 并排
- **操作提示：** 方向键/WASD 移动，空格超频，P 暂停

### 4.2 战机选择界面
- **标题：** "SELECT CRAFT"
- **卡片布局：** 4 张战机卡片并排显示
- **卡片内容：**
  - 战机图片
  - 名称和副标题
  - 属性详情（射速、伤害、射程等）
  - 编号提示
- **操作：** 点击卡片或按 1/2/3/4 选择

### 4.3 关卡选择界面
- **关卡地图：** 7 个关卡节点连线显示
- **状态标识：**
  - 已通关：绿色
  - 当前可玩：蓝色脉冲
  - 未解锁：灰色
- **关卡信息：** 名称、副标题、最高分
- **操作：** 点击可通关卡开始

### 4.4 HUD 界面
- **左上角：** 生命数显示
- **右上角：** 分数显示
- **左下角：** 能量条（超频）
- **词条列表：** 左侧显示已获得词条

### 4.5 词条选择界面
- **遮罩：** 半透明黑色遮罩
- **标题：** "选择词条"
- **副标题：** "按 1 / 2 / 3 选择"
- **卡片布局：** 3 张词条卡片并排
- **卡片内容：**
  - 稀有度标识（颜色区分）
  - 词条名称
  - 效果描述
  - 序号提示 [1] [2] [3]

### 4.6 Boss 警告界面
- **全屏红色闪烁**
- **警告文字：** "WARNING"
- **Boss 名称显示**
- **持续时间：** 3 秒

### 4.7 暂停界面
- **半透明遮罩**
- **暂停文字**
- **继续游戏提示**

### 4.8 游戏结束界面
- **最终分数**
- **最高分记录**
- **重新开始按钮**
- **返回主菜单按钮**

---

## 5. 视觉设计

### 5.1 科幻风格主题
- **主色调：** 深蓝背景 + 青色/蓝色高亮
- **强调色：** 金色（超频）、红色（Boss）、紫色（玩家）
- **UI 元素：** 角括号装饰、脉冲动画、发光效果
- **字体：** HYPixel（像素风）+ 系统无衬线

### 5.2 粒子系统
- **粒子上限：** 800 个
- **渲染通道：** 多通道批量渲染
- **特效类型：**
  - 引擎拖尾
  - 爆炸碎片
  - Boss 技能特效
  - 宝石闪光
  - 闪电连锁

### 5.3 背景系统
- **三层视差：**
  1. 星空背景（远景）
  2. 背景飞机（中景）
  3. 陨石/战舰（近景）
- **动态效果：** 星星闪烁、飞机移动

### 5.4 特效系统
- **屏幕震动：** 受击/Boss 技能时触发
- **屏幕闪烁：** 超频激活/Boss 击败时触发
- **拖尾效果：** 战机引擎尾焰
- **护盾特效：** Boss 无敌护盾

---

## 6. 音频设计

### 6.1 背景音乐
- **主菜单 BGM**
- **游戏 BGM**
- **Boss 战 BGM**
- **音量控制：** 可调节 BGM 音量

### 6.2 音效
- **射击音效：** 玩家子弹、敌人子弹
- **爆炸音效：** 敌人死亡、Boss 技能
- **拾取音效：** 宝石拾取
- **UI 音效：** 按钮点击、词条选择
- **音量控制：** 可调节音效音量

---

## 7. 技术实现

### 7.1 架构设计
- **全局状态 G：** 所有模块通过读写 G 通信
- **注册表模式：** 三套注册表（ENEMY、BOSS、BUFF）
- **帧率无关：** 基于 dt 的运动计算
- **性能优化：** 粒子限制、数组压缩、离屏缓存

### 7.2 文件结构
```
├── index.html                    # 入口：DOM HUD + Canvas
├── font/ image/ music/           # 素材
└── js/
    ├── core.js                   # Game 命名空间 + 工具
    ├── constants.js              # 全部常量
    ├── audio.js                  # BGM + 音效
    ├── state.js                  # 全局状态 G
    ├── main.js                   # 启动：初始化、资源加载
    ├── gameLoop.js               # 主循环
    ├── input.js                  # 键盘/鼠标输入
    ├── entities/                 # 游戏实体
    ├── systems/                  # 系统模块
    └── ui/                       # UI 模块
```

### 7.3 性能优化
- 粒子上限 800，多通道批量渲染
- `lighter` 混合模式代替 `shadowBlur`
- 就地数组压缩而非 splice
- 白边描边离屏缓存
- 帧率节流（60/90/120/144/200/无限制）

### 7.4 存档系统
- **localStorage 存储：** 游戏进度、最高分、关卡解锁
- **自动保存：** 游戏结束、关卡通关时保存
- **数据结构：** JSON 格式

---

## 8. 拓展指南

### 8.1 添加新词条
1. 在 `buff.js` 中注册新词条
2. 定义 `apply` 函数修改 `G.player` 属性
3. 在 `state.js` 的 `resetState()` 中添加默认值
4. 设置稀有度和条件

### 8.2 添加新敌人
1. 新建 `enemies/xxx.js` 文件
2. 使用 `ENEMY.register()` 注册
3. 在 `constants.js` 中添加常量
4. 在 `index.html` 中引入文件

### 8.3 添加新 Boss
1. 新建 `bosses/xxx.js` 文件
2. 使用 `BOSS.register()` 注册
3. 在 `index.html` 中引入文件
4. 如需新实体数组，添加到 `G` 和 `resetState()`

### 8.4 添加新音效
1. 在 `audio.js` 中添加 Audio 对象
2. 创建播放函数
3. 在游戏逻辑中调用

---

## 9. 游戏流程

### 9.1 无尽模式流程
1. 主菜单 → 选择战机 → 开始游戏
2. 开局免费选择 1 个词条
3. 击杀敌人获取分数和宝石
4. 分数达标触发词条选择（3 选 1）
5. 动态难度递增
6. 400 分触发第一个 Boss
7. 击败 Boss 后继续游戏
8. 所有 Boss 击败后进入下一轮
9. 生命耗尽游戏结束

### 9.2 关卡模式流程
1. 主菜单 → 关卡选择 → 选择关卡
2. 选择战机 → 开始关卡
3. 完成关卡目标（分数/Boss）
4. 通关后解锁下一关
5. 全部通关回到主菜单

### 9.3 战斗流程
1. 敌人从顶部刷新
2. 玩家射击击杀敌人
3. 敌人死亡掉落宝石
4. 宝石三阶段行为（爆发→下落→磁吸）
5. 分数积累触发词条选择
6. Boss 按分数触发
7. 击败 Boss 继续游戏

---

## 10. 平衡性设计

### 10.1 难度曲线
- **前期（0-400 分）：** 基础敌人，学习射击和移动
- **中期（400-1000 分）：** Boss 出现，词条强化开始
- **后期（1000+ 分）：** 高难度敌人，需要词条搭配

### 10.2 词条平衡
- **普通词条：** 基础强化，容易获得
- **稀有词条：** 中等强化，需要一定运气
- **史诗词条：** 强力强化，改变玩法
- **传说词条：** 改变游戏机制，需要前置条件

### 10.3 Boss 难度
- **独眼王：** 入门 Boss，技能直观
- **夜煞：** 中等难度，需要躲避技巧
- **冰邪王：** 高难度，复杂机制

---

## 11. 已知问题与优化方向

### 11.1 已知问题
- 高帧率下部分特效可能闪烁
- 移动端触控支持待完善
- 部分 Boss 技能判定需优化

### 11.2 优化方向
- 添加更多战机类型
- 增加更多词条种类
- 优化 Boss AI 行为
- 添加成就系统
- 支持移动端触控
- 添加更多视觉特效

---

## 12. 附录

### 12.1 快捷键
- **方向键/WASD：** 移动战机
- **空格：** 激活超频
- **P：** 暂停游戏
- **1/2/3：** 选择词条
- **ESC：** 返回/暂停

### 12.2 配置常量
- **画布尺寸：** 600×800
- **基准帧率：** 200fps
- **玩家速度：** 3.5
- **子弹速度：** 4
- **Boss 警告时间：** 3000ms
- **超频持续时间：** 3000ms

### 12.3 版本信息
- **当前版本：** 1.0
- **最后更新：** 2026/04/23
- **开发状态：** 持续更新中

---

*本文档详细描述了《超时空激战》的游戏设计，包括核心系统、关卡设计、UI 界面、视觉风格、技术实现等方面。文档将随游戏开发持续更新。*
