https://opensource.tencent.com/
教程:
https://www.behaviac.com/language/zh/category/%E6%96%87%E6%A1%A3/%E6%95%99%E7%A8%8B/
原理和流程:
bahaviac:编辑器+运行时
行为树:描述了指定的agent类型的行为,利用各种节点和类型信息来创建行为树。
运行时:根据编辑器导出的类型信息,执行导出的行为树。
类型信息:包括Agent类及其成员属性、成员方法和实例等,以及枚举和结构体类型。
原型设计工具
在编辑器种创建一个类型,并且创建它的属性和方法,导出C++或者C#源码。
导出代码格式:
配置文件格式:xml、bson
代码类型:cpp、c#
xml和bson作为数据,可以被加载;
cpp和c#为源码直接编译为可执行程序;
优点:
1、c++版本支持全平台,可以用在客户端,也可以用作服务端。一套逻辑,避免重复开发。
缩写:
BT:行为树
FSML:状态机
HTN:层次任务网络
clone网址:https://github.com/Tencent/behaviac
编辑器编译和运行:

打开后,编译并执行:

什么是行为树:
节点:是一个行为
节点的状态:成功、失败、运行中
优点:暂时未知
运行:dmeo_running
报错:
#ifdef _RTC_CONVERSION_CHECKS_ENABLED
#ifndef _ALLOW_RTCc_IN_STL
#error /RTCc rejects conformant code, so it is not supported by the C++ Standard Library. Either remove this \
compiler option, or define _ALLOW_RTCc_IN_STL to acknowledge that you have received this warning.
#endif // _ALLOW_RTCc_IN_STL
#endif // _RTC_CONVERSION_CHECKS_ENABLED


即可。

如上图,为了清晰说明运行状态,来看另一个例子。在这个例子中,Condition,Action1,Action3是3个函数。
0号节点是个Loop节点,循环3次。
1号节点是个Sequence节点
2号节点模拟一个条件,直接返回成功。
3号节点Action1是一个动作,直接返回成功。
4号节点Action3同样是一个动作,返回3次运行,然后返回成功。