未提供

AI模块说明书/行为树编辑介绍

介绍

  行为树是图形逻辑语言,作者可以使用行为树建立单位的思考逻辑,通过行为树使单位拥有智能。

  行为树的执行是从根节点出发,从左至右依次遍历每个子节点及其子树,根据每个节点的规则计算并返回其执行结果,并按照组合节点设定好的规则选择跳过哪些子节点,执行哪些子节点。

  行为树在执行过程中可能需要存储一些信息,因此行为树提供了Board,行为树通过特殊的节点对Board进行读/写,以此来进行一些状态的存储和恢复。

参数和表达式

  大部分行为树节点都需要填写一些参数,这些参数有类型的要求,如必须填数字,字符串或列表。

  在节点信息栏可以看到相关的提示

表达式

  需要特别说明的是表达式,这是行为树允许的一类特殊的参数,允许用户使用行为树特别定义的语法来访问单位的相关属性。

  表达式由项构成,项与项之间使用运算符连接成新的表达式。如1是项,1+1是用+运算符连接的两个项,1和1+1都是合法的表达式。

行为树

常见的树模式

IF-ELSE模式

  先执行A,A返回成功时继续执行B,否则跳回Selector节点执行C

  A, B和C节点都可以是子树,需要注意B子树和C子树需要保证返回成功

l  IF-ELSEIF-ELSE模式

  Sequence子树是可以无限扩展的

实例

  持续攻击最近目标模式

  本行为树操作下的单位会一直选择追击距离自己最近的单位,可以被两个敌方单位放风筝

选取目标,持续追击,脱战模式

状态转移系统

  左侧的selector进行在任意状态下的强制状态跳转,右侧的selector判断当前所处的状态,并执行对应的行为。

  在右侧selector的子树中,你也可以添加设置STATE状态的节点,这样可以在执行状态中进行状态转移。

行为树与触发器参数关联

根节点

  重要参数:

  parameter_friendly_names:命令单位根据规则{#0}学习技能

  在编辑器中的运行对应AI指令时会出现上述描述

  {#0}表示此处需要在使用时填入参数,若有多个参数,填写为{#0} {#1}依次

  例如:命令单位沿路径点{#0}移动,巡逻类型为{#1}, 防守类型为{#2}, 警戒半径为{#3}, 脱战半径为{#4}, {#5}脱战回血

  friendly_name 出现在编辑器的指令列表中所用的名字

  alias 行为树文件本身的名称,可使用默认值

  parameter_types 参数类型列表,多个参数时以英文逗号分开,依次表示{#0},{#1}…所需要填写的参数类型

  par_namen_list 无效,不要使用

  parameter_names 参数名称列表,多个参数时用英文逗号分隔,对应{#0},{#1}…参数在行为树中的名称,用于在行为树对上述参数内容进行引用

实例

  如上述截图中的使用情况如下:

  使用指令触发器

  指令名称列表

  此处以friendly_name 显示

  具体指令描述

  此处以parameter_friendly_names显示

  参数类型为parameter_types

  parameter_names可被使用于行为树其他节点

其他

  每种单位默认没有行为,在不想使用触发器添加AI的时候,可以设置默认的行为,使单位拥有默认防守警戒行为。

使用时需要注意,这里的行为会添加到所有该名称的单位个体身上,而不是单位个体。