57 lines
6.0 KiB
Markdown
57 lines
6.0 KiB
Markdown
# 高阶敌人 AI 设计:专家级博弈与“连招拆招”系统 (Elite AI: Action-AI Sandbox)
|
||
|
||
## 1. 设计目标与核心理念
|
||
- **目标**:为 Cielonos 打造一种拒绝纯数值压积的高阶 AI 体验。当玩家面对精英/Boss级别敌人时,敌人的动作反馈取决于玩家当前的操作与走位。
|
||
- **理念**:
|
||
- **信息透明博弈**:不是毫无征兆的瞬移或无敌判定,而是基于“预测区域”与“前摇动作”的反应。
|
||
- **高风险高收益**:敌人的“变招”带有破绽,一旦玩家通过完美闪避、弹反或抓后摇化解危机,将获得绝佳的输出窗口和大量增益。
|
||
- **难而不恶心**:必须给玩家留出足够的反应窗口,且每一次失败都应该是玩家的策略失误。
|
||
|
||
## 2. 核心技术底座:战斗信息广播系统 (Combat Broadcast System)
|
||
为了让 AI 能够“见招拆招”,我们需要在程序框架层面补充一套跨实体的“信息传递网络”。除了玩家自身的视线追踪(Sight)和听觉(Hearing)外,还需要一种基于攻击动作和状态的系统。
|
||
|
||
### 2.1 【玩家操作意图广播基础】
|
||
目前项目中使用了 Behavior Designer 的 `HasReceivedContextEvent` 作为 AI 接收事件的节点接口。在释放特定招式(如部分特定的攻击行为)时,通过 `behaviorSc.DispatchContextEvent` 发送事件信息。
|
||
作为高阶方案的延展,未来需要进行以下拓展:
|
||
1. **高维危险感知区域 (Threat Area)**:对于大型蓄力或高危攻击,未来将引入一层专门的“危险预测碰撞体(Special Alert Trigger/Area)”组件。在攻击的“前摇阶段”,该区域生成并立即覆盖战场。
|
||
2. **事件总线 (Event Bus)**:目前的 `ContextEvent` 是对单体 AI 的直接派发。由于之后会有复数个高级 AI 共存,需要一个全局的 **战斗意图事件总线 (Combat Intent Event Bus)**,当危险区域命中 AI 时,或者玩家做出特定流派的大动作时,通过该总线广播给感知范围内的 AI。
|
||
|
||
### 2.2 【AI 获取环境信号】
|
||
对于精英级敌人的行为树设计,它们将依靠上述信息源执行**条件中断(Conditional Aborts)**:
|
||
- 当触发了对应 `ContextEvent` 或触发了“高危险区域感知”时,将该信息的关键数据写入行为树黑板变量(如 `IncomingThreatType`)。
|
||
- 触发高优先级拦截,打断诸如“巡逻”、“常规平A”等一般行为,强制进入对应的高阶应对逻辑。
|
||
|
||
## 3. AI “见招拆招”行为池设计
|
||
|
||
基于上述信息广播底座,我们可以为专家级 AI 设计以下应对行为(Action Nodes):
|
||
|
||
### 3.1 应对 玩家“范围蓄力/高伤害技能前摇”
|
||
- **判定条件**:接收到 `attackType = Charge/Heavy` 且当前与玩家的距离位于 `threatArea` 内部。
|
||
- **AI 决策 1:完美后撤/侧闪 (Evade)**如果 AI 的当前硬直极小,判定时间充足,立即执行闪避动画,向安全区域移动。
|
||
- **AI 决策 2:抢攻打断 (Interruptive Strike)**如果 AI 判断时间不及,但玩家这招没有“超级护甲霸体”,AI 会立即瞬发一记快速的“轻攻击”以求打断玩家蓄力。
|
||
|
||
### 3.2 应对 玩家“无脑连续轻击/平A连段”
|
||
- **判定条件**:AI 记录玩家在短时间内连续多次发起 `attackType = Light` 并且自身处于防守或受迫状态(如被连续刮痧)。
|
||
- **AI 决策 1:霸体弹反 (Perfect Guard/Parry Stance)**AI 突然开启闪烁着特殊光芒的防御架势动画(例如举起大盾或兵刃发光)。
|
||
- **玩家博弈**:如果玩家收不住手,一刀砍上去,则玩家被强行“弹刀”弹飞(大硬直)。如果玩家及时收手(Switch-Tech 或利用闪避取消),则 AI 的防御架势在持续一段时间后会露出极大的后摇破绽,玩家可趁机反击。
|
||
- **AI 决策 2:后撤斩 (Retreating Slash)**硬抗一击(或者超级护甲),向后位移同时挥出一剑,逼迫玩家交出闪避。
|
||
|
||
### 3.3 应对 玩家“频繁切换武器 (Switch-Tech 滥用)”
|
||
- **判定条件**:接收到高频的 `SwitchWeapon` 广播信号。
|
||
- **AI 决策:空间封锁 (Zone Control)**AI 认为玩家在不断高速位移或打瞬间爆发,此时 AI 不再与之近身缠斗,而是向周围释放大范围的持续追踪射线/地刺、或召唤延迟引爆的立场,压缩玩家在切换武器时的走位空间。
|
||
|
||
## 4. 自定义 Behavior Designer 节点功能描述规划 (Task Nodes)
|
||
既然你具备强大的 C# 与 BD 集成开发能力,这里提供我们需要在后续逐步编写的**自定义行为树节点功能描述**,你可参考实现:
|
||
|
||
- **[Conditional] `HasHighThreatIncoming`**:
|
||
- **功能要求**:监听/检测自己是否处于玩家生成的“高危险感知感知区域”中,或是否收到了表明有巨大威胁的全局 `ContextEvent`。
|
||
- **参数导出**:允许将威胁的类型(是范围爆炸、还是突进劈砍)写入黑板里的 `Enum` 变量中,以便驱动下方的不同分枝。
|
||
|
||
- **[Action] `EvadeOrBlock` (应对危险动作选择器)**:
|
||
- **功能要求**:读取上级节点写入的威胁类型与自身当前可执行状态,决定播放“后侧步(闪避)”、“防御(吸收或弹反)”或者“强行攻击打断”的对应动画片段。该节点需与 `Automata` 内封装的动画打断逻辑深度绑定。
|
||
|
||
## 5. 阶段待办与开发顺序确认 (Milestones)
|
||
- [ ] **技术基建 (Event & Area)**:未来规划“高危险区域(Special Alert Trigger)”的实现方式,并视情况构建全局 Event Bus 以替代/封装针对单体的 `DispatchContextEvent`。
|
||
- [ ] **行为树框架搭建 (BD Foundation)**:在特定的专家级怪物的行为树中,拉出一支 `High Priority (Both/Self)` 的分支,以 `HasReceivedContextEvent` 或上述的自定义拦截节点作为触发器。
|
||
- [ ] **动作打断与反馈补充**:制作专门用于展现 AI “见招拆招”特点的反制动作,并在 `FuncAnimDataCollection` 中完成帧事件配置。
|