【UEAI】虚幻AI人机基础(上)
一. 行为树
1.1 概述
- 行为:受思想支配而表现出来的外表活动(如:做出动作,发出声音,作出反应)
- 树:一种逻辑描述(树结构)
- 行为树:遵循树结构特点(有根,有节点),遵循从上至下,从左至右的顺序执行行为
- 行为可复用(如闲逛的行为可以使用于当前行为树,也适用于其他行为树)
- 所有复杂行为可以拆分为单一行为(如闲逛,打招呼都是行为)
- 行为树实现不唯一,顺序并不固定
1.2 虚幻行为树
- UE中的行为树:
- 以数据为驱动元,进行逻辑节点检查,寻找合理逻辑叶子节点,然后进行动作执行
- 扩展方便,容易转接,被广泛使用在各种AI设计中,是一种优良的程序设计方案
- 可以解决复杂AI需求,使用方便,支持横向扩展节点和向下延伸
- 行为树的结构:
-
- ① Root 根节点:无法被附着,可以用来设置黑板数据
-
- ② Composite 节点:定义一个分支的根起点,及该分支如何被执行的基本规则
- Root下只能跟随composite
- 包含Selector,Sequence,Simple Parallel
- 节点内容简单,但是附加逻辑项多,逻辑点繁琐
- 所有逻辑结构设计尽量遵循 Composite 规则
- Sequence:从左至右执行,只要有一个子项不成立,则停止执行剩余项(所有子项成立,则sequence成立)
- Selector:从左至右执行,只要有一个子项条件成立,则停止向下执行(任意子项成立,则selector成立)
- Simple Parallel 并行树:允许单个任务在任务树旁执行(Finish Mode 中的设置将确定节点是否立即完成、是否终止次要树,或是否延迟次要树的完成)
- ② Composite 节点:定义一个分支的根起点,及该分支如何被执行的基本规则
-
- ③ Task 节点:是行为树的叶子,实际“执行”操作,不含输出连接
- 真正在干活的角色,可以重写,支持扩展
- Make Noise,制造噪音,需要Pawn带PawnNoiseEmitter组件,其他Pawn如果带有PawnSensing组件,则可以听到噪音
- Move To移动到目标点,通过黑板提供
- Play Sound 播放声音
- Run Behavior 执行其他行为树
- Wait,Wait BB Time,等待事件,无法被终止
- Play Anim,促使控制Pawn播放动画
- 真正在干活的角色,可以重写,支持扩展
- ③ Task 节点:是行为树的叶子,实际“执行”操作,不含输出连接
-
- ④ Decorator 条件语句节点:附着于其他节点,用来约束节点或是分支是否可以执行
- 装饰器,用来决定节点是否可以进行执行,是一个条件检查工具,可以附着到任务节点和复合节点
- Blackboard,借助一个黑板数据,进行逻辑操作判定
- Blackboard 黑板是行为树中的核心模块,用于支撑行为树中的数据存储和读取,相当于草稿纸,可以把需要参与逻辑的数据罗列在上面,使用方便,数据扩展性强,有较好的维护性
- Compare Blackboard Entries,对比黑板内两个数据
- Cone Check,锥形检测,可以检测目标是否在锥形范围内
- Cooldown,锁定节点或是分支,直到时间结束
- Does Path Exist,检查AB两点见路径是否可行
- Force Success decorator 将节点结果改为成功
- Is At Location,检查AI控制的角色是否在指定的位置
- Keep in Cone,持续检查锥形范围内目标
- Loop,以一定次数或是无限次数循环节点
- TimeLimit,节点逻辑时间定时器
- Blackboard,借助一个黑板数据,进行逻辑操作判定
- 当父节点是Selector时则具备所有终结逻辑:
- NONE,不终止执行
- Self,中止 self,以及在此节点下运行的所有子树
- Lower Priority,中止此节点右方的所有节点
- Both,终止 self、此节点下运行的所有子树、以及此节点右方的所有节点
- 装饰器,用来决定节点是否可以进行执行,是一个条件检查工具,可以附着到任务节点和复合节点
- ④ Decorator 条件语句节点:附着于其他节点,用来约束节点或是分支是否可以执行
-
- ⑤ Services 节点:附着在 Composite 或Task节点上,只要其分支节点被执行,便将按所定义的频率执行,常用于检查和更新黑板
-
可以按照指定的频率执行,主要意图在于检查和更新黑板内容
-
以行为树系统的形态取代了传统平行节点,一般会重写此节点
-
- ⑤ Services 节点:附着在 Composite 或Task节点上,只要其分支节点被执行,便将按所定义的频率执行,常用于检查和更新黑板
1.3 虚幻行为树特点
- 事件驱动型
- 在UE中,行为树避免了在高速运行的引擎中去检查逻辑节点,采用了事件通知的方式,没有无用的迭代操作
- 只有执行位置或黑板数值发生变化了,才会产生影响
-
叶子节点不是条件语句
- 在行为树标准模型中,条件语句即为叶子节点
- UE中引入了Decorator系统作为条件语句(D语句在UI结构中易读,罗列条件可以直观查看条件状态)
-
并发行为处理(UE)
- 标准行为树通常使用 Parallel composite 节点来处理并发行为(Parallel 节点同时执行其所有子项,在一个或多个子项树完成时,特殊规则将取决于所需行为来决定如何执行
- UE4 行为树抛弃了复杂 Parallel 节点,使用 Simple Parallel 节点和称为 Services 的特殊节点,以实现同类行为
- 抛弃 Parallel 节点
- Parallel 不利于性能优化,无法方便构建事件驱动型集合
- 在多平行行为中容易迷失,无法追寻逻辑方向
-
Simple Parallel 节点
- 利用 Simple Parallel 节点简便地进行一些事件驱动型优化
- Simple Parallel 节点支持 Parallel 节点的多数用法,只允许有两个选项,一个必为单独任务节点(含可选 decorators),另一个为一个完整的分支树
- UE4并发行为树的优点
- 清晰明了:使用 Services 和 Simple Parallel 节点可创建出易于理解的简单行为树
- 易于纠错:图表更清晰,便于纠错。除此之外,更少的同时执行路径十分便于观察图表中实际发生的状况
- 优化简单:如没有较多同时执行的分支树,事件驱动型图表将更易于优化
二. EQS系统
2.1 EQS概述
未完待续...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具