Haven Editorial: AI Theory

AI: Artificial Intelligence.

It’s a fact that AI in games is mostly based on path-finding, and nothing else. A* (pronounced “A star”) is a simple algorithm that calculates the fastest path to a target, although it seems that many programmers don’t even include it in their games. This leads to zombies and even more zombies; dumb polygon things that only walk in one direction…yours! For me this is boring and uneventful…more annoying than scary. Bad noises and dreadful design do not help much, either. I’ve been thinking, and after studying cognitive science I realize that AI is still struggling, period. Take vacuum cleaners. Any owner of a Roomba will tell you that it spends as much time bumping into tables as it does actually cleaning your living room.

My remedy is based around the idea of programming “statements”, though this would require a lot of power and programming finesse. It would have to be hard coded into the level design as well. The idea is that each time there is an input, the enemy will pick an event from a list and then preform it. Naturally this will make things a bit unpredictable, unless there is a very clear audio-visual clue. The hard part is in the command sequence.

First, there needs to be a proximity system in place. For example, if the player is within an “outer zone”, there is a chance that the AI might attack, unless a specific action is preformed, such as a distraction. There has to be a list of things that will happen if the player moves closer, pulls back or just stands still. I designed the above chart to illustrate my thought process. As you can see, the statement tree would be quite crowded and consume much CPU power. However this is the price for a more dynamic and interesting AI. I realize this example is purely reactionary, since a proactive one would be a nightmare to make, and even harder to break. Imagine though; a zombie that runs toward the nearest chest-high wall has a chance of lobbing grenades at the player, instead of just just running-and-gunning.

-Njål Sand-