UDN
Search public documentation:

AIOverview
日本語訳
中国翻译
한국어

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 Home > AI & Navigation > AI System Overview

AI System Overview


Overview


Game AI is often a necessary component to a game project. As problems like basic pathfinding and navigation have become well solved in games, AI has evolved to cope with more and more complex situations. These include dynamic levels with destroyable or otherwise permanently alterable geometry, and more complex modes of locomotion such as vehicles with varying movement capabilities, as well as making better use of the 3D environment - for example, making effective use of cover.

The fundamental building blocks of a good Artificial Intelligence include a solid understanding of the rules, strategy, and tactics of the game as well as a player of similar skill level would. Good AI needs to have a knowledge model about the game world and game state that is similar in limitations to what a player would know. For FPS games, it's also very important for the AI to have a human-like aiming model, with the same kinds of strengths and weaknesses in hitting targets under various conditions that would affect a human player. Finally, the AI needs to have flexible system for dealing with classes of interactive objects (such as vehicles and weapons) or problems.

The dramatic increases in computational power for modern consoles and PCs have been a boon, as we're finally at the point where there's a good bit of horsepower left over for AI. This allows the AI programmer to perform more computationally intensive tasks such as collision checks to discover information about the AI's environment, or add more expensive decision making into path finding.

As we reduce the number of "shortcuts" we have to take to determine AI behaviour, it allows the AI to make more informed and more nuanced decisions. For example, an NPC in UT3 that is trying to reach a distant objective will assess multiple routes rather than just picking the shortest route. These routes are assessed based on a number of factors, including "risk", what other friendly NPCs are doing, complexity, etc.

At times, Game AI can be seen as smoke and mirrors. There are still quite fundamental differences between what's going on for the most part in academic AI research and AI implementation in games. The issue of getting information about your environment is far more complex for real-world AI than for game AI, and still contains many unsolved problems. We certainly apply knowledge that originated in AI research, but for the most part we aren't using the results of "cutting edge" research in AI. One of the toughest challenges in Game AI continues to be making an NPC "feel" human, with the same kinds of reactions and limitations is definitely the most challenging problem for game AI. At the same time, Game AI tries to mimic areas such as emergent behavior.

For FPS games, another goal of Game AI is to represent more "human" behaviors - seemingly random or habitual behaviors, often imperfect.

In UT3, one of the ways that bots learn during gameplay include dynamically adjusting the costs of the path network to reflect things like "killing zones". This allows them to learn areas to avoid because they are covered by a sniper, for example. Traits like weapon preference, tactical awareness and aggressiveness are customized for different characters and affect the decision making process. We tend to be rather conservative about trying to make bots look "human" this way, because players will judge the AI as just being stupid. On more than one occasion, we've had one of our designers complain about how poorly the AI was playing in that level, not realizing that all his opponents were actually human.

At times, the goal is to represent artificial stupidity rather than intelligence. Two areas where this is critical include NPC aiming and limiting knowledge of the game state (specifically knowledge about the location and capabilities of enemies not currently visible to the bot). Perfect aim is easy, but missing like a human player is hard. Also, making the bot's mental model of where a previously visible enemy might be seem plausible can also be quite challenging.

The future of Game AI presents lots of exciting opportunities for experimentation and simulation. Theories and solutions from cientific/university research AI will often present new areas of intrest for Game AI. Of course, as computation power increases, Game AI will get better, allowing us to explore new game scenarios and mechanics. For example, a game with a solid implementation of a robust speech recognition and synthesis system as an interface, and a compelling personality and motivation model for NPCs could have gameplay focused on determining the motivations of allies and opponents.

Features


The Unreal Game AI framework consists of two parts:

  1. A means for providing a basic layout of a level that contains information that influences in-game decisions: Navigation
  2. A means for processing decisions and turning them into game actions: Controllers

Navigation

This is a high-level overview that details the design rationale behind the Unreal AI system, as well as a technical guide for programming your own game-specific AI.

Way Points and Path Nodes

See the Waypoints Technical Guide for details on programming using the path node system.

Navigation Meshes

See the Navigation Mesh Technical Guide for details on programming using the navigation mesh system.

Controllers

Controllers are the base of either input-based decisions from players or logically-determinned decisions from Game AI. Controllers are non-physical Actors that can be attached to a Pawn to control its actions.

A Pawn, therefore, is the base class of all actors that can be controlled by players or AI. Pawns are the physical representations of players and creatures in a level. Pawns have a mesh, collision, and physics. Pawns can take damage, make sounds, and hold weapons and other inventory. In short, they are responsible for all physical interaction between the player or AI and the world.

Controllers receive notifications for many of the events occuring for the Pawn they are controlling. This gives the Controller the opportunity to implement the behavior in response to this event, intercepting the event and superceding the Pawn's default behavior.

PlayerControllers are used by human players to control Pawns, while AIControllers implement the artificial intelligence for the Pawns they control. Controllers take control of a Pawn using their Possess() method, and relinquish control of the pawn by calling UnPossess().

The Controller-Pawn system was designed to have one AIController class capable of controlling pawns with many different abilities.

The Invasion game type in UT2004 had a large number of very different monsters all controlled by a single AIController class. Gears uses a base AIController class, and extends it as needed for different Locust classes.

Functions

MoveTo

This is a latent function which moves the bot directly to the passed point, and finishes on arrival. This function does no pathfinding, it just directs the pawn straight toward the target.

MoveToward

This is very similar to MoveTo, except it takes an actor as a destination and has some special handling that makes use of this extra data. (will set anchor if the bot is moving toward a navigation point, etc.).