六一的部落格


关关难过关关过,前路漫漫亦灿灿。




说明

Behavior Tree / Blackboard

在控制器对游戏角色行为逻辑进行描述

数学建模, 直接 非循环 图表, 可能的行为作为节点

虚幻引擎提供行为树编辑器使数学模型可视化

行为树是游戏角色的大脑: 设置了一系列的规则, 迁移条件 Transition , 和NPC状态

黑板作为数据库: 一系列变量, 当我们在代码中将其设置为不同值, 行为树会作出对应反应


创建行为树资产和黑板资产

Content/AI

右键, Artificial Intelligence > Behavior Tree , 命名为BT_STUCharacter

右键, Artificial Intelligence > Blackboard , 命名为BB_STUCharacter


介绍行为树资产

双击打开BT_STUCharacter, 对游戏角色行为逻辑进行配置

行为树由控制节点组成, 任务作为叶子节点; 任务即游戏角色的直接动作

初始只有一个根节点, 作为行为树的入口


第二层有三个选项


-
Sequence 按次序执行的多个任务序列
Selector
Simple Parallel

第三层可以选任务


-
MoveTo 找到路径去到指定位置; MoveAITo的另一种表示
Wait 游戏角色暂停指定秒数

MoveTo任务

在细节面板进行配置

Blackboard > Blackboard Key : 决定世界座标系的某个位置, 或者游戏角色将要移动到的Actor



使用黑板资产

通过 New Key 按钮添加各种类型变量


添加两个 Vector 类型变量: Location1和Location2; 将在这两点间移动



配置行为树资产

  • 点击图表的空白处会显示细节面板, 设置黑板资产


  • 添加节点: Sequence

  • 添加任务: MoveTo

    选中 MoveTo 节点, 可以在 Details > Blackboard > Blackboard Key 看到刚刚添加的变量, 选择Location1作为目的地


  • 添加任务: Wait; 设置秒数为2


  • 添加任务: MoveTo; 选择Location2作为目的地

  • 添加任务: Wait; 设置秒数为2

当前NPC逻辑: > 去到Location1 > 等待2s > 去到Location2 > 等待2s; 循环


行为树从上到下、从左到右顺序执行; 左边的优先级更高

任务具有执行状态: 是否成功完成; 成功则运行下一个任务, 否则中止


设置AIController


运行行为树

  • 移除BP_STUAIController蓝图中的逻辑


  • 添加节点: RunBehaviorTree; 在BeginPlay之后执行; 设置行为树资产



设置黑板中变量的位置值

  • 在场景另一角添加Actor, 指示Location2


  • 设置变量值: 对Location1和Location2进行设置

    添加节点: GetBlackboard; 获取黑板指针

    添加节点: SetValueAsVector; 对黑板中的变量进行设置

    添加节点: MakeLiteralName; 给出变量名


  • 根据两个指示Actor的座标, 填写到Location1和Location2



查看

保持行为树资产打开, 可以看见行为树逻辑执行的过程

按下 ' 显示调试信息; 按下小写键盘的数字关闭 / 打开AI该类别调试信息



切换到NPC

  1. Shift-F1 释放鼠标
  2. 在世界大纲选中BP_STUAICharacter
  3. 按下 '

Active Task : NPC当前执行的任务



设置AI调试信息相关热键

Hotkey

显示 / 关闭AI调试窗口 : Project Settings > Engine > Gameplay Debugger > Input > Activation Key ; 可以更换为F10

显示 / 关闭调试信息: Project Settings > Engine > Gameplay Debugger > Extensions > ToggleMessages ; 设置为Ctrl + Z; 原先和切换应用快捷键重复, 因而无法生效



释放鼠标

当运行模式为视口和新建编辑器窗口时, 可按下F8释放鼠标控制



初识行为树和黑板



说明

Behavior Tree / Blackboard

在控制器对游戏角色行为逻辑进行描述

数学建模, 直接 非循环 图表, 可能的行为作为节点

虚幻引擎提供行为树编辑器使数学模型可视化

行为树是游戏角色的大脑: 设置了一系列的规则, 迁移条件 Transition , 和NPC状态

黑板作为数据库: 一系列变量, 当我们在代码中将其设置为不同值, 行为树会作出对应反应


创建行为树资产和黑板资产

Content/AI

右键, Artificial Intelligence > Behavior Tree , 命名为BT_STUCharacter

右键, Artificial Intelligence > Blackboard , 命名为BB_STUCharacter


介绍行为树资产

双击打开BT_STUCharacter, 对游戏角色行为逻辑进行配置

行为树由控制节点组成, 任务作为叶子节点; 任务即游戏角色的直接动作

初始只有一个根节点, 作为行为树的入口


第二层有三个选项


-
Sequence 按次序执行的多个任务序列
Selector
Simple Parallel

第三层可以选任务


-
MoveTo 找到路径去到指定位置; MoveAITo的另一种表示
Wait 游戏角色暂停指定秒数

MoveTo任务

在细节面板进行配置

Blackboard > Blackboard Key : 决定世界座标系的某个位置, 或者游戏角色将要移动到的Actor



使用黑板资产

通过 New Key 按钮添加各种类型变量


添加两个 Vector 类型变量: Location1和Location2; 将在这两点间移动



配置行为树资产

  • 点击图表的空白处会显示细节面板, 设置黑板资产


  • 添加节点: Sequence

  • 添加任务: MoveTo

    选中 MoveTo 节点, 可以在 Details > Blackboard > Blackboard Key 看到刚刚添加的变量, 选择Location1作为目的地


  • 添加任务: Wait; 设置秒数为2


  • 添加任务: MoveTo; 选择Location2作为目的地

  • 添加任务: Wait; 设置秒数为2

当前NPC逻辑: > 去到Location1 > 等待2s > 去到Location2 > 等待2s; 循环


行为树从上到下、从左到右顺序执行; 左边的优先级更高

任务具有执行状态: 是否成功完成; 成功则运行下一个任务, 否则中止


设置AIController


运行行为树

  • 移除BP_STUAIController蓝图中的逻辑


  • 添加节点: RunBehaviorTree; 在BeginPlay之后执行; 设置行为树资产



设置黑板中变量的位置值

  • 在场景另一角添加Actor, 指示Location2


  • 设置变量值: 对Location1和Location2进行设置

    添加节点: GetBlackboard; 获取黑板指针

    添加节点: SetValueAsVector; 对黑板中的变量进行设置

    添加节点: MakeLiteralName; 给出变量名


  • 根据两个指示Actor的座标, 填写到Location1和Location2



查看

保持行为树资产打开, 可以看见行为树逻辑执行的过程

按下 ' 显示调试信息; 按下小写键盘的数字关闭 / 打开AI该类别调试信息



切换到NPC

  1. Shift-F1 释放鼠标
  2. 在世界大纲选中BP_STUAICharacter
  3. 按下 '

Active Task : NPC当前执行的任务



设置AI调试信息相关热键

Hotkey

显示 / 关闭AI调试窗口 : Project Settings > Engine > Gameplay Debugger > Input > Activation Key ; 可以更换为F10

显示 / 关闭调试信息: Project Settings > Engine > Gameplay Debugger > Extensions > ToggleMessages ; 设置为Ctrl + Z; 原先和切换应用快捷键重复, 因而无法生效



释放鼠标

当运行模式为视口和新建编辑器窗口时, 可按下F8释放鼠标控制