Unity 游戏 AI 核心术语详解 - 行为树与状态机
本文系统介绍游戏 AI 开发中的核心术语,涵盖行为树(Behavior Tree)、有限状态机(FSM)、目标导向行动计划(GOAP)等主流 AI 架构的关键概念。
一、AI 基础概念
1.1 核心术语
| 英文术语 |
中文释义 |
详细说明 |
| Decision |
决策 |
AI 系统的底层逻辑,决定角色下一步的行为 |
| Behavior |
行为 |
一般情况下指的是单个动作,如”移动”、”攻击”等 |
| Logic Action |
逻辑动作 |
角色需要做出符合游戏身份的动作 |
| Behavior Pool |
行为池 |
一系列行为组成的集合,供 AI 选择使用 |
| Simple Behavior |
单一行为 |
在组织过程中的表现,不可再分的基本行为单元 |
| Composite Behavior |
复合行为 |
由多个单一行为组合而成的复杂行为 |
1.2 AI 架构对比
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ┌─────────────────────────────────────────────────────────────────────────┐ │ 游戏 AI 架构对比 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ FSM (有限 │ │ BT (行为树) │ │ GOAP (目标导向)│ │ │ │ 状态机) │ │ │ │ │ │ │ ├─────────────────┤ ├─────────────────┤ ├─────────────────┤ │ │ │ 基于状态转换 │ │ 基于树结构 │ │ 基于目标规划 │ │ │ │ 动态命令队列 │ │ 静态树结构 │ │ 动态计划生成 │ │ │ │ 简单直观 │ │ 层次清晰 │ │ 灵活智能 │ │ │ │ 适合简单AI │ │ 适合复杂AI │ │ 适合策略AI │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘
|
二、行为树 (Behavior Tree) 术语
2.1 行为树概述
行为树是一种基于静态树结构的行为系统(Based on Static Tree’s Behavior System):
| 特征 |
说明 |
| 叶子节点 |
全部是行为节点 (ActionNode) |
| 中间节点 |
全部是控制节点 (ControlNode) |
| 控制类型 |
选择 (Selector)、并行 (Parallel)、序列 (Sequence) |
2.2 节点类型
| 英文术语 |
中文释义 |
详细说明 |
| ActionNode |
行为节点 |
具体到最终效果的节点,执行实际动作 |
| ControlNode |
控制节点 |
控制执行哪条线、哪个行为节点的节点 |
| Precondition |
前提条件 |
执行某个节点前需要满足的条件 |
2.3 三种基本控制结构
| 英文术语 |
中文释义 |
执行逻辑 |
| Sequence |
序列 |
一个行为接着一个行为做,全部成功才返回成功 |
| Parallel |
并行 |
多个行为同时进行,根据配置决定成功条件 |
| Selector |
选择 |
从候选行为中选择一个执行,包括脚本选择和随机选择 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ┌─────────────────────────────────────────────────────────────────────────┐ │ 行为树控制结构可视化 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ Sequence (序列) Selector (选择) Parallel │ │ │ │ (并行) │ │ ┌───┴───┐ ┌───┴───┐ ┌───┴───┐ │ │ v v v v v v v v v │ │ [1] [2] [3] [1] [2] [3] [1] [2] [3] │ │ │ │ │ │ │ │ │ │ │ │ │ 全部成功 任一成功 同时执行 │ │ 才返回成功 即返回成功 可配置条件 │ │ │ └─────────────────────────────────────────────────────────────────────────┘
|
三、有限状态机 (FSM) 术语
3.1 FSM 概述
FSM (Finite State Machine) 是基于动态命令队列的行为系统(Based on Dynamic Command Queue’s Behavior System)。
| 特征 |
说明 |
| 核心机制 |
维护一个行为队列,执行队列中的行为命令 |
| 行为命令 |
面向 AI 决策层的接口 |
| 行为节点 |
真正的行为执行单元 |
3.2 FSM 核心术语
| 英文术语 |
中文释义 |
详细说明 |
| Behavior Machine |
行为机器/行为机 |
行为机的主要任务是维护一个行为队列,并执行队列中的行为命令 |
| Behavior Command |
行为命令 |
AI 把行为命令压入行为队列,等待行为机的处理 |
| Behavior Node |
行为节点 |
FSM 中的节点,真正的行为执行单元,是一组简单行为的集合 |
3.3 节点生命周期方法
| 英文术语 |
中文释义 |
调用时机 |
| Enter |
进入 |
每个节点进入时调用,用于初始化 |
| Execute |
运行 |
每个节点的运行方法,每帧调用 |
| Exit |
离开 |
每个节点离开时调用,用于清理 |
💡 重要说明:节点切换时必须调用上一个节点的 Exit 方法(Transition)来完成转换清理工作。
四、GOAP (目标导向行动计划) 术语
4.1 GOAP 概述
GOAP (Goal-Oriented Action Planning) 是一种目标导向型行动计划架构。
| 特征 |
说明 |
| 核心思想 |
根据目标动态生成行动计划 |
| 适用场景 |
需要灵活规划和决策的复杂 AI |
4.2 GOAP 核心术语
| 英文术语 |
中文释义 |
详细说明 |
| Goal Selector |
目标选择模块 |
选择 AI 当前需要完成的目标(相当于更高层的决策层) |
| Planner |
计划器 |
根据目标和前提条件生成多个子计划的模块 |
| Plan Stepper |
计划实施模块 |
相当于行为层,执行计划 |
| Precondition |
前提条件 |
某个行为需要满足的条件 |
| Effect |
效果 |
某个行为对世界的影响 |
4.3 GOAP 工作流程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| ┌─────────────────────────────────────────────────────────────────────────┐ │ GOAP 工作流程 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ 1. 目标选择 │───>│ 2. 计划生成 │───>│ 3. 计划实施 │ │ │ │ Goal Selector │ │ Planner │ │ Plan Stepper │ │ │ ├─────────────────┤ ├─────────────────┤ ├─────────────────┤ │ │ │ 选择当前目标 │ │ 根据 Precond. │ │ 执行 Action │ │ │ │ 评估优先级 │ │ 生成计划树 │ │ 产生 Effect │ │ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ │ │ │ │ └───────────────────────┴──────────────────────┘ │ │ │ │ │ 持续监控与重新规划 │ │ │ └─────────────────────────────────────────────────────────────────────────┘
|
五、数据共享与管理术语
5.1 共享数据
| 英文术语 |
中文释义 |
详细说明 |
| Blackboard |
黑板/共享数据 |
用于存储和共享 AI 决策所需的数据 |
| Working Memory |
工作池子 |
缓存池、双缓存等,用于临时数据存储 |
| Decentralized |
分散的 |
共享数据是分散的,每个 AI 拥有独立数据 |
| Centralized |
集中的 |
共享数据是集中的,多个 AI 共享同一数据源 |
5.2 数据流
| 英文术语 |
中文释义 |
详细说明 |
| InputParam |
输入参数 |
行为树的输入,可以是黑板数据,也可以是世界信息 |
| OutputParam |
输出参数 |
行为树的输出,可以是 Request 请求,传递到行为层进行动画播放 |
六、分数系统 (Scoring System)
6.1 概念
| 英文术语 |
中文释义 |
详细说明 |
| Scoring System |
分数系统 |
为每个单独的行为打分,根据分数高低来决定执行哪个行为 |
6.2 工作原理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| ┌─────────────────────────────────────────────────────────────────────────┐ │ 分数系统工作流程 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ 输入因素 评分 决策 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ 敌人距离 │ ──────────> │ 攻击:85│ ─────────> │ 执行攻击 │ │ │ │ 自身血量 │ │ 逃跑:30│ │ │ │ │ │ 武器状态 │ │ 巡逻:10│ │ │ │ │ │ ─────── │ └─────────┘ └─────────┘ │ │ └─────────┘ │ │ │ │ 最高分 │ │ └─────────────────────────┴───────────────────────┐ │ │ │ │ │ ▼ │ │ 选择得分最高行为 │ │ │ └─────────────────────────────────────────────────────────────────────────┘
|
七、术语速查表
7.1 按类别分类
节点相关
| 英文 |
中文 |
说明 |
| ActionNode |
行为节点 |
执行具体动作 |
| ControlNode |
控制节点 |
控制执行流程 |
| BehaviorNode |
行为节点 |
FSM/BT 中的执行单元 |
| Precondition |
前提条件 |
执行前的条件判断 |
生命周期
| 英文 |
中文 |
说明 |
| Enter |
进入 |
节点初始化 |
| Execute |
运行 |
节点执行 |
| Exit |
离开 |
节点清理 |
| Transition |
转换 |
状态切换 |
架构类型
| 英文 |
全称 |
中文 |
| FSM |
Finite State Machine |
有限状态机 |
| BT |
Behavior Tree |
行为树 |
| GOAP |
Goal-Oriented Action Planning |
目标导向行动计划 |
7.2 架构选择建议
| 场景 |
推荐架构 |
理由 |
| 简单敌人 AI |
FSM |
结构简单,易于理解 |
| 复杂战斗 AI |
BT |
层次清晰,可复用性强 |
| 策略游戏 AI |
GOAP |
灵活规划,智能决策 |
| 群体 AI |
BT + Blackboard |
共享数据,协调行为 |
八、总结
本文系统介绍了游戏 AI 开发中的核心术语:
| 类别 |
核心内容 |
| 基础概念 |
Decision、Behavior、Behavior Pool |
| 行为树 |
Sequence、Selector、Parallel、ActionNode、ControlNode |
| 状态机 |
Behavior Machine、Behavior Command、Enter/Execute/Exit |
| GOAP |
Goal Selector、Planner、Precondition、Effect |
| 数据管理 |
Blackboard、Working Memory、Input/Output Param |
💡 学习建议:
- 从 FSM 开始,理解状态转换的基本概念
- 学习行为树的三种控制结构:Sequence、Selector、Parallel
- 了解 GOAP 适用于需要动态规划的场景
- 实践时建议使用成熟的 AI 框架,如 NodeCanvas 或 Behavior Designer
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1487842110@qq.com