# 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 层攻击 Buff,Bad 只维持相位但不增加 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 / Future,AttackBuff 层数减少 2 层 → EnemySystem / AudioLayerController / VisualLayer / UI 更新 ``` ### 4.2.1 连击、时间锚点和攻击 Buff 的数据流 ```text 玩家连续成功执行动作 → ComboCounter 增加 → TimeAnchorSystem 根据当前连击数调整 TimeAnchor 生成频率 → TimeAnchorEvent 出现 → 玩家成功锚定 → Perfect / Good:AttackBuffStack + 1;Bad:AttackBuffStack + 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 / 等级2:280 / 等级3:420 基础横向位移:0 基础纵向位移:0 能量回复:0 能量消耗:等级1:20 / 等级2:35 / 等级3:50 动作时长:等级1:0.8s / 等级2:1.0s / 等级3:1.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 / 等级2:200 / 等级3:320 基础横向位移:0 基础纵向位移:0 击退距离:60 能量回复:0 能量消耗:等级1:15 / 等级2:25 / 等级3:40 动作时长: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 小怪 HP:650 ``` 小怪只有一条真实生命值。相位切换不会重算小怪当前 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 HP:28000 ``` 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 音量 1,Future 音量 0。 Future 相位:Past 音量 0,Future 音量 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 同步播放。 相位切换时交叉淡入淡出。 音乐不重启。 节奏判定不受切换影响。 ``` ### 阶段 7:Boss 与表现优化 目标: ```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 层攻击 Buff;Bad 输入不增加攻击 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 HP,Good 20 HP,Bad 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 高级特效 相位切换演出 更多敌人类型 复杂条件型时间锚点 ```