Lazy loaded image
简述游戏AI
字数 2579阅读时长 7 分钟
2024-3-23
2025-3-11
type
status
date
slug
summary
tags
category
icon
password

游戏AI分类

1. 有限状态机(FSM)

最基本的AI实现方式。AI在不同的状态之间进行切换,每个状态都有特定的行为和条件。
实现步骤: 定义状态(例如:巡逻、追踪、攻击、逃跑)。 为每个状态编写行为逻辑。 定义状态转换条件(例如:玩家进入视野时从巡逻状态切换到追踪状态)。 使用一个状态管理器来控制当前状态和状态转换。

2. 行为树(Behavior Tree)

一种层次结构的决策模型,用于创建复杂的AI行为。由节点组成,每个节点代表一个行为或决策。
实现步骤: 创建根节点,并添加子节点(可以是行为节点或决策节点)。 行为节点执行具体的动作(例如:移动到指定位置)。 决策节点根据条件选择子节点(例如:如果看到玩家,则执行追踪行为)。 行为树的执行从根节点开始,依次执行子节点,直到找到一个成功的行为。

3. 路径规划(Pathfinding)

用于计算AI角色从一个点移动到另一个点的最优路径,最常用的算法是A*算法,博客主页的精选文章中有介绍。
实现步骤: 创建一个网格或导航网格(NavMesh)来表示游戏世界。 使用A*算法计算起点到终点的最短路径。A*算法结合了启发式搜索和代价函数来找到最优路径。 AI角色沿着计算出的路径移动。

4. 感知系统(Perception System)

感知系统使AI能够“看到”、“听到”或“感觉到”周围的环境。
实现步骤: 视觉感知:定义视野范围和视角,检测视野内的玩家或物体。 听觉感知:定义听觉范围,检测范围内的声音事件。 触觉感知:检测AI角色是否与其他物体碰撞。

5. 决策树(Decision Tree)

决策树是一种树形结构,用于根据条件进行决策,每个节点表示一个条件或决策。
实现步骤: 创建根节点,并添加条件节点和动作节点。 条件节点根据某个条件进行判断,选择子节点。 动作节点执行具体的行为。 从根节点开始,依次进行条件判断,直到执行一个动作节点。

6. 神经网络(Neural Networks)

神经网络是一种复杂的AI模型,可以用于学习和预测。常用于更高级的AI行为,如模式识别和预测玩家行为。
实现步骤: 选择合适的神经网络架构(例如:卷积神经网络、循环神经网络)。 收集训练数据(例如:玩家行为数据)。 使用训练数据训练神经网络模型。 在游戏中使用训练好的模型进行实时预测和决策。

7. 群体行为(Flocking Behavior)

群体行为用于模拟一群个体(例如:鸟群、鱼群)的集体运动。
实现步骤: 定义三个基本规则:分离(避免碰撞)、对齐(与邻居对齐)、凝聚(向邻居靠拢)。 对每个个体计算这三个规则的影响力,并更新其位置和方向。 结合路径规划和感知系统,使群体行为更加真实。

8. 规划系统(Planning System)

规划系统用于生成一系列动作,以达到某个目标。常用的算法是GOAP(Goal-Oriented Action Planning)。
实现步骤: 定义一组动作,每个动作有前置条件和效果。 定义目标状态。 使用规划算法(例如:A*或回溯搜索)生成从当前状态到目标状态的动作序列。 执行动作序列,直到达到目标状态。
这些AI技术可以单独使用,也可以组合使用,以创建更复杂和智能的游戏AI。每种技术都有其优缺点,选择哪种技术取决于具体的游戏需求和设计目标。
 

行为树和决策树的区别

其实看介绍就能发现,行为树要比决策树更加复杂,

行为树(Behavior Tree)

特点及用途

  1. 用于复杂行为逻辑管理
      • 行为树主要用于管理和组织复杂的行为逻辑,适合需要处理多个行为和状态的游戏角色。
  1. 节点类型丰富
      • 行为树包含多种节点类型,如选择节点(Selector Node)、序列节点(Sequence Node)、并行节点(Parallel Node)、装饰节点(Decorator Node)等。
      • 这些节点类型使得行为树可以表达复杂的控制流和行为状态转换。
  1. 灵活性和模块化
      • 行为树提供了高度灵活和模块化的行为管理方式,可以通过简单地重新组合和修改节点结构来快速调整和扩展行为逻辑。
  1. 状态和任务管理
      • 行为树能很好地管理角色的状态和任务,确保在特定条件下执行合适的行为。
 

决策树(Decision Tree)

特点及用途

  1. 用于简单的决策逻辑
      • 决策树常用于基于简单条件的人为规则系统,对于需要做出一系列固定决策的游戏角色非常适用。
  1. 节点定义简单
      • 决策树的每个内部节点都表示一个决策或条件,叶子节点表示具体的行为或结果。
  1. 直观可解释
      • 决策树的决策路径是基于特定特征和阈值的,易于理解和解释。
 

比较

特性
行为树 (Behavior Tree)
决策树 (Decision Tree)
主要用途
复杂行为管理和状态控制
简单决策逻辑
节点类型
多种节点类型(选择、序列、装饰、并行等)
决策节点和行为节点
灵活性
高灵活性,易于扩展和修改
灵活性相对较低
复杂行为处理
能处理高度复杂的行为
适合简单的条件决策
直观简洁
可能较复杂
决策路径清晰,易于解释
可扩展性
高,可复用子树
低,需重构树结构完成扩展

何时使用行为树 vs. 决策树

  1. 使用行为树
      • 当需要处理复杂的角色行为逻辑时,行为树是更好的选择。行为树的多种节点类型和层级设计可以帮助你轻松管理和扩展角色行为。
  1. 使用决策树
      • 当角色行为逻辑相对简单且基于固定条件决策时,决策树是更直观和高效的选择。决策树易于理解和构建,适合用来实现基于规则的简单决策。

总结

行为树和决策树在游戏AI中有各自的优势和适用场景。行为树更适合复杂的行为管理和状态控制,而决策树则适用于简单且明确的决策场景。在实际应用中,可以根据具体的需求选择合适的树结构来实现游戏角色的行为逻辑。

GOAP算法

GOAP(Goal-Oriented Action Planning,即以目标为导向的行动规划)是一种常用于游戏AI的行为规划算法。它以角色目标为中心,通过动态规划选择操作序列来实现这些目标。GOAP 强调灵活性和智能化,提高了游戏角色在复杂环境中的自主决策能力。以下是对 GOAP 详细的介绍:

核心概念

  1. 目标(Goals)
      • 目标是AI试图达到的状态。每个目标都有优先级或价值,决定角色当前最重要的目标是什么。
  1. 动作(Actions)
      • 动作是AI可以执行的行为,每个动作都有预条件(Preconditions)和效果(Effects)。
      • 预条件:必须满足的条件才能执行该动作。
      • 效果:执行动作后,世界状态会改变以反映效果。
  1. 世界状态(World State)
      • 世界状态是对环境中所有关键信息的抽象,通常表示成一组属性及其值(如"有食物": true"、"健康": 80等)。

GOAP 的工作流程

  1. 定义世界状态
      • 确定角色和环境的初始状态。这些状态包括所有与决策相关的属性及其初始值。
  1. 设立目标
      • 定义一些AI可能需要达到的目标,并为每个目标指定优先级。
  1. 定义动作
      • 列出角色可以执行的全部动作,并为每个动作指定预条件和效果。
  1. 搜索和规划
      • 通过启发式搜索算法(如A*搜索算法)寻找可以实现目标的动作序列。搜索过程考虑当前的世界状态、目标状态以及每个动作的预条件和效果,最终生成一个行动计划。
  1. 执行计划
      • 按照搜索得出的行动计划,角色依次执行动作,并不断更新世界状态和重新评估当前目标是否已经达到。

示例

假设一个游戏角色需要在一张图中寻找食物,并且定义初始世界状态、目标和动作如下:

初始世界状态

目标

动作

  1. 搜索食物
    1. 找到食物
      1. 吃食物

        行动计划生成

        通过GOAP,搜索算法会发现通过以下动作序列可以实现目标“Eat Food”:
        1. 搜索食物:将位置从"home"切换到"forest"。
        1. 找到食物:将"has_food"从false切换到true。
        上一篇
        Unity圆形UI的实现
        下一篇
        Unity中Outline和Shadow组件顺序导致的赋值问题

        评论
        Loading...
        点击和我聊天吧~