Cogito, ergo sum
Legacy:Bot Support (UT)
This page relates to Unreal Tournament. See Bot Support for an overview over bot support for UT200x.
Bot Pathing for UT
This page is an attempt to provide an overview of how the Unreal Tournament Bot AI works. Be warned that this page has been written based on ideas derived from guesswork, by someone who has no clue. Any inconsistencies and inaccuracies are either accidental, a result of the nature of the source data (i.e. random), or simply down to incompetence, stupidity, and laziness on the author’s part.
Firstly, although the UT bots may seem smarter than most of the people you know this is not the case. They are remarkably dumb. And they don’t get bored - ever. If you place a bot in a map with no inventory items and no targets to shoot at it will simply stand there admiring the scenery and checking its weapon. After all, a bot needs some motivation to move around. This motivation is provided in the form of inventory (objects to collect such as ammo, weapons, and health), targets to shoot at (other players), and game targets (control points, flags, and objectives).
The way in which a bot will behave is determined by what state it is in, and what orders it has received. For an overview of states see the text in State or InitialState. A bot is able to change the state that it is in based upon external stimulus such as being shot at, seeing other players, and the desire for a bigger gun. It is this ability that allows the bot to behave in an appropriate manner to its environment.
The state a bot is able to enter is dependent upon the game type being played. I'll start with a discussion of the death match game and with luck move on to the other game types.
The Deathmatch Game
In the Beginning
On entry to the game the bot is most likely to drop into the Roaming state with orders of FreeLance. Essentially the roaming state means that the bot will wander around the map looking for big guns, ammunition, power-ups, and other cool inventory items (like relics). Don’t be fooled into thinking that the bot is looking for a target - it isn’t.
When a bot sees (or "hears") another player it will change state to Acquisition. In the acquisition state the bot will decide where it needs to be so it can attack the player. Once it has figured that out it drops into the Attacking state.
Fighting With Style
The Attacking state is pretty self explanatory. In this state the bot is in full combat mode. It’s trying to utterly annihilate it's selected enemy. From an attacking state the bot has a number of options. It can either go into a RangedAttack state (used to perform the combo move), or enter any of the following states: Retreating, StakeOut, Hunting, and TacticalMove (although this only really applies to the team game types).
To be continued when I have more time and enthusiasm - come back NFG
Stuff that eventually got written:
- Mind Reader
- Artificial Intelligence
Unknown (author): Ideas for things to cover:
- Every game type has a specific function FindSpecialAttractionFor(Bot aBot) that controls the primary AI and sets up the bot "orders". A page on how AI code governs player and pawn activities in game might be interesting.
- Could we get stuff on advanced pathnodes? Eg, how to use TastyPellet-style pathnodes in a map to force bots to go places.
SuperApe: This is an interesting page. It gives us used to UT200x some insight into the workings of the ScriptedPawn. If someone fluent in UT could fill in the ScriptedPawn stuff that would be great.