查看: 455|回复: 9

[引擎各个功能] 【虚幻引擎 4 行为树的不同之处 | Unreal Engine】

[复制链接]

1

主题

342

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
75866
发表于 2016-6-25 14:02:39 | 显示全部楼层 |阅读模式


本页面的内容:

      
UE4 行为树为事件驱动型

条件语句并非叶节点

并发行为的特殊处理
为什么不使用 Parallel 节点?
放弃了 Parallel 节点,UE4 使用的是什么?

UE4 处理并发行为的优点
清晰明了
方便纠错
优化简单

常见问题
     
该章节针对已熟悉 行为树 总体结构,希望快速在虚幻引擎 4 中迅速投入实际应用的读者。对于不熟悉行为树的读者而言,可能难以理解该章节中的部分解释。

较之于“标准”行为树,UE4 行为树的应用在三种关键方式上存在不同。
UE4 行为树为事件驱动型
事件驱动型 行为树可避免在每帧中执行大量工作。行为树并不会经常检查相关变化是否已经发生,它只会被动地等待在树中引起变化的“事件”。

事件驱动型结构对运行性能和除错大有帮助。如果希望获得这些帮助,必须理解虚幻引擎树的其他不同点,并正确搭建行为树结构。

代码在整个树的每个标记中无需迭代,因此运行性能将大大提升!从概念上而言,我们不需要不停地问“我们到了吗”,只需要轻松休息,会有人来告诉我们“到啦!”

在行为树执行日志中反复查看对行为进行纠错时,最佳的方法是让日志显示相关的变更,不显示无关的变更。在事件驱动型应用中,无需过滤出在树上迭代并选择之前相同行为的无关步骤,因为额外的迭代从开始便并未发生!只有树中执行位置或黑板数值发生的变化会产生影响,不同之处显而易见。


条件语句并非叶节点
在行为树标准模型中,条件语句为 Task 叶节点,除成功和失败外不执行任何操作。虽然也可以使用传统的条件 tasks,但还是强烈推荐您使用 Decorator 系统作为条件语句。

使用 decorators 而非 tasks 作为条件语句有多个明显优点。

首先,条件 decorators 使行为树 UI 显得更加直观易读。条件语句位于其所控制分支树的根部,因此一旦条件语句未被满足,便可直接看到树的哪个部分被“关闭”。此外,所有叶节点均为行动 tasks,因此更容易分辨树在对哪些实际行动下达命令。   在传统模型中,条件语句混于叶节点中,因此需要花更多时间分辨哪些叶节点是条件语句,哪些叶节点是行动。

【虚幻4翻译文档-虚幻引擎 4 行为树的不同之处 | Unreal Engine】[虚幻4中文文档]



在行为树的这个部分中,Decorators Close Enough 和 Blackboard 可阻止 Sequence 节点子项的执行。

条件 decorators 的另一个优点是可以简单地将 decorators 变为树中关键节点上的 observers(等待事件发生)。如要完全利用行为树事件驱动特性的优点,掌握该功能十分关键。
并发行为的特殊处理
标准行为树通常使用 Parallel composite 节点来处理并发行为。Parallel 节点同时执行其所有子项。在一个或多个子项树完成时,特殊规则将决定如何执行(取决于所需行为)。

Parallel 节点不是绝对的多线程(完全同步执行任务)。它们只是概念上一次执行多个任务的方式。它们经常在同一线程上运行,并在一些序列中开始。该序列应为不相关,因为它们全部在同一框架中发生。但有时它也很重要。

UE4 行为树抛弃了复杂 Parallel 节点,使用 Simple Parallel 节点和称为 Services 的特殊节点,以实现同类行为。

为什么不使用 Parallel 节点?
即便相对简单行为而言,Parallel 节点也会让人迷惑。

实际上 Parallel 节点同时运行一群单独的分支树,但如果其中一个失败,其中或所有分支树都会中止,它们也可能在其他分支树完成时(结果为成功或失败)成功。在简单实例中,平行行为都会让人迷惑;尤其是它存在大量潜在可用选项,这会让使用者迷失方向。

Parallel 节点不利于优化性能,尤其在构建事件驱动型树方面。

放弃了 Parallel 节点,UE4 使用的是什么?
有三种节点将提供平行节点的功能:

Simple Parallel 节点
Simple Parallel 节点只允许两个子项的存在:一个必为单独任务节点(含可选 decorators)、另一个为一个完整的分支树。

可以将 Simple Parallel 节点理解为:“执行 A 的同时也执行 B。”举例而言:“在攻击敌人时向敌人移动。”基本上来说,A 是主要任务,而 B 是等待 A 完成时执行的次要或补充任务。

有一些选项可以处理同时进行的次要任务(任务 B)。较之于传统 Parallel 节点,该节点在概念上还是相对简单。然而,它支持 Parallel 节点的多数常规用法。

可利用 Simple Parallel 节点简便地进行一些事件驱动型优化。而 Full Parallel 节点的优化则要复杂许多。

Services
Services 是与 composite 节点(Selector、Sequence、或 Simple Parallel)相关的特殊节点。它能在每 X 秒注册回呼并执行多个定期发生类型的更新。

举例而言,service 能用于确定哪名敌人是 AI pawn 的最佳追逐目标;与此同时,pawn 在其行为树中继续正常追踪当前敌人。

只有执行仍然处于以 composite 节点(与 service 相关)为根的分支树中时,Services 方为有效。

Decorator “Observer Aborts” 属性
标准 Parallel 节点的一个常见用途是不断对条件进行检查,以便在条件无法达成时中止任务。举例而言,有一只猫执行序列,如“摇屁股”或“猛扑”,在老鼠已经逃进洞后,直接放弃任务。如使用 Parallel 节点,有一个子项将检查猫是否可以扑到老鼠,另一子项就是要执行的序列。因为 UE4 行为树是事件驱动型,条件 decorators 将观察数值,并在需要时中止任务。(在该例中,只需要在序列上添加“老鼠是否能被扑到” decorator,然后将 “Observer Aborts” 设为 “Self”。)
UE4 处理并发行为的优点
清晰明了
使用 Services 和 Simple Parallel 节点可创建出易于理解的简单行为树。

方便纠错
图表更清晰,方便纠错。除此之外,更少的同时执行路径十分方便观察图表中实际发生的状况。

优化简单
如没有较多同时执行的分支树,事件驱动型图表将更易于优化。
常见问题
“能实现 Parallel 节点的所有功能吗?”

我们提供的节点可以帮您实现必要的功能,而且界面更加简单便捷。以上节点只是用于通常情况。如果发现一些不常见情况无法处理或效果不理想,我们将考虑对此进行修复。

“这些就是 UE4 行为树和‘标准’行为树的全部不同点吗?”

这里的“标准”只是一个特定称谓而已。因为它本身并无严格意义上的“标准”一说,所以在 UE4 和您所熟悉的行为树之间可能存在数量不同的差异。如您所熟悉的是不常见的行为树,则可能存在较大差异。无论如何,细微差异均难以避免。希望这些要点能帮助您了解最重要的差异,以便正确构建您的行为树。如需了解 UE4 特殊节点的更多详情,请阅读其的相关章节。
回复

使用道具 举报

0

主题

1268

帖子

3974

积分

vip会员

Rank: 1

积分
3974
发表于 2016-7-2 18:56:25 | 显示全部楼层
加油摸摸大,感谢楼主分享
回复 支持 反对

使用道具 举报

0

主题

895

帖子

2973

积分

vip会员

Rank: 1

积分
2973
发表于 2016-7-3 21:30:27 来自手机 | 显示全部楼层
好这个应该还行,自己懒得找了
回复 支持 反对

使用道具 举报

0

主题

874

帖子

2897

积分

vip会员

Rank: 1

积分
2897
发表于 2016-7-3 23:18:31 | 显示全部楼层
收下了~~感谢~
回复 支持 反对

使用道具 举报

0

主题

843

帖子

2793

积分

vip会员

Rank: 1

积分
2793
发表于 2016-7-4 11:30:10 来自手机 | 显示全部楼层
看看这个得多少钱
回复 支持 反对

使用道具 举报

0

主题

827

帖子

2744

积分

vip会员

Rank: 1

积分
2744
发表于 2016-7-5 08:26:08 来自手机 | 显示全部楼层
好东西这么多....
回复 支持 反对

使用道具 举报

0

主题

908

帖子

2955

积分

vip会员

Rank: 1

积分
2955
发表于 2016-7-6 14:43:43 来自手机 | 显示全部楼层
谢谢楼主分享哈!
回复 支持 反对

使用道具 举报

0

主题

915

帖子

3011

积分

vip会员

Rank: 1

积分
3011
发表于 2016-7-13 22:09:48 来自手机 | 显示全部楼层
我来看看 这个怎么样
回复 支持 反对

使用道具 举报

0

主题

831

帖子

2752

积分

vip会员

Rank: 1

积分
2752
发表于 2016-7-18 07:50:22 | 显示全部楼层
全就行啊,,支持 一下
回复 支持 反对

使用道具 举报

0

主题

864

帖子

2844

积分

vip会员

Rank: 1

积分
2844
发表于 2016-7-20 06:38:45 来自手机 | 显示全部楼层
我又来了,太贵了,我盯着你好久了。
回复 支持 反对

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部