Files
2026-07-06 22:59:47 -07:00

1722 lines
43 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Anchor策划书1.0
## 0. 文档目标
本文档用于统一《Anchor》的核心玩法机制、系统边界、系统耦合关系、Godot 节点架构、动作规则、相位规则、敌人规则、UI 反馈、音乐音效要求与开发验收标准。
本文档只描述当前确认的游戏机制与实现结构,不包含世界观背景、剧情设定和宣传文案。
---
## 1. 游戏核心规则概述
《Anchor》是一款 **2D 节奏横板动作游戏**
玩家没有自由移动。玩家的位置变化来自攻击、技能、浮空、击飞、击退、下坠、受击和其他动作位移。玩家通过节奏窗口输入 `A / W / S / Space`,输入先经过节奏判定,再决定动作是否执行、动作效果强弱、能量变化和四拍槽记录。
游戏中存在两种时间相位:
```text
Past
Future
```
Past 与 Future 共用同一套场地碰撞结构。相位切换只影响视觉表现、音乐层、UI 主题、敌人强弱和 Boss 状态,不改变玩家可站立区域和关卡碰撞结构。
谱面中存在普通节奏判定点,也存在特殊的 **时间锚点**。并非所有节奏判定点都是时间锚点。
普通节奏判定点只影响动作;时间锚点额外影响 Past / Future 相位。
```text
普通节奏点:用于动作输入判定。
时间锚点:用于维持或切换当前时间相位。
```
时间锚点会周期性出现,也可以由战斗条件触发。
当时间锚点出现时:
```text
玩家在锚点窗口内成功输入 Perfect / Good / Bad
→ 维持当前相位
玩家没有输入,或输入结果为 Miss
→ 切换到另一相位
```
时间锚点同时承担攻击成长功能。玩家成功锚定时间锚点时,Perfect / Good 获得 1 层攻击 BuffBad 只维持相位但不增加 Buff;连击数越高,时间锚点在每 4 拍窗口内出现得越密集;发生相位切换时,当前攻击 Buff 层数减少 2 层。
攻击 Buff 规则:
```text
每层攻击 Buff:攻击力 +50%
最大层数:7 层
最大攻击增幅:+350%
相位切换损失:当前层数减少 2 层,最低为 0 层
```
---
## 2. 设计原则
### 2.1 动作原则
```text
所有玩家主动行为都来自节奏输入。
所有按键先判定,再执行。
Miss 不执行动作。
Miss 写入四拍槽为 ∅。
动作位移由动作数据决定。
角色没有自由行走位移。
```
### 2.2 时间锚点原则
```text
时间锚点是特殊谱面事件,不是每个节奏点。
时间锚点不会指定玩家必须按哪个键。
玩家可以用任意当前可用输入尝试锚定。
Perfect / Good 锚定维持当前相位,并获得 1 层攻击 Buff。
Bad 锚定维持当前相位,但不增加攻击 Buff。
失败锚定切换 Past / Future。
连击数越高,时间锚点在每 4 拍窗口内出现得越密集。
时间锚点频率档位为:0-7 连击每 4 拍 1 个,8-15 连击每 4 拍 2 个,16+ 连击每 4 拍 4 个。
时间锚点频率上限是:每 4 拍内 4 个 RhythmBeat 都升级为 TimeAnchor。
```
### 2.3 相位原则
```text
Past / Future 共用同一套碰撞结构。
相位切换不改变关卡通路。
相位切换影响敌人强弱、视觉、音乐、UI。
相位切换是战斗策略,不是单纯惩罚。
```
### 2.4 Game Jam 范围原则
优先保证核心闭环:
```text
节奏判定
→ 动作执行
→ 四拍槽
→ 时间锚点
→ 相位切换
→ 敌人强弱变化
→ 双相位音乐切换
```
低优先级内容不得阻塞核心闭环完成。
---
## 3. 系统总览
### 3.1 系统列表
| 系统 | 职责 |
|---|---|
| 节奏判定系统 | 将输入判定为 Perfect / Good / Bad / Miss |
| 谱面事件系统 | 生成普通节奏提示、时间锚点、敌人提示、Boss 提示 |
| 时间锚点系统 | 判断锚点是否成功,并决定是否切换相位 |
| 时间锚点增益系统 | 根据连击数调整时间锚点频率,并管理攻击 Buff 层数 |
| Past / Future 相位系统 | 管理当前相位,并通知视觉、音乐、敌人、UI |
| 输入与动作系统 | 接收判定后的输入,执行普攻、技能、蓄力、防御、空中动作 |
| 四拍槽系统 | 记录最近四次输入结果,用于技能派生和 UI 展示 |
| 能量系统 | 管理普攻回复、技能消耗、蓄力释放消耗 |
| 战斗结算系统 | 处理命中、伤害、浮空、击飞、击退、霸体、冲刺、防御、受击、死亡 |
| 敌人系统 | 管理敌人行为、相位强弱倍率、攻击节奏 |
| UI 反馈系统 | 显示节奏、时间锚点、四拍槽、相位、判定、能量、血量 |
| 音乐音效系统 | 管理 Past / Future 双音乐层同步切换和动作音效 |
---
## 4. 系统关系与数据流
### 4.1 一次普通动作输入的数据流
```text
玩家按键
→ InputIntent
→ RhythmJudge 输出 JudgeResult
→ ActionSystem 判断当前条件是否能执行动作
→ 执行动作或判定失败
→ ComboSlotBuffer 写入槽位
→ EnergySystem 处理回复或消耗
→ Animation / SFX / UI 反馈
```
### 4.2 一次时间锚点的数据流
```text
ChartRunner 触发 TimeAnchorEvent
→ UI 显示时间锚点
→ 玩家在窗口内输入或没有输入
→ RhythmJudge 输出 JudgeResult
→ TimeAnchorSystem 读取锚点窗口结果
→ 成功:PhaseManager 保持当前相位;Perfect / Good 使 AttackBuff 增加 1 层,Bad 不增加
→ 失败:PhaseManager 切换 Past / FutureAttackBuff 层数减少 2 层
→ EnemySystem / AudioLayerController / VisualLayer / UI 更新
```
### 4.2.1 连击、时间锚点和攻击 Buff 的数据流
```text
玩家连续成功执行动作
→ ComboCounter 增加
→ TimeAnchorSystem 根据当前连击数调整 TimeAnchor 生成频率
→ TimeAnchorEvent 出现
→ 玩家成功锚定
→ Perfect / GoodAttackBuffStack + 1BadAttackBuffStack + 0
→ DamageResolver 按 AttackBuffStack 提高玩家攻击伤害
发生相位切换
→ AttackBuffStack 减少 2 层,最低为 0 层
→ DamageResolver 使用减少后的层数计算伤害
```
### 4.3 动作与时间锚点的关系
时间锚点不替代动作输入。玩家在时间锚点窗口内输入时,这次输入同时进入两个系统:
```text
ActionSystem:决定动作是否执行。
TimeAnchorSystem:决定是否维持相位。
```
因此:
```text
普通节奏输入可以只影响动作。
时间锚点输入既影响动作,也影响相位。
```
### 4.4 相位系统的输出对象
当当前相位变化时,PhaseManager 通知:
```text
EnemySystem:更新敌人强弱倍率。
VisualLayer:切换 Past / Future 视觉表现。
AudioLayerController:切换 Past / Future 音乐层。
HUD:切换 UI 相位提示与主题色。
BossController:更新 Boss 当前相位状态。
```
---
## 5. 核心循环流程
```text
音乐时间推进
→ 谱面标志向中心移动
→ 玩家根据节奏输入 A / W / S / Space
→ 输入进行 Perfect / Good / Bad / Miss 判定
→ 普通输入尝试执行动作
→ 动作结果写入四拍槽
→ 普攻回复能量,技能或蓄力释放消耗能量
→ 命中敌人后进行战斗结算
→ 连击数影响后续时间锚点出现频率
→ 若当前存在时间锚点事件,则同时判断是否维持相位
→ 时间锚点 Perfect / Good 成功时获得 1 层攻击 Buff,Bad 成功时只维持相位
→ 时间锚点失败时切换 Past / Future,并减少 2 层攻击 Buff
→ 敌人强弱、视觉、音乐、UI 跟随相位变化
```
---
## 6. Godot 节点架构
### 6.1 总体结构
```text
GameRoot
├─ RhythmManager
├─ ChartRunner
├─ TimeAnchorSystem
├─ PhaseManager
├─ CombatManager
├─ LevelRoot
├─ HUD
└─ AudioLayerController
```
### 6.2 节点职责
| 节点 | 职责 |
|---|---|
| `RhythmManager` | 播放音乐,提供 song_time、beat_index、beat_phase、节奏判定接口 |
| `ChartRunner` | 按音乐时间生成普通节奏提示、时间锚点、敌人提示、Boss 提示 |
| `TimeAnchorSystem` | 接收 TimeAnchorEvent,判断锚点成功或失败 |
| `PhaseManager` | 保存当前相位 Past / Future,并广播相位变化 |
| `CombatManager` | 统一处理 Hitbox / Hurtbox 命中结算 |
| `LevelRoot` | 当前关卡、场景表现、敌人容器、相位视觉层 |
| `HUD` | 节奏轨道、时间锚点、四拍槽、能量、血量、相位提示 |
| `AudioLayerController` | Past / Future 音乐层同步播放与交叉淡入淡出 |
---
## 7. 玩家节点架构
```text
Player
├─ InputComponent
├─ ActionController
├─ ComboSlotBuffer
├─ ComboCounter
├─ AttackBuffComponent
├─ EnergyComponent
├─ ActorStateMachine
├─ ActorMotor
├─ HitboxController
├─ Hurtbox
├─ AnimationBridge
└─ AudioEmitter
```
### 7.1 玩家组件职责
| 组件 | 职责 |
|---|---|
| `InputComponent` | 监听 A / W / S / Space 的 pressed / released,生成 InputIntent |
| `ActionController` | 根据输入、判定、四拍槽、能量、空地条件执行动作 |
| `ComboSlotBuffer` | 保存最近四次输入符号和内部判定数据 |
| `ComboCounter` | 统计连续成功动作,用于影响时间锚点生成频率 |
| `AttackBuffComponent` | 保存时间锚点攻击 Buff 层数,并向伤害结算提供攻击倍率 |
| `EnergyComponent` | 处理能量回复与消耗 |
| `ActorStateMachine` | 保存生命状态、空地状态、动作阶段、受击状态 |
| `ActorMotor` | 根据动作数据执行横向 / 纵向位移 |
| `HitboxController` | 根据动作 Active 阶段开启或关闭 Hitbox |
| `Hurtbox` | 接收敌人攻击检测 |
| `AnimationBridge` | 根据动作事件播放动画、特效、震屏 |
| `AudioEmitter` | 播放角色动作、命中、受击、判定反馈音效 |
---
## 8. 输入系统
### 8.1 输入按键
| 输入 | 用途 |
|---|---|
| `A` | 地面普攻、地面连段、A 蓄力、空中连斩 |
| `W` | 地面上挑,进入空中 |
| `S` | 地面短按防御、地面长按 S 蓄力、空中下坠攻击 |
| `Space` / `sp` | 技能派生、S 蓄力期间释放斩波 |
### 8.2 输入阶段
```text
pressed
released
held
```
### 8.3 输入处理规则
```text
所有输入先进入 RhythmJudge。
Perfect / Good / Bad 可以尝试执行动作。
Miss 不执行动作。
Miss 写入四拍槽为 ∅。
非 Miss 但动作条件不满足时,输入可以写入槽位,但不视为成功动作。
S 键在地面采用短按 / 长按区分:短按 S 触发防御;长按 S 进入 S 蓄力。
```
---
## 9. 节奏判定系统
### 9.1 判定结果
```text
Perfect
Good
Bad
Miss
```
### 9.2 判定用途
判定结果用于影响:
```text
动作是否执行
动作伤害倍率
普攻能量回复
技能能量消耗
蓄力释放消耗
防御减伤比例
时间锚点是否成功
时间锚点是否增加攻击 Buff
时间锚点回血量
UI 与音效反馈
```
判定不影响动作基础横向位移、动作基础纵向位移、冲刺距离、击退距离、击飞距离、霸体时间、防御持续时间、动作基础时长和敌人当前生命值。上述数值一旦由动作或状态确定,不因 Perfect / Good / Bad 重新缩放。
### 9.3 判定建议倍率
| 判定 | 普攻能量回复 | 技能消耗 | 伤害倍率 |
|---|---:|---:|---:|
| Perfect | 100% | 90% | 100% |
| Good | 80% | 100% | 85% |
| Bad | 60% | 110% | 70% |
| Miss | 0% | 不释放 | 不释放 |
说明:技能消耗倍率采用较窄区间,避免伤害、Buff、回血、相位惩罚与能量惩罚叠加过重;Perfect 略省,Bad 略贵。
### 9.4 防御判定与效果
| 判定 | 防御效果 | 动作结果 |
|---|---|---|
| Perfect | 正面防御成功,伤害减免 100%。 | 不进入 `[受击]` 状态。 |
| Good | 正面防御成功,伤害减免 80%。 | 不进入 `[受击]` 状态。 |
| Bad | 正面防御成功,伤害减免 60%。 | 进入短防御硬直,但不进入 `[受击]` 状态。 |
| Miss | 防御不释放。 | 四拍槽写入 `∅`,受到攻击时正常进入 `[受击]` 状态。 |
防御只对正面普通攻击生效;背后攻击、抓取、破防攻击、范围环境伤害不受防御减免。
---
## 10. 谱面事件系统
### 10.1 事件类型
| 事件 | 作用 |
|---|---|
| `RhythmBeat` | 普通节奏提示,只辅助动作输入 |
| `TimeAnchor` | 时间锚点,成功维持相位,失败切换相位 |
| `EnemyCue` | 敌人攻击提示 |
| `BossCue` | Boss 技能提示 |
| `PhaseWarning` | 相位相关事件预警 |
### 10.2 RhythmBeat 与 TimeAnchor 的区别
```text
RhythmBeat 是底层节奏网格。
TimeAnchor 是挂在节奏网格上的特殊事件。
```
普通 RhythmBeat 不影响相位。
TimeAnchor 会影响相位。
### 10.3 时间锚点出现方式
时间锚点有两种生成方式。
周期性出现:
```text
以每 4 拍为一个频率窗口生成 TimeAnchorEvent。
每 4 拍内 TimeAnchorEvent 数量随当前连击数提高。
```
条件触发:
```text
当前相位持续时间达到阈值
场上出现强势相位敌人
Boss 准备相位技能
玩家连段达到指定数量
关卡流程进入指定段落
```
时间锚点频率受连击数影响。连击数越高,每 4 拍窗口内的 TimeAnchorEvent 数量越多。
频率上限不是额外生成更多图标,也不是让画面出现额外锚点。频率上限是:每 4 拍内 4 个 RhythmBeat 都升级为 TimeAnchor。
```text
0-7 连击:每 4 拍 1 个 RhythmBeat 是 TimeAnchor。
8-15 连击:每 4 拍 2 个 RhythmBeat 是 TimeAnchor。
16+ 连击:每 4 拍 4 个 RhythmBeat 是 TimeAnchor。
```
因此,时间锚点最多只会把每 4 拍内已有的 4 个 RhythmBeat 全部标记为 TimeAnchor,不会额外增加屏幕图标密度。
实际开发中优先实现周期性时间锚点,再扩展条件触发。
---
## 11. 时间锚点系统
### 11.1 系统职责
时间锚点系统负责判断玩家是否成功维持当前时间相位。
### 11.2 成功条件
当 TimeAnchorEvent 处于判定窗口内,玩家任意有效输入获得:
```text
Perfect
Good
Bad
```
即视为时间锚点成功。
### 11.3 失败条件
```text
时间锚点窗口内没有任何输入
输入结果为 Miss
```
即视为时间锚点失败。
### 11.4 成功结果
```text
保持当前相位。
Perfect / Good:增加 1 层攻击 Buff。
Bad:不增加攻击 Buff。
按时间锚点回血规则结算生命回复。
播放锚定成功反馈。
不重置音乐时间。
```
### 11.5 失败结果
```text
当前相位从 Past 切换到 Future,或从 Future 切换到 Past。
播放相位切换反馈。
不重置音乐时间。
```
### 11.6 时间锚点攻击 Buff
成功收集时间锚点时,Perfect / Good 让玩家获得 1 层攻击 Buff;Bad 只维持当前相位,不增加攻击 Buff。
```text
每层攻击 Buff:攻击力 +50%
最大层数:7 层
最大攻击增幅:+350%
最大总攻击倍率:450%
```
攻击 Buff 按加算处理,只影响玩家造成的伤害,不影响节奏判定窗口、动作时长、动作位移、能量回复和能量消耗。
伤害计算建议:
```text
最终伤害 = 动作基础伤害 × 节奏判定伤害倍率 × (1 + 攻击 Buff 层数 × 50%)
```
当攻击 Buff 达到 7 层后,继续成功收集时间锚点不再增加层数,但仍播放锚点成功反馈。
### 11.7 相位切换对攻击 Buff 的影响
每次发生 Past / Future 相位切换时,当前攻击 Buff 层数减少 2 层,最低降至 0 层。
示例:
```text
7 层 → 5 层
5 层 → 3 层
2 层 → 0 层
1 层 → 0 层
0 层 → 0 层
```
建议公式:
```text
attack_buff_stack = max(attack_buff_stack - 2, 0)
```
这个规则只在相位实际切换时触发。成功维持当前相位不会减少攻击 Buff。
### 11.8 连击数对时间锚点频率的影响
连击数越高,后续时间锚点在每 4 拍窗口内出现得越频繁。
该规则用于奖励稳定节奏输入和连续成功动作。连击越高,玩家越容易获得更多时间锚点,从而获得更多攻击 Buff。
时间锚点频率存在上限:
```text
上限 = 每 4 拍内 4 个 RhythmBeat 都被标记为 TimeAnchor。
```
频率提高时,系统只改变已有 RhythmBeat 的事件类型,不额外生成新的屏幕元素。
### 11.9 推荐频率档位
第一版使用每 4 拍为一个频率窗口,便于玩家理解和调参。
| 连击数 | 每 4 拍内 TimeAnchor 数量 | 说明 |
|---:|---:|---|
| 0 - 7 | 1 个 | 基础频率 |
| 8 - 15 | 2 个 | 低连击奖励 |
| 16+ | 4 个 | 频率上限 |
具体数值可以根据歌曲 BPM 和操作密度调整,但必须保持“不额外生成节奏点,只升级已有 RhythmBeat”的原则。
---
## 12. Past / Future 相位系统
### 12.1 相位状态
```text
Past
Future
```
### 12.2 相位影响范围
相位影响:
```text
敌人强弱倍率
Boss 状态
背景和场景视觉层
UI 主题色
音乐层音量
部分特效颜色
```
相位不影响:
```text
TileMap 碰撞
平台位置
玩家输入规则
四拍槽容量
基础节奏 BPM
音乐播放时间轴
```
### 12.3 相位切换规则
```text
Past → Future
Future → Past
```
切换由 TimeAnchorSystem 触发。
每次相位实际切换时,当前攻击 Buff 层数减少 2 层,最低为 0 层。
```text
attack_buff_stack = max(attack_buff_stack - 2, 0)
```
相位切换不清空四拍槽,不重置音乐时间,不重置玩家能量。
相位切换不改变玩家、小怪或 Boss 的当前生命值,也不追溯已经结算完成的伤害。相位切换后,小怪后续受到伤害倍率、造成伤害倍率和攻击拍点按新相位规则生效。若小怪攻击动作已经开始,本次攻击保留动作开始时的相位参数,下一次攻击再使用新相位参数。
### 12.4 相位切换表现
```text
短暂画面闪白 / 闪色
UI 相位标识变化
敌人外观状态变化
Past / Future 音乐层交叉淡入淡出
```
---
## 13. 四拍槽系统
### 13.1 显示符号
```text
A
W
S
sp
```
`sp` 表示 Space。
`∅` 表示 Miss。
### 13.2 容量规则
```text
最多保存 4 个槽位。
每次输入判定并尝试动作后写入 1 个槽位。
第 4 槽写入后进行结算,然后清空。
技能成功释放后立即清空。
```
### 13.3 技能读取规则
地面技能读取以 `sp` 结尾的连续有效序列:
```text
[A][sp] → 突进
[A][A][sp] → 连段终结
[A][A][A][sp] → 震地击飞
```
包含 `∅` 的序列不能跨槽读取。
### 13.4 时间锚点与四拍槽关系
TimeAnchor 本身不写入四拍槽。只有玩家在时间锚点窗口内实际输入时,才按普通输入规则写入四拍槽。
---
## 14. 能量系统
### 14.1 能量来源
普攻成功释放回复能量。
```text
Perfect:回复完整数值
Good:回复较少
Bad:回复更少
Miss:不回复
```
### 14.2 能量消耗
技能和蓄力释放消耗能量。
```text
Perfect:消耗较低
Good:标准消耗
Bad:消耗较高
Miss:不释放,不消耗
```
### 14.3 能量不足
如果能量不足:
```text
技能不释放。
动作结果为失败。
可以写入输入槽,但 action_executed = false。
不触发技能伤害。
```
### 14.4 生命恢复
生命恢复绑定时间锚点,不绑定具体攻击动作,避免玩家为了回血重复刷单一动作。
```text
每个 4 拍窗口内,第一次成功锚定时间锚点时回复生命。
Perfect:回复 30 HP
Good:回复 20 HP
Bad:回复 10 HP
Miss / 未输入:不回复,并触发相位切换
```
当玩家当前生命低于最大生命 50% 时,本次时间锚点回血量翻倍:
```text
Perfect:回复 60 HP
Good:回复 40 HP
Bad:回复 20 HP
```
回血量不能超过玩家最大生命。攻击 Buff 是否增加与回血分开结算:Bad 可以维持相位并触发对应回血,但不增加攻击 Buff。
---
## 15. 动作系统
### 15.1 动作分类
```text
普攻
技能
蓄力
防御
生命状态
基础状态
```
### 15.2 分类规则
普攻:成功释放回复能量,回复数值和节奏判定有关。
技能:成功释放消耗能量,消耗数值和节奏判定有关。
蓄力:进入蓄力状态不消耗能量,释放攻击时才消耗能量;蓄力分为 3 个等级,等级越高伤害越高,消耗越高。
防御:主动防御状态,成功释放后可抵挡正面攻击;防御效果受节奏判定影响。
生命状态:由战斗结果触发,不由玩家主动释放。
基础状态:用于表现待机、转身等,不参与伤害结算。
### 15.3 效果定义
浮空:让自身或目标离开 `[地面]`,用于自身起跳、空中连段或进入空中状态。
击退:让目标进入 `[击退]` 状态,并按动作的击退距离向受击方向后移。
击飞:让目标离开 `[地面]`,进入空中受击或浮空状态,位移由击飞距离决定。
霸体:动作过程中在霸体时间内受到伤害不会进入 `[受击]` / `[击退]` 状态。
冲刺:动作过程中自身碰撞体积消失,可以穿过敌人。
防御:动作过程中可抵挡正面普通攻击,具体减伤比例由节奏判定决定。
### 15.3.1 效果参数
有对应效果的动作必须填写对应参数;没有该效果时参数为 0。
| 参数 | 适用效果 | 说明 |
|---|---|---|
| 击退距离 | 击退 | 目标在 `[击退]` 状态中的水平后退距离。 |
| 击飞距离 | 击飞 | 目标被打离地面的高度 / 上抛距离。 |
| 霸体时间 | 霸体 | 动作开始后保持霸体的时间;超过该时间后恢复正常受击规则。 |
| 冲刺距离 | 冲刺 | 自身在冲刺动作中的水平位移距离。 |
| 防御时间 | 防御 | 正面防御有效的持续时间。 |
### 15.4 释放条件
所有主动动作的释放条件只使用:
```text
[地面]
[空中]
```
动作前置、四拍槽要求、能量要求、蓄力等级写入动作数据。
S 键在地面采用短按 / 长按区分:短按 S 触发防御;长按 S 进入 S 蓄力。
---
## 16. 动作设定表
### 动作名称:普攻一段
编号:01
分类:普攻
释放条件:[地面]
按键判定:[A]
技能描述:向前移动时挥出一剑,是地面连段起手动作。
前缀动作:无
后缀动作:普攻二段 [A][A] / 突进 [A][sp] / A 蓄力 / 防御 [S]
效果:无
基础伤害:100
基础横向位移:100
基础纵向位移:20
能量回复:10
能量消耗:0
动作时长:0.5s
### 动作名称:普攻二段
编号:02
分类:普攻
释放条件:[地面]
按键判定:[A][A]
技能描述:在普攻一段后继续向前追击,挥出第二剑。
前缀动作:普攻一段 [A]
后缀动作:普攻三段 [A][A][A] / 连段终结 [A][A][sp] / A 蓄力 / 防御 [S]
效果:无
基础伤害:120
基础横向位移:110
基础纵向位移:24
能量回复:12
能量消耗:0
动作时长:0.55s
### 动作名称:普攻三段
编号:03
分类:普攻
释放条件:[地面]
按键判定:[A][A][A]
技能描述:地面普通连段的第三击,向前压制敌人。
前缀动作:普攻二段 [A][A]
后缀动作:震地击飞 [A][A][A][sp] / A 蓄力 / 防御 [S]
效果:无
基础伤害:150
基础横向位移:120
基础纵向位移:28
能量回复:15
能量消耗:0
动作时长:0.65s
### 动作名称:突进
编号:04
分类:技能
释放条件:[地面]
按键判定:[A][sp]
技能描述:向前高速突进并攻击路径上的敌人。
前缀动作:普攻一段 [A]
后缀动作:无
效果:冲刺
基础伤害:160
基础横向位移:260
基础纵向位移:0
能量回复:0
能量消耗:20
动作时长:0.45s
### 动作名称:连段终结
编号:05
分类:技能
释放条件:[地面]
按键判定:[A][A][sp]
技能描述:在二段普攻后接出强力终结斩,造成更高伤害。
前缀动作:普攻二段 [A][A]
后缀动作:无
效果:击退
基础伤害:220
基础横向位移:0
基础纵向位移:0
击退距离:160
能量回复:0
能量消耗:30
动作时长:0.7s
### 动作名称:震地击飞
编号:06
分类:技能
释放条件:[地面]
按键判定:[A][A][A][sp]
技能描述:三段普攻后原地释放震地重击,将敌人打离地面。
前缀动作:普攻三段 [A][A][A]
后缀动作:无
效果:击飞 / 霸体
基础伤害:280
基础横向位移:0
基础纵向位移:0
击飞距离:140
霸体时间:0.6s
能量回复:0
能量消耗:40
动作时长:0.85s
### 动作名称:上挑
编号:07
分类:普攻
释放条件:[地面]
按键判定:[W]
技能描述:向上挥剑攻击,将自身带入空中,并可衔接空中动作。
前缀动作:无
后缀动作:空中连斩 [空中A] / 下坠攻击 [空中S]
效果:自身浮空 / 击飞
基础伤害:120
基础横向位移:60
基础纵向位移:180
击飞距离:160
能量回复:12
能量消耗:0
动作时长:0.55s
### 动作名称:A 蓄力
编号:08
分类:蓄力
释放条件:[地面]
按键判定:[A长按]
技能描述:A 按下时先释放当前普攻段;如果在普攻尾段仍保持 A,则进入蓄力状态。蓄力分为 3 个等级,等级越高,后续剑雨伤害越高、消耗越高。
前缀动作:普攻一段 [A] / 普攻二段 [A][A] / 普攻三段 [A][A][A]
后缀动作:剑雨 [A松开]
效果:霸体
霸体时间:0.35s
基础伤害:0
基础横向位移:0
基础纵向位移:0
能量回复:0
能量消耗:0
动作时长:持续蓄力,最多 3 级
### 动作名称:剑雨
编号:09
分类:蓄力
释放条件:[地面]
按键判定:[A蓄力后松开]
技能描述:结束 A 蓄力后释放剑雨攻击。蓄力等级越高,伤害越高,攻击范围越强,能量消耗越高。
前缀动作:A 蓄力
后缀动作:无
效果:无
基础伤害:等级1:180 / 等级2280 / 等级3420
基础横向位移:0
基础纵向位移:0
能量回复:0
能量消耗:等级1:20 / 等级2:35 / 等级350
动作时长:等级1:0.8s / 等级21.0s / 等级31.2s
### 动作名称:防御
编号:10
分类:防御
释放条件:[地面]
按键判定:[S]
技能描述:短按 S 进入防御架势,用于抵挡正面普通攻击。若持续按住 S 超过蓄力判定阈值,则转入 S 蓄力。
前缀动作:待机 / 转身 / 任意地面动作结束
后缀动作:S 蓄力 [S长按] / 待机
效果:防御 / 霸体
霸体时间:1.0s
基础伤害:0
基础横向位移:0
基础纵向位移:0
能量回复:0
能量消耗:0
动作时长:0.4s
### 动作名称:S 蓄力
编号:11
分类:蓄力
释放条件:[地面]
按键判定:[S长按]
技能描述:地面按住 S 时,先进入防御架势;持续按住超过蓄力判定阈值后进入远程蓄力状态。蓄力分为 3 个等级,等级越高,后续斩波伤害越高、消耗越高。
前缀动作:防御 [S] / 待机
后缀动作:斩波 [S长按][sp]
效果:霸体
霸体时间:0.35s
基础伤害:0
基础横向位移:0
基础纵向位移:0
能量回复:0
能量消耗:0
动作时长:持续蓄力,最多 3 级
### 动作名称:斩波
编号:12
分类:蓄力
释放条件:[地面]
按键判定:[S长按][sp]
技能描述:S 蓄力期间按下 Space,向前释放远程斩波。蓄力等级越高,斩波伤害越高,能量消耗越高。
前缀动作:S 蓄力
后缀动作:无
效果:击退
基础伤害:等级1:120 / 等级2200 / 等级3320
基础横向位移:0
基础纵向位移:0
击退距离:60
能量回复:0
能量消耗:等级1:15 / 等级2:25 / 等级340
动作时长:0.45s
### 动作名称:空中连斩
编号:13
分类:普攻
释放条件:[空中]
按键判定:[A]
技能描述:在空中快速挥剑连斩,主要用于空中追击。
前缀动作:上挑 [W] / 其他进入空中的动作
后缀动作:下坠攻击 [空中S]
效果:无
基础伤害:130
基础横向位移:120
基础纵向位移:20
能量回复:10
能量消耗:0
动作时长:0.6s
### 动作名称:下坠攻击
编号:14
分类:普攻
释放条件:[空中]
按键判定:[S]
技能描述:从空中向下坠落攻击,命中或落地时造成冲击。
前缀动作:上挑 [W] / 空中连斩 [空中A] / 其他进入空中的动作
后缀动作:无
效果:击飞
基础伤害:180
基础横向位移:0
基础纵向位移:-260
击飞距离:120
能量回复:15
能量消耗:0
动作时长:0.65s
### 动作名称:落下
编号:15
分类:基础状态
释放条件:[空中]
按键判定:无(自动)
技能描述:角色处于空中且没有其他可接入动作时,自动进入落下动作;落下期间若输入满足空中动作条件,可立即接入该动作。
前缀动作:上挑 [W] / 空中连斩 [空中A] / 下坠攻击结束后仍在空中 / 其他进入空中的动作
后缀动作:空中连斩 [空中A] / 下坠攻击 [空中S] / 落地后待机
效果:无
基础伤害:0
基础横向位移:0
基础纵向位移:向下落至地面
击退距离:0
击飞距离:0
霸体时间:0
能量回复:0
能量消耗:0
动作时长:循环,直到落地或被空中动作接入
### 动作名称:击退
编号:16
分类:生命状态
释放条件:[地面] / [空中]
按键判定:无
技能描述:角色受到带击退距离的可打断攻击后进入击退状态,按攻击动作配置的击退距离 / 击飞距离产生位移,期间无法主动行动。
前缀动作:任意可被打断动作
后缀动作:待机 / 落下(若击退结束后仍在空中)
效果:击退
基础伤害:0
基础横向位移:0
基础纵向位移:0
击退距离:按攻击动作配置
击飞距离:按攻击动作配置,若为 0 则不离地
霸体时间:0
能量回复:0
能量消耗:0
动作时长:0.4s 或按攻击动作配置
### 动作名称:受击
编号:17
分类:生命状态
释放条件:[地面] / [空中]
按键判定:无
技能描述:角色受到不带击退距离的可打断攻击后进入受击状态,短时间无法行动。
前缀动作:任意可被打断动作
后缀动作:待机
效果:无
基础伤害:0
基础横向位移:0
基础纵向位移:0
能量回复:0
能量消耗:0
动作时长:0.4s
### 动作名称:死亡
编号:18
分类:生命状态
释放条件:[地面] / [空中]
按键判定:无
技能描述:生命值归零后进入死亡状态,停止所有输入和动作。
前缀动作:任意状态
后缀动作:无
效果:无
基础伤害:0
基础横向位移:0
基础纵向位移:0
能量回复:0
能量消耗:0
动作时长:按死亡动画长度
### 动作名称:待机
编号:19
分类:基础状态
释放条件:[地面]
按键判定:无
技能描述:角色没有执行动作时的默认状态。
前缀动作:任意动作结束
后缀动作:任意可释放动作
效果:无
基础伤害:0
基础横向位移:0
基础纵向位移:0
能量回复:0
能量消耗:0
动作时长:循环
### 动作名称:转身
编号:20
分类:基础状态
释放条件:[地面]
按键判定:方向变化 / 目标切换
技能描述:角色调整朝向,用于决定后续攻击方向。
前缀动作:待机 / 动作结束
后缀动作:任意方向相关动作
效果:无
基础伤害:0
基础横向位移:0
基础纵向位移:0
能量回复:0
能量消耗:0
动作时长:0.15s
---
## 17. 敌人与相位规则
### 17.1 敌人类型
敌人至少分为两类:
```text
PastStrongEnemy
FutureStrongEnemy
```
普通小怪基础生命建议值:
```text
小怪 HP650
```
小怪只有一条真实生命值。相位切换不会重算小怪当前 HP,也不会按百分比换算或恢复生命。
### 17.2 PastStrongEnemy
```text
Past 相位:强
Future 相位:弱
```
建议倍率:
| 相位 | 状态 | 造成伤害 | 受到伤害 | 攻击拍点 |
|---|---|---:|---:|---|
| Past | 强势 | 140% | 25% | 每 1 拍攻击一次 |
| Future | 弱势 | 70% | 250% | 每 2 拍攻击一次 |
### 17.3 FutureStrongEnemy
```text
Future 相位:强
Past 相位:弱
```
建议倍率:
| 相位 | 状态 | 造成伤害 | 受到伤害 | 攻击拍点 |
|---|---|---:|---:|---|
| Future | 强势 | 140% | 25% | 每 1 拍攻击一次 |
| Past | 弱势 | 70% | 250% | 每 2 拍攻击一次 |
### 17.4 小怪相位切换结算
```text
相位切换不改变小怪当前生命值。
相位切换不追溯已经结算完成的伤害。
相位切换后,小怪后续受到伤害倍率、造成伤害倍率和攻击拍点按新相位规则生效。
若小怪攻击动作已经开始,本次攻击保留动作开始时的相位参数,下一次攻击再使用新相位参数。
```
设计目标:
```text
弱势相位:小怪约 1 个重技能加补刀,或 2 个技能击杀。
强势相位:无攻击 Buff 时约十几到二十多次攻击击杀。
满攻击 Buff 时允许玩家强行击杀强势相位小怪,作为高水平维持节奏的奖励。
```
### 17.5 敌人行为原则
```text
敌人行为可以简单,但相位强弱必须清楚。
敌人不依赖复杂 AI。
敌人攻击应能被节奏动作、防御、浮空、击飞、击退或相位策略影响。
```
---
## 18. Boss 规则
Boss 是可选扩展内容。若时间允许,Boss 使用同一个 Boss 在 Past / Future 下不同状态的方式实现。
Boss 基础生命建议值:
```text
Boss HP28000
```
Boss 设计目标:玩家在满攻击 Buff 且能稳定维持输出的情况下,约 30 秒击败 Boss。
### 18.1 Boss 相位差异
```text
Past 状态:攻击慢,单次伤害高。
Future 状态:攻击快,频率高,单次伤害低。
```
Boss 行为、招式节奏和演出可以随相位变化;Boss 最大生命、当前生命和受到伤害倍率不随相位变化。
### 18.2 Boss 与时间锚点
Boss 可以触发条件型 TimeAnchorEvent。
```text
Boss 准备特殊攻击
→ 生成 TimeAnchorEvent
→ 成功:维持当前相位
→ 失败:切换相位,Boss 状态变化,攻击 Buff 减少 2 层
```
相位切换不改变 Boss 当前生命值,也不追溯已经结算完成的伤害。
Boss 不作为第一优先级,核心目标仍是普通敌人与相位切换闭环。
---
## 19. UI 反馈系统
### 19.1 必要 UI
```text
节奏轨道
时间锚点图标
四拍槽
中央判定反馈
当前相位显示
玩家血量
玩家能量
敌人血量或状态
```
### 19.2 四拍槽显示
只显示:
```text
A / W / S / sp / ∅
```
不在槽内显示:
```text
Perfect / Good / Bad / Miss
```
### 19.3 时间锚点显示
时间锚点必须区别于普通节奏点。
建议显示内容:
```text
特殊锚点图标
明显颜色
靠近中心时强化提示
成功时锁定反馈
失败时相位切换反馈
```
### 19.4 相位显示
HUD 必须始终显示当前相位:
```text
Past
Future
```
相位切换时应有明显短反馈,但不遮挡节奏判断。
---
## 20. 音乐音效系统
### 20.1 音乐层
游戏需要两套音乐层:
```text
Past Loop
Future Loop
```
### 20.2 音乐要求
两套音乐必须满足:
```text
BPM 一致
拍号一致
小节长度一致
Loop 长度一致
起始点严格对齐
每一拍的位置严格对齐
```
### 20.3 切换规则
相位切换时不重启音乐。
```text
当前播放到第 N 秒
→ 从另一相位音乐的第 N 秒继续播放
```
建议实现:
```text
Past Loop 与 Future Loop 同时播放。
Past 相位:Past 音量 1Future 音量 0。
Future 相位:Past 音量 0Future 音量 1。
切换时 0.2s - 0.5s 交叉淡入淡出。
```
核心原则:
```text
世界可以切换,节奏不能断。
```
### 20.4 必要音效
```text
普通按键反馈
Perfect
Good
Bad
Miss
时间锚点出现
时间锚点成功
时间锚点失败
相位切换 Past → Future
相位切换 Future → Past
普攻击中
技能释放
蓄力开始
蓄力等级提升
蓄力释放
防御成功
防御硬直
受击
死亡
```
---
## 21. 数据资源结构
### 21.1 ActionData
每个动作一份数据:
```text
action_id
name
category
input_pattern
release_condition
prefix_actions
suffix_actions
effects
base_damage
base_horizontal_move
base_vertical_move
knockback_distance
knockup_distance
super_armor_duration
guard_duration
dash_distance
energy_gain
energy_cost
duration
hitbox_profile
animation_name
sfx_name
```
### 21.2 ChartEventData
```text
event_id
event_type
beat_time
window_size
visual_marker
audio_cue
condition
```
### 21.3 TimeAnchorData
```text
anchor_id
beat_time
trigger_type
combo_frequency_profile
success_rule
fail_rule
perfect_good_buff_gain
phase_shift_buff_loss_stack
success_feedback
fail_feedback
```
字段约定:
```text
perfect_good_buff_gain = 1
bad_buff_gain = 0
phase_shift_buff_loss_stack = 2
```
### 21.4 AttackBuffData
```text
buff_id
stack_count
max_stack = 7
damage_bonus_per_stack = 0.50
max_damage_bonus = 3.50
phase_shift_loss_stack = 2
```
### 21.5 PhaseProfile
```text
phase_id: Past / Future
visual_profile
audio_layer
enemy_modifier_table
ui_theme
```
### 21.6 EnemyData
```text
enemy_id
enemy_type
base_hp
base_damage
phase_strength_type
past_modifier
future_modifier
actions
animation_set
```
---
## 22. 开发阶段
### 阶段 1:节奏输入与普攻闭环
目标:
```text
A 可以判定并释放普攻一段、二段、三段。
Miss 写入 ∅。
四拍槽正常显示。
能量回复生效。
```
### 阶段 2:技能与能量闭环
目标:
```text
[A][sp] 释放突进。
[A][A][sp] 释放连段终结。
[A][A][A][sp] 释放震地击飞。
技能消耗能量。
能量不足时技能失败。
```
### 阶段 3:空中动作与蓄力
目标:
```text
W 释放上挑并进入空中。
空中 A 释放空中连斩。
空中 S 释放下坠攻击。
短按 S 释放防御。
A 长按进入蓄力,松开释放剑雨。
S 长按进入蓄力,Space 释放斩波。
```
### 阶段 4:时间锚点、攻击 Buff 与相位切换
目标:
```text
TimeAnchorEvent 周期性出现。
Perfect / Good 输入维持相位,并获得 1 层攻击 Buff;Bad 输入只维持相位。
AttackBuff 每层提供 +50% 攻击力,最高 7 层。
Miss 或无输入切换 Past / Future。
相位切换时 AttackBuff 层数减少 2 层。
HUD 显示当前相位和攻击 Buff 层数。
```
### 阶段 5:敌人相位强弱
目标:
```text
PastStrongEnemy 在 Past 强、Future 弱。
FutureStrongEnemy 在 Future 强、Past 弱。
小怪基础 HP 为 650。
强势相位每 1 拍攻击一次,受到伤害 25%。
弱势相位每 2 拍攻击一次,受到伤害 250%。
相位切换不改变小怪当前生命值,后续倍率按新相位生效。
```
### 阶段 6:双音乐层切换
目标:
```text
Past Loop 与 Future Loop 同步播放。
相位切换时交叉淡入淡出。
音乐不重启。
节奏判定不受切换影响。
```
### 阶段 7Boss 与表现优化
目标:
```text
Boss 行为状态可随相位切换,但 Boss HP 与受伤倍率不随相位变化。
增加相位切换特效。
完善 UI、音效、震屏、命中反馈。
```
---
## 23. 验收清单
### 23.1 输入与动作
```text
所有输入先节奏判定。
Perfect / Good / Bad 可以执行动作。
Miss 不执行动作。
Miss 写入 ∅。
A 能打出一段、二段、三段。
[A][sp] 能释放突进。
[A][A][sp] 能释放连段终结。
[A][A][A][sp] 能释放震地击飞。
W 能释放上挑并进入空中。
空中 A 能释放空中连斩。
空中 S 能释放下坠攻击。
空中没有可接入动作时自动进入落下。
短按 S 能释放防御。
防御能抵挡正面普通攻击。
防御效果受 Perfect / Good / Bad 判定影响。
Miss 时防御不释放。
A 长按可以进入蓄力并释放剑雨。
S 长按可以进入蓄力并释放斩波。
```
### 23.2 四拍槽
```text
四拍槽最多 4 个。
四拍槽只显示 A / W / S / sp / ∅。
四拍槽不显示 Perfect / Good / Bad / Miss。
第 4 槽写入后结算并清空。
技能成功释放后清空。
包含 ∅ 的序列不能跨槽读取技能。
```
### 23.3 时间锚点
```text
普通节奏点不会切换相位。
TimeAnchorEvent 会周期性出现。
TimeAnchorEvent 可以被条件触发。
锚点窗口内 Perfect / Good / Bad 输入维持当前相位。
锚点窗口内 Perfect / Good 输入增加 1 层攻击 BuffBad 输入不增加攻击 Buff。
锚点窗口内 Miss 或无输入切换 Past / Future。
相位切换时攻击 Buff 层数减少 2 层,最低为 0 层。
TimeAnchor 本身不写入四拍槽。
玩家在锚点窗口内的实际输入照常写入四拍槽。
连击数越高,TimeAnchorEvent 出现越频繁。
TimeAnchorEvent 频率档位为:0-7 连击每 4 拍 1 个,8-15 连击每 4 拍 2 个,16+ 连击每 4 拍 4 个。
TimeAnchorEvent 频率上限为每 4 拍内 4 个 RhythmBeat 都升级为 TimeAnchor。
每个 4 拍窗口内,第一次成功锚定 TimeAnchorEvent 时回复生命。
TimeAnchorEvent 回血量为:Perfect 30 HPGood 20 HPBad 10 HP。
玩家当前生命低于最大生命 50% 时,本次 TimeAnchorEvent 回血翻倍。
TimeAnchorEvent 回血不能超过玩家最大生命。
```
### 23.4 相位系统
```text
当前相位只有 Past / Future。
Past / Future 共用碰撞结构。
相位切换不改变 TileMap 碰撞。
相位切换改变视觉、音乐、敌人倍率、UI。
PastStrongEnemy 与 FutureStrongEnemy 的强弱倍率正确变化。
小怪当前 HP 是单一真实值,相位切换不重算、不按百分比转换、不回复。
```
### 23.4.1 攻击 Buff
```text
攻击 Buff 初始为 0 层。
Perfect / Good 成功收集 1 个时间锚点后增加 1 层;Bad 不增加层数。
每层攻击 Buff 提供 +50% 攻击力。
最大层数为 7 层。
最大攻击增幅为 +350%。
达到 7 层后继续收集时间锚点不再增加层数。
相位切换时当前层数减少 2 层,最低为 0 层。
攻击 Buff 只影响玩家造成的伤害。
```
### 23.5 音乐音效
```text
Past Loop 与 Future Loop BPM 一致。
两套音乐起始点和拍点严格对齐。
切换相位时音乐不重启。
切换时使用交叉淡入淡出。
节奏判定不受音乐层切换影响。
Perfect / Good / Bad / Miss 有清晰音效反馈。
时间锚点成功和失败有不同音效反馈。
```
### 23.6 战斗
```text
普攻成功回复能量。
技能成功消耗能量。
蓄力进入状态不消耗能量,释放时消耗能量。
浮空和击飞能让角色或敌人离开地面。
击退能让目标进入击退状态并后退。
霸体期间受到伤害不会进入受击或击退状态。
冲刺期间可以穿过敌人。
防御期间可以抵挡正面普通攻击。
背后攻击、抓取、破防攻击、范围环境伤害不受防御减免。
受击和死亡能正确打断玩家动作。
小怪基础 HP 为 650。
小怪强势相位受到玩家伤害倍率为 25%,每 1 拍可攻击一次。
小怪弱势相位受到玩家伤害倍率为 250%,每 2 拍可攻击一次。
Boss HP 为 28000。
Boss 行为和表现可随相位变化。
Boss 当前 HP 与受到伤害倍率不随相位变化。
```
---
## 24. 当前版本优先级
最高优先级:
```text
节奏输入
动作执行
四拍槽
时间锚点
攻击 Buff 层数
相位切换
敌人相位强弱
双音乐层同步切换
```
第二优先级:
```text
蓄力动作
空中动作
防御动作
技能手感
UI 强反馈
音效完整性
```
第三优先级:
```text
Boss
高级特效
相位切换演出
更多敌人类型
复杂条件型时间锚点
```