好的,很高兴能帮助你学习Unreal Engine 5中的AI知识。UE5的AI系统非常强大,而**AI感知(AI Perception)**是整个系统的"五官",是AI决策与行动的基础。
我将为你梳理一个清晰的学习路径,从核心概念到高级应用,并提供相关的资源建议。
学习路径总览
一个典型的UE5 AI工作流程如下,这也是我们学习的顺序:
-
感知 (Perception): AI如何通过"看"、"听"等方式感知世界? (这是你的起点: AI Perception System)
-
记忆 (Memory): AI如何存储它感知到的信息? (这是 Blackboard)
-
决策 (Decision Making): AI如何根据记忆中的信息做出决定? (这是 Behavior Tree)
-
行动 (Action): AI如何执行决策,例如移动、攻击? (这是 Behavior Tree Tasks 和 Navigation System)
-
环境分析 (Environment Analysis): AI如何智能地选择最佳位置? (这是 Environment Query System - EQS)
第一站:AI感知系统 (AI Perception System)
这是AI的感官系统,让AI能够对外部刺激 (Stimulus) 做出反应。没有它,AI就是"瞎子"和"聋子"。
核心概念:
-
AIPerceptionComponent(AI感知组件):-
这是最重要的组件,你需要将它添加到你的
AIController蓝图中。 -
它负责管理AI拥有的所有"感官"。
-
-
AISense(AI感官):-
代表一种特定的感知能力。UE5内置了多种感官,最常用的是:
-
AISense_Sight(视觉): 模拟AI的视野。你可以配置视野角度 (Sight Angle)、距离 (Sight Radius)、失去目标后的记忆时间 (Lose Sight Radius)等。 -
AISense_Hearing(听觉): 模拟AI的听力。可以对游戏世界中的"噪音"做出反应,比如玩家的脚步声、枪声。 -
其它感官: 还包括
AISense_Touch(触觉),AISense_Damage(伤害感知),AISense_Team(团队感知) 等。
-
-
-
AIStimulus(AI刺激源):-
这是能够被
AISense探测到的事件或对象。 -
例如,一个玩家角色可以被设置为一个视觉刺激源。当AI的
AISense_Sight探测到这个玩家时,AIPerceptionComponent就会收到通知。 -
你可以在任何Actor上添加
AIPerceptionStimuliSource组件来主动注册它为一个刺激源。
-
工作流程:
-
设置: 在你的AI控制的角色(通常是
AIController)上添加AIPerceptionComponent。 -
配置感官: 在
AIPerceptionComponent的细节面板中,添加并配置你需要的感官(如AISenseConfig_Sight)。 -
注册刺激源: 确保你的玩家角色或其它需要被感知的对象能够产生刺激(对于视觉,通常默认可见的Pawn都可以被感知)。
-
响应事件: 在
AIPerceptionComponent上,最重要的事件是On Target Perception Updated。当AI感知状态(如看到或丢失目标)发生变化时,这个事件会被触发。你可以从这个事件中获取到是哪个Actor触发了感知,以及感知的具体信息(例如是否成功感知到)。
实践入门:
-
目标: 创建一个简单的AI,当它"看到"玩家时,在屏幕上打印出 "I see you!",当玩家离开视野时,打印 "Where did you go?"。
-
步骤:
-
创建一个基础的
AIController蓝图。 -
向该蓝图添加
AIPerceptionComponent。 -
在组件的
Senses Config中添加一个AISenseConfig_Sight并设置其视野范围。 -
在
AIController的事件图表中,找到AIPerceptionComponent的On Target Perception Updated事件,并根据事件输出的Stimulus结构体中的Successfully Sensed布尔值来打印不同的字符串。
-
第二站:黑板 (Blackboard) 与 行为树 (Behavior Tree)
感知到的信息需要地方存储和使用,这就是黑板和行为树发挥作用的地方。
-
Blackboard (BB) - AI的记忆:
-
一个简单的数据存储容器,以"键-值"(Key-Value)对的形式工作。
-
你可以创建不同类型的键,如
Object(用于存储玩家Actor),Vector(用于存储目标位置),Bool(用于存储状态,如"IsAngry")等。 -
AI感知系统会将感知到的信息(比如玩家Actor)写入黑板。
-
-
Behavior Tree (BT) - AI的大脑:
-
一个树状的逻辑结构,用于决定AI在特定情况下应该做什么。它从左到右,从上到下执行。
-
行为树会持续读取黑板中的数据来做出决策。
-
关键节点类型:
-
Selector(选择器): 从左到右执行其子节点,一旦有一个成功,就停止并返回成功。常用于"如果A不行,就试试B"。 -
Sequence(顺序器): 从左到右执行其子节点,只有当所有子节点都成功时,它才返回成功。常用于需要按顺序执行的一系列动作。 -
Task(任务): 树的叶子节点,执行具体的操作,如Move To,Wait,Play Animation。 -
Decorator(装饰器): 附加在Composite或Task上,作为"守卫"或"条件判断"。如果条件不满足(例如,黑板中的"TargetPlayer"键是空的),它下面的整个分支都不会被执行。 -
Service(服务): 附加在Composite节点上,只要其所在的分支被激活,它就会以一定频率执行。常用于持续更新黑板数据,比如检查玩家是否在攻击范围内。
-
-
它们如何协同工作?
-
AIPerceptionComponent看到玩家。 -
在
On Target Perception Updated事件中,将获取到的玩家Actor写入 到Blackboard的 "TargetPlayer" 键中。 -
Behavior Tree中有一个Decorator,它会检查Blackboard里的 "TargetPlayer" 键是否已设置。 -
如果已设置,
Decorator允许执行其下的分支,比如一个包含Move To任务的Sequence,让AI向 "TargetPlayer" 移动。 -
如果AI丢失了玩家的视野,
AIPerceptionComponent会再次触发事件,你可以将Blackboard中的 "TargetPlayer" 键清空。 -
Decorator检测到键为空,于是"追击"分支被阻断,AI可能会回到Selector的另一个分支,比如"巡逻"。
第三站:环境查询系统 (Environment Query System - EQS)
当AI需要做出更智能的位置决策时,EQS就派上用场了。它让AI可以对周围环境"提问",从而找到最佳地点。
-
问题示例:
-
"离我最近的三个掩体在哪里?"
-
"哪个位置既能看到玩家,又离玩家不太近?"
-
"寻找一个可以发动突袭的最佳攻击点。"
-
-
工作原理:
-
Generator (生成器): 在一定范围内生成一系列候选点(比如在一个圆圈内生成网格点)。
-
Test (测试): 对每个候选点进行一系列的"测试"和"打分"。例如:
-
Distance Test: 距离玩家的远近。 -
Trace Test: 该点到玩家之间是否有障碍物(即能否通视)。 -
Pathfinding Test: AI是否能走到该点。
-
-
Querier (查询者): AI(通常是行为树里的一个任务)执行这个EQS查询,并从所有候选点中选出得分最高(或最低)的那个点,然后将它存入黑板,供后续任务(如
Move To)使用。
-
推荐学习资源
-
官方文档 (最权威):
-
Epic Games 学习中心 (免费视频课程):
- 在Epic Games Launcher的 "Unreal Engine" -> "学习" 标签页中搜索 "AI",你会找到官方制作的非常高质量的入门和进阶教程。
-
YouTube 教程 (非常直观):
-
Ryan Laley: 他的AI系列教程非常经典,循序渐进,强烈推荐。搜索 "Ryan Laley AI Series"。
-
Mathew Wadstein ("WTF is?"): 他的视频专注于解释单个系统或节点,非常适合查漏补缺。搜索 "Mathew Wadstein AI Perception" 或 "Mathew Wadstein Behavior Tree"。
-
CodeLikeMe: 提供很多项目驱动的AI教程。
-
总结与建议
-
从简单开始: 不要一开始就想做非常复杂的AI。先从
AIPerception的On Target Perception Updated事件打印信息开始,确保你理解了"感知"这一步。 -
逐步集成: 成功实现感知后,再引入
Blackboard和Behavior Tree来存储和使用这些信息。先做一个简单的"巡逻->追击"行为。 -
善用调试工具: UE5的AI调试工具非常强大!
-
在游戏运行时,按
'(单引号) 键可以开启AI调试模式,你可以看到AI的视野范围、行为树的当前执行路径等。 -
在行为树和EQS编辑器中都有模拟调试功能,可以直观地看到逻辑执行情况。
-
-
最后再接触EQS: 当你对Perception、BT、BB已经很熟悉之后,再来学习EQS,你会发现它能极大地提升你AI的"智商"。
祝你学习顺利!AI是一个非常有趣且有深度的领域,享受创造智能角色的过程吧!