Unreal-Ai(基础概念)

理解框架

一个拟人化的AI对象一般由感知(sense)、规划(plan)和行为(action)三部分组成

 

前提(寻路原理)

要在场景中进行移动是AI的基本功能,但这种移动并非简单地从A点移动到B点

寻路包括:计算路径和躲避障碍

假设对象是静态,那么就需要用到寻路网格体(Nav Mesh Bounds Volume)

查看寻路网格:显示(show)-导航(Navigation),快捷键:P

修改寻路网格自动更新:EditorPreferences-Level Editor-Miscellaneous-Editing-update Navigation Automatically

 

一、感知

Ai感知系统两个关键组件: Ai感知组件Ai感知刺激源

例子:以警察感知(看到)玩家为例

ai角色(警察)添加视角的感知控件,目标角色(玩家)添加被感知的敏感源。

ai角色就能感知到目标角色。ai角色有了感知功能,就能感知周围环境,收集信息,为做出决策提供信息。

AIPerception(Ai感知组件)

感知控件类型有:看到,听到,接触到,被伤害等

这里需要警察看到玩家,则使用的是视觉感知类型:AI Sight config

 AIPerceptionStimuliSource(Ai感知刺激源)

这里需要可以被警察看到,需要注册一个视角的感知刺激源AISense_Sight

官方文档:https://docs.unrealengine.com/4.27/en-US/InteractiveExperiences/ArtificialIntelligence/AIPerception/

 

二、思考

利用黑板,行为树,compoise等节点,写出复杂的条件判断和处理。

BlackBoard 黑板:记录各种变量,可以理解为人的大脑,比如感知到玩家后,黑板中记录感知结果的变量就会被修改为True

BehaviorTrees  行为树:控制行为逻辑

 

行为树是由很多个节点组成,执行顺序是自上向下,自左向右。下面一一介绍节点

Composite node ,只有成功和失败两种结果,有结果就返回父节点。常用有以下两种:

1、选择器(Selector):从左向右执行子节点,遇到一个子节点成功就返回成功,不执行下一个节点。所有子节点都失败就返回失败。

2、序列(Sequence):从左向右执行子节点,遇到一个子节点失败就返回失败,不执行下一个节点。所有子节点都成功就返回成功。

官方文档:https://docs.unrealengine.com/4.27/en-US/InteractiveExperiences/ArtificialIntelligence/BehaviorTrees/BehaviorTreeUserGuide/

 

三、行动

行动:思考有了结果,就去行动实施。用Task节点来实现,比如让ai角色move to ,roator,play animation等等一系列的具体的行动。

Task节点:有三种状态(运行,成功,失败)

 

常见命名规则以及调用关系

AI_xxx:Aicharacter(NPC)

AlC_xxx:Aicontroller(Ai控制器),在AI中的Details-Pawn关联AIC

BT_xxx:Behavior Tree(行为树),在AIC中的事件图标调用BT

BB_xxx:Blackboard(黑板),在BT中Details-Ai-BehaviorTree中调用BB

BTT_xxx:BTTask(任务),在BT中调用

 

Gameplay debugger

编辑器按钮设置/查看

Project Settings→Engine→Gameplay Debugger→Input→Activation Key(默认是按键:‘)

 

 

运行游戏后使用

1.打开Gameplay调试器后,可以点击Tab进入旁观者状态(脱离控制角色)

2.遇到NPC之前打开Gameplay调试器,再遇到NPC没有反应,需要遇到NPC再打开

Ai相关信息

控制器名称(Controller Name)显示所指定的Ai控制器类

Pawn名称(Pawn Name)显示所指定的Pawn类

移动模式(NavWalking)显示当前的移动模式

导航数据(路径跟随)(Nav Data(path following))显示Ai移动路径

行为(树)(Behavior(tree))显示行为树是否正在运行

活跃任务(Active task)显示指定的行为树中当前正在执行的任务

Gameplay任务(Gameplay tasks)显示队列中的任务数量

蒙太奇(Montage)显示当前活跃的动画蒙太奇

 

Perception

里面的圈代表当前AI检测范围,外面的代表失去目标范围(出此圈以后,Ai将不会再去尝试寻找玩家)

球体代表NPC最后看到(sight)玩家的位置,球体旁边的直线表示NPC视线

 

Nav Mesh

显示NPC此刻可用导航路径(会随着NPC移动变化)

 

 

posted @ 2022-03-23 10:51  SiNanhong  阅读(313)  评论(0编辑  收藏  举报