行为树

AI行为树

喜你入骨 提交于 2019-11-27 07:17:41
如何完成行为树的实现的呢,要找清楚黑板,行为树, AI_Controller的关系,黑板实际上就是行为树的数据库。 1. 先进行整体架构,创建 Character,AIController,行为树,黑板,将其关系理顺,首先将控制器与角色链接在一起,让控制器去控制角色,其次在控制器中实现行为树, Run BehaviorTree,再者就是将黑板绑定到行为树上去使用,在行为树中 Detail面板中的 BlackBoard绑定上刚创建的黑板,这样就将四者联系在一起了。 2. 架构行为树, Root节点下只能链接一个 Composites节点,架构过程中暂时全都用 Selector,之后有需要进行更改,设想一下还是有四个状态, Patrol, Chase,Attack,Back,接着在下面分别添加四个 Selector,每个下面添加一个 Task.(写逻辑 ) 3. 如何实现四种状态下的切换呢,还是要用到枚举,写入四种不同的状态,状态有了,如何切换呢,那么想到要用到枚举种不同的状态,黑板是行为属的数据库,想用枚举这个数据就要将枚举添加到数据库中,四种状态的 Selector分别都添加一个黑板但是每个黑板所呈现的枚举状态不同,这样就可以实现,改变黑板上的 State来实行切换状态。 这是添加到 Selector上的黑板可编辑的东西, FlowControl值得是这条分支的流程,如果其中的

AI 行为树

心不动则不痛 提交于 2019-11-27 07:17:27
by AKara 2010-12-09 @ http://blog.csdn.net/akara @ akarachen(at)gmail.com @ weibo.com/akaras 谈到游戏AI,很明显智能体拥有的知识条目越多,便显得更智能,但维护 庞大数量的知识条目是个噩梦:使用有限状态机(FSM),分层有限状态机(HFSM), 决策树(Decision Tree)来实现游戏AI总有那么些不顺意。 试试Next-Gen AI的 行为树(Behavior Tree) 吧。 虽说Next-Gen AI,但距其原型提出已有约10年时间,而Halo系列(HFSM like), Spore,Crysis 2,Red Dead Redemption等早已用行为树作为它们的AI结构。 如从未接触,那wikipedia(http://en.wikipedia.org/wiki/Behavior_Trees) 绝对是入门好资料。 --------------------------------------------------------------------- 先贴本文最具价值图(配色可花了不少时间) 为显美观:BT被横放,Node层次被刻意减少,Dec被刻意安插,Cond被刻意捏造。 PS:其实真正的高效的Node Group剔除应多加一层Sequence Node。 --------

简单版行为树(BehaviorTree)实现

感情迁移 提交于 2019-11-27 07:17:07
### 简单版行为树(BehaviorTree)实现 2018/11/25更新:这篇博客只是对行为树的简单说明,不能按照下面说的这样来写代码,简直太蠢了. 1.代码是火箭式,写的时候要盯对括号,不然容易写歪 2.不易调试,加了打印信息代码又会很乱,打断点不知道具体是运行到了哪个节点,断点只能看到是各个节点的基类,后面维护起来也头疼. 3.因为不能调试,所以在测试的时候只能将节点分离出来进行测试来判断其行为是否正确. 4.最好还是有可视化的,可编辑的工具来做行为树... -------------------------------------- 接触到的第一个游戏AI制作方法就是行为树,我们游戏要做机器人,所以学以致用,实现了一个简单版的行为树. 行为树 行为树主要包含两类节点,一类是叶子节点:主要作用是实现功能;一类是复合节点:主要作用是控制. 行为树就是通过对不同的叶子节点进行组合后来达到AI控制效果的,每个叶子节点都会向其父节点报告执行状态,父节点再根据自己的逻辑改变自身状态,如此向上递归则可知整个行为树的状态. 叶子节点 - 动作节点:执行到此节点时,会执行一个动作,执行后返回执行成功. - 条件节点:执行到此节点时,会进行条件判断,若条件判断成功返回执行成功否则返回执行失败. - 等待节点:一般实现为执行到此节点时,会等待一段时间,若未超出等待时间则返回执行中