BehaviorTree.CPP行为树BT的入门(二)

摘要:
节点和树的用户必须创建自己的ActionNode和ConditionNode;此库帮助您轻松地将它们组织到树中。将LeafNodes视为构成复杂系统所需的构建块。此外,该库还提供了一种机制,用于创建将函数指针传递给包装器的TreeNode。节点的端口号、名称和端口类型必须在编译时已知(C++);端口之间的连接在部署时完成。使用XML格式在运行时加载树虽然库实际上是用C++编写的,但树本身可以在运行时合成,因为树在开始时只实例化一次。

节点与树

用户必须创建自己的ActionNodes和ConditionNodes(LeafNodes);该库可帮助您轻松地将它们组成树。

将LeafNodes视为组成复杂系统所需的构建块。

根据定义,您的自定义节点是(或应该)高度可重用的。但是,在一开始,可能需要一些包装接口来适应您的旧代码。

tick() callbacks

在生产代码中,尤其是在模型驱动开发和基于组件的软件工程中,操作/条件可能会与系统的其他组件或服务进行通信。

继承与依赖注入

要创建自定义TreeNode,您应该从适当的类继承。

例如,要创建自己的同步Action,您应该从SyncActionNode类继承。

另外,该库提供了一种机制,用于创建将功能指针传递给包装器的TreeNode (依赖项注入)。

数据流,端口和黑板

黑板是由树的所有节点共享的键/值存储。

端口是节点可以用来相互交换信息的机制。

使用黑板上的相同键“连接”端口。

必须在编译时知道节点的端口号,名称和端口种类(C ++); 端口之间的连接在部署时(XML)完成。

使用XML格式在运行时加载树

尽管事实上该库是用C ++编写的,但是树本身可以在运行时(更具体地说是在部署时)组成,因为在实例化Tree的开始只进行了一次。

原文

免责声明:文章转载自《BehaviorTree.CPP行为树BT的入门(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL 常用字符串处理函数:截取、拼接、替换、正则表达式java锁有哪些类(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

介绍行为树

不像有限状态机,一棵行为树是一个分层节点的树,节点控制着决策流,任务的执行或者我们进一步称之为“行为”。 输的叶子节点是实际的命令,例如,协调组件与系统的其他部分相交互的地方。 例如,在一个以服务导向的结构中,叶子将会包含客户端节点,这些节点与执行操作的服务器相通信。 在以下的例子中,可以看到在一个顺序中有两个行为被执行,DetectObject以及Gra...

使用行为树(Behavior Tree)实现游戏AI

——————————————————————— 谈到游戏AI,很明显智能体拥有的知识条目越多,便显得更智能,但维护庞大数量的知识条目是个噩梦:使用有限状态机(FSM),分层有限状态机(HFSM),决策树(Decision Tree)来实现游戏AI总有那么些不顺意。 试试Next-Gen AI的行为树(Behavior Tree)吧。 虽说Next-Gen...

unity行为树简介

目前在Unity3D游戏中一般复杂的AI都可以看到行为树的身影,简单的AI使用状态机来实现就可以了,所以这里我也是简单的学习下,为以后用到做准备。 行为树的概念出现已经很多年了,总的来说,就是使用各种经典的控制节点+行为节点进行组合,从而实现复杂的AI。 Behavior Designer插件里,主要有四种概念节点,都称之为Task。包括: (1)Comp...