UDN
Search public documentation:

AIOverviewCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > AI & 导航 > AI 系统概述

AI 系统概述


概述


游戏 AI 通常是游戏项目中的必要组件。它使得游戏中的寻路和导航的问题得到了很好的解决,经过不断地演变,AI 已经可以处理更多更加复杂的问题。这些包括具有可破坏的或永久不变的几何体的动态关卡、更加复杂的运动模型(比如具有不但变化的运动功能的车辆)、以及更有效地的利用 3D 环境,比如,有效地利用掩体。

好的人工智能的基本构建块包括对游戏的规则、策略、战术、及具有同样技术等级的玩家所具备的理解能力有扎实的了解。好的 AI 需要具有关于游戏世界和像玩家所知道的游戏状态的知识模型。对于 FPS 游戏来说,AI 具有类似于人类的瞄准模型也是很重要的,在影响真正的玩家的各种情况下,使 AI 在射击目标具有同样的优势和劣势。最后,AI 需要具有灵活的系统来处理交互对象的类(比如车辆和武器)或问题。

现在的游戏机平台及 PC 的处理能力的巨大增长是一个优势,因为我们最终可以为 AI 提供更多的处理能力。这使得 AI 程序员可以执行更加复杂的处理能力敏感的人物,比如用于查找关于 AI 的环境的碰撞检测,或者在寻路中加入更加昂贵的处理。

由于我们减少了决定 AI 行为的“快捷方式”的数量,这使得 AI 可以做出具有更多信息的并且具有更加细微差别的决定。比如,UT3 中的一个尝试到达远距离的目标的 NPC 将会访问多个路径而不仅是选择最短的路径。它可以基于很多因素来访问这些路径,这些因素包括“风险”,其它的友好的 NPC 正在做的事以及复杂性等。

有时,您会认为游戏 AI 是 骗人的 。在学术上的 AI 研究和游戏中的 AI 实现在很大程度上还是有本质不同的。在获得环境信息问题方面,真实世界的 AI 要比游戏 AI 复杂的很多,并且还包含很多尚未解决的问题。我们肯定会使用在AI研究中所发明的信息,但是在很多方面,我们没有使用 AI 的“最前沿”的研究结果。游戏 AI 中最艰巨的一个挑战仍然是使得 NPC 感觉更加像真人,获得和人一样的反应和限制确实是游戏 AI 的最有挑战性的问题。同时,游戏 AI 尝试模拟区域,比如浮现的行为。

对于 FPS 游戏来说,游戏 AI 的另一个目标是呈现更加“像人”的行为 – 现在表面上随机的或者习惯的行为还是很不完美的。

在 UT3 中, 其中一种机器人学习的方法包含了动态地调整路径网络的权重来反映出类似于“歼敌区”的东西。这允许它们识别到那个区域并避开,因为那些区域中有狙击兵掩藏在那里。不同人物的类似于武器参数、战术意识及侵略性的特性都是自定义的,并且这些不同的特性会影响它们做决定的过程。我们倾向于非常保守地使用这种方法来使得机器人像“真人”,因为玩家将会判断 AI 为愚蠢的东西。我们的设计人员不止一次地抱怨说关卡中的播放的 AI 是多么的糟糕,它不会认为他的对抗者是真正的人。

有时候,我们的目标是呈现 人造愚蠢 而不是智能。这在两个地方是很重要的,包括 NPC 瞄准和游戏状态的有限信息(特别是关于当前对于机器人来说不可见的敌人的位置和能力的信息)。精确地瞄准是很容易的,但是产生和人类玩家一样的误差则是非常困难的。同时,使得机器人的思维模型在先前可见的敌人处使得敌人看上去是似是而非的也是非常有挑战性的。

游戏 AI 的功能为实验和仿真呈现了大量的令人兴奋的东西。来自 学术/大学 的研究的AI的理论和解决方案通常会为游戏 AI 呈现出新的有趣的领域。当然,随着处理能力的提高,游戏 AI 将会变得更好,从而允许我们探索新的游戏情节和结构。比如,如果一个游戏具有稳固的强大的语音识别和综合系统作接口,并且 NPC 具有鲜明的人物特性和动机模型,那么就可以使游戏性专注于决定同盟和对手的动机。

特点


虚幻游戏的 AI 架构由两部分组成:

  1. 为关卡提供基本布局的一种方法,并且关卡中包含了影响游戏中决定的信息: 导航
  2. 用于处理决定及把它们转换为游戏动作的方法: Controllers(控制器)

导航

这是一个高级的概述文档,它详细介绍了 Unreal AI 系统的底层的基本设计原理,同时可以作为您编写自己的针对特定游戏的 AI 的技术指南。

Way Point(路点)和 Path Node(路径节点)

请参照路径节点技术指南页面获得关于使用路径节点系统进行编程的详细信息。

导航网格物体

请参照导航网格物体技术指南页面获得关于使用导航网格系统进行编程的更多信息。

Controller(控制器)

Controller(控制器) 或者是玩家的基于输入的决定的基础或者是游戏 AI 的基于逻辑的决定的基础。控制器是非物理 Actor,可以把它附加到 Pawn 上来控制它的动作。

Pawn 是可以由玩家或 AI 控制的所有 actor 的基类。Pawn 是关卡中玩家和生物的物理展现。Pawn 有一个网格物体、碰撞及物理。Pawn 可以被损害、发出声音、持有武器及其他装备。简洁地说,它们负责玩家或 AI 与世界间的所有物理交互活动。

控制器接收发生在它们控制的 Pawn 上的所有的事件的通知。这样便允许 Controller(控制器)实现响应这个事件的行为,解释事件并代替 Pawn 的默认行为。

人类玩家使用 PlayerController 来控制 Pawn,而 AIController 实现了它们控制的 Pawn 的人工智能。控制器使用它们的 Possess() 方法来处理 Pawn,并且通过调用 UnPossess() 来放弃对 Pawn 的控制。

设计 Controller-Pawn 系统的目的是使得一个 AIController 类可以控制具有很多不同功能的 pawn。

UT2004 中的侵略型游戏有大量的由一个单独的 AIController 控制的不同的怪物。战争机器使用了基类 AIController,并根据需要扩展它来获得了不同的 Locust 类。

函数

MoveTo

这是一个 latent 函数,它会把机器人直接地移动到经过的节点,并在到达时结束。这个函数没有寻路,它只是将 pawn 直接导向目标节点。

MoveToward

这个函数和 MoveTo 非常类似,除了它是以一个 actor 作为目的地,并且有一些使用这个额外数据的特殊处理。(如果机器人正在移向一个导航节点那么将会设置锚点,诸如此类)。