behaviac是游戏AI的开发框架组件,腾讯有提供源码。https://github.com/Tencent/behaviac
行为树由叶子节点和中间节点组成,从左到右依次是父子关系的节点:叶子节点主要是一些动作、条件和赋值等原子操作节点,包含了最基本的行为(如跑动、攻击等),当一个叶子节点被选择后,就会激活其对应的基本行为;中间节点主要是一些组合节点,代表逻辑单元,用于管理子节点如何执行等。
叶子节点和中间节点主要分为五大类节点或附件:动作、条件、组合、修饰、附件等。其中,动作、条件节点为叶子节点,组合、修饰节点为中间节点,附件必须附属在这四类节点上面而不能独立存在。每个节点执行结束后,都必须将其返回值提供给父节点。节点的返回值包括三种:成功(Success)、失败(Failure)以及正在执行(Running)。
常用节点:
- 动作节点(Action):属于叶子节点,用于描述一个最终执行的动作。
- 条件节点(Condition):属于叶子节点,用于描述一个条件是否成立。
- 选择节点(Selector):属于组合节点,用于顺序执行子节点,只要它的一个子节点返回成功,则整个分支返回成功,反之返回失败,类似程序中的逻辑或(OR)。
- 顺序节点(Sequence):属于组合节点,用于顺序执行子节点,只要它的一个子节点返回失败,则整个分支返回失败,反之返回成功,类似程序中的逻辑与(AND)。
行为树的优势如下:
- 行为逻辑和状态数据分离,任何节点都可以反复利用