UE5行为树浅析

Tree

什么是树?

树是由节点或顶点和边组成的数据结构,没有任何循环。没有节点的树称为空树或空树。

非空的树由根节点和可能形成层次结构的多层附加节点组成。

  • 树是一种数据结构
  • 树由点和有向边组成
  • 树是连通的,可达的
  • 树有执行顺序
  • 树没有环

Behavoir Tree

行为树(BT)是一种计划执行的数学模型,用于计算机科学、机器人技术、控制系统和视频游戏。

它们以模块化的方式描述有限任务集之间的切换。

它们的强大之处在于能够创建由简单任务组成的非常复杂的任务,而不用担心如何执行这些简单任务。

BT与分层状态机有一些相似之处,关键的区别是行为的主要构建块是任务而不是状态。

如果没有行为树,蓝图依然可以实现功能,但是行为树是可编程的。

由于易于理解,BT更不容易出错,在游戏开发者社区中非常受欢迎。

UE官方描述:

行为树 是虚幻引擎 中创建 AI 的强大工具。从隐藏在阴影中的小蟑螂,到射击游戏中自主向目标开火并寻找回复剂和弹药的机器人,皆可实现。

合成 节点**(Composite)** 描述
选择器(Selector) 从左到右执行分支,通常用于在子树之间进行选择。当选择器找到能够成功执行的子树时,将停止在子树之间移动。举例而言,如果AI正在有效地追逐玩家,选择器将停留在那个分支中,直到它的执行结束,然后转到选择器的父合成节点,继续决策流。
序列(Sequence) 从左到右执行分支,通常用于按顺序执行一系列子项。与选择器节点不同,序列节点会持续执行其子项,直到它遇到失败的节点。举例而言,如果我们有一个序列节点移动到玩家,则会检查他们是否在射程内,然后旋转并攻击。如果检查玩家是否在射程内便已失败,则不会执行旋转和攻击动作
并行(Simple Parallel)(基本用不上,不常用) 简单平行节点有两个"连接"。第一个是主任务,它只能分配一个任务节点(意味着没有合成节点)。第二个连接(后台分支)是主任务仍在运行时应该执行的活动。简单平行节点可能会在主任务完成后立即结束,或者等待后台分支的结束,具体依属性而定。

Sequence只要遇到Flase,后面的都不执行,直接返回 (如果所有都是True,才返回True)

Selector只要遇到True,后面的都不执行,直接返回 (如果所有都是Flase,才返回Flase)

行为树与蓝图相似,皆是以一种可视化方式创建,将一系列具备功能的节点添加并连接至行为树图表。执行逻辑时,行为树会使用一种名为 黑板 的独立资源来存储它需要知道的信息(名为 黑板键),从而做出有根据的决策。

UE中的行为树按照从左到右,从上到下的顺序执行逻辑。操作的数字顺序显示在图表中所放置节点的右上角。

上图中的蓝色节点被称为装饰器(判断条件语句,如果是True就执行下面的,如果是False就不执行了

右键单击 行为树 中的节点时,可以添加提供额外函数的子节点:

子节点 描述
装饰器(Decorator) 也称为条件语句。这种节点附着于另一个节点,决定着树中的一个分支,甚至单个节点是否能够被执行。
服务(Service) 这类节点连接至 任务(Task) 节点和 合成(Composite) 节点,只要它们的分支正在执行,它们就会以所定义的频率执行。这些节点通常用于检查和更新 黑板。它们取代了其他行为树系统中的传统平行(Parallel)节点。

黑板Blackboard

用来记录数据变量

参考资料:

https://dev.epicgames.com/documentation/zh-cn/unreal-engine/behavior-tree-in-unreal-engine---overview

https://en.wikipedia.org/wiki/Behavior_tree_(artificial_intelligence,_robotics_and_control)

相关推荐
奋斗者1号1 分钟前
机器学习之决策树模型:从基础概念到条件类型详解
人工智能·决策树·机器学习
LinkTime_Cloud19 分钟前
谷歌引入 AI 反诈系统:利用语言模型分析潜在恶意网站
人工智能·语言模型·自然语言处理
张小九9924 分钟前
PyTorch的dataloader制作自定义数据集
人工智能·pytorch·python
Panesle26 分钟前
分布式异步强化学习框架训练32B大模型:INTELLECT-2
人工智能·分布式·深度学习·算法·大模型
zstar-_34 分钟前
FreeTex v0.2.0:功能升级/支持Mac
人工智能·python·macos·llm
于壮士hoho1 小时前
DeepSeek | AI需求分析
人工智能·python·ai·需求分析·dash
蒙奇D索大1 小时前
【人工智能】自然语言编程革命:腾讯云CodeBuddy实战5步搭建客户管理系统,效率飙升90%
人工智能·python·django·云计算·腾讯云
AORO_BEIDOU1 小时前
遨游卫星电话与普通手机有什么区别?
人工智能·科技·5g·智能手机·信息与通信
lqjun08271 小时前
Focal Loss 原理详解及 PyTorch 代码实现
人工智能·pytorch·python
科技小E1 小时前
WebRTC技术EasyRTC嵌入式音视频通信SDK打造远程实时视频通话监控巡检解决方案
人工智能·音视频