以下由AI提供
行为树是什么?
行为树是一种用于控制智能体(如游戏中的 NPC、机器人或自动驾驶系统)决策逻辑的分层模型。它最早由游戏行业(如《光环》系列)发扬光大,现在已成为游戏开发和机器人控制领域的主流 AI 框架。
从结构上看,它是一棵由节点组成的树状图。执行时,系统会定期从根节点开始遍历(称为 Tick),通过特定的逻辑规则决定当前应该执行哪个具体动作。
核心机制:三个返回值
每一个节点在被执行后,必须向父节点返回以下三种状态之一:
Running (运行中):任务尚未结束,下一帧需要继续执行(这是行为树处理“时间跨度任务”的关键)。
Success (成功):任务已顺利完成。
Failure (失败):任务无法完成或条件不满足。
行为树有什么用?
行为树主要用于解决**“在特定环境下,AI 应该做什么以及如何切换动作”**的问题。
分层状态切换:替代传统的、难以维护的复杂状态机。
游戏 AI 逻辑:控制怪物的巡逻、追踪、逃跑、攻击等行为。
复杂任务拆解:将一个宏大的目标(如“摧毁敌军基地”)拆解为一系列小的可执行动作(如“搜集资源” -> “建造兵营” -> “训练士兵” -> “发起进攻”)。
机器人控制:在工业自动化或家用机器人(如扫地机)中,处理感知环境后的逻辑反馈。
行为树的组成
行为树通常由以下四类节点组成:
Action (动作):具体行为(如“播放攻击动画”、“移动到坐标点”)。
根节点 (Root):树的入口,每一轮 Tick 的起点。
复合节点 (Composites):控制流向。
Selector (选择器):只要有一个子节点成功就返回成功(类似“或”逻辑,用于尝试多个方案)。
Sequence (顺序器):所有子节点都必须成功才返回成功(类似“与”逻辑,用于按步执行)。
装饰节点 (Decorators):修饰逻辑。
如:限制执行次数、取反结果、循环执行、超时控制等。
叶子节点 (Leaves):最末端。
Condition (条件):判断环境(如“玩家是否在范围内?”)。
行为树的特点
① 高度的模块化与复用性 (Modularity)
行为树的每个分支都可以看作一个独立的“子树”。你可以像搭积木一样,把“找掩体”这个逻辑子树同时挂给“狙击手”和“步兵”使用,而无需重写代码。
② 层次清晰,易于调试 (Readability)
相比于代码中密密麻麻的 if-else,行为树提供了直观的视觉层级。通过查看哪个节点亮起(Running),开发者可以一眼看出 AI 正在做什么以及为什么卡住。
③ 解决“状态爆炸”问题 (Scalability)
在有限状态机 (FSM) 中,随着状态增加,状态间的连线会呈几何倍数增长(变成“面条代码”)。而行为树通过层级结构,让状态切换自然发生在父节点逻辑中,极大地降低了逻辑复杂度。
④ 反应式与预测性的平衡 (Reactive & Predictive)
行为树每帧(或高频)从根部重新扫描。这使得 AI 既能按计划行事(Sequence),又能随时对突发状况做出反应(Selector 的优先级抢占)。例如:正在巡逻时,一旦发现敌人,选择器会因为“发现敌人”的条件满足而立即中断巡逻,切换到攻击分支。
⑤ 状态存储与数据解耦 (Data Decoupling)
行为树通常配合 黑板 (Blackboard) 使用。黑板是一个共享内存,记录了 AI 关心的变量(如血量、目标位置)。逻辑(树)与数据(黑板)的分离,使得 AI 更加灵活。
评论(0)
暂无评论