A bot's navigation is extremely
important. If a bot cannot move effectively around the level, then it cannot
locate & use weapons & powerups, & it cannot find the player.
This can make the bot the worst kind of camper, & makes for extremely
boring DM.
Roaming AI
A bot must be able to roam the level, to feel its way around. How well
does it roam? Does it bounce around from wall to wall? Does it get stuck
in corners? Can it find its way up stairs? Can it walk along a ledge or
ride up a lift, or will it fall off? Can it see items & players? How
well does it decide where to go next? It all depends on how well a bot's
ai has been coded.
Nodes Most bots orient themselves
by dropping "bread crumbs" as they explore a level using their roaming
ai. These bread crumbs are called nodes.
Placing Nodes Now, how the nodes
are placed into the bot's awareness is handled differently from bot to
bot, with mixed results:
Via Roaming AI: In this case, of which
the Reaper bot for Quake is a good example, the bot places its own nodes
as it explores a map using its own ai. This works well, but only as well
as the ai can explore a map. Some powerups & weapons might be placed
in an area that the bot's roaming ai cannot get to. A BFG may be located
on a ledge that the bot will jump off of before it reaches the item, or
behind a door, or on a lift, which it may not be able to operate. Map layout
can make or break the success of this type of bot, unless the roaming ai
is further developed, which unfortunately can lead to more CPU overhead.
Via Player RI: That stands for Real
Intelligence, as opposed to Artificial Intelligence, & what better
base for navigation than a real human player? The Omicron for Quake is
the prime example of this approach. This type of bot will cause the player
to place nodes as he plays the level, & the bot may be able to save
this info for later use. This has some major advantages, because
by using the player's movement to learn a map, it will learn of areas &
items that an ai would not be able to find, & its movement will of
course be much more like a human player. Once it has sufficiently learned
a map, its node-placing mode can be turned off to free up CPU overhead.
Via Static Nodes: The Frogbot for Quake
doesn't learn maps. It can only play on certain maps which its programmer
has taught it by coding the nodes into the bot. This results in less CPU
overhead than the previous two methods, because the bot is not learning
anything new. It's not placing nodes, or causing the player to place nodes.
& its roaming ai is much simpler. Also, this type of bot will already
know everything it needs to know to play the level like a pro--location
of powerups/secrets/weapons, prime sniping locations, etc. This results
in a very lean & mean bot that is limited to a few maps, but plays
them extremely well.
Following the Nodes After placing the nodes,
the bots then find their way around by going from node to node. Depending
on how smart the bot is, it will determine the shortest path to take by
calculating the shortest number of nodes between it & its goal. A really
smart bot will also take into account the different heights & ledges
of a map, so it doesn't try to go to a node that is inaccessible &
then get stuck. Some bots will even follow sound cues to determine where
the player is & track him down, or make an educated guess as to where
a player is going & take a shortcut to head him off!