View Full Version : What makes a good game AI ?

2011-May-27, 09:18 PM
I am making a Quake 2 style arcade FPS game. My main focus is good gameplay and solid AI rather than pretty graphics. I intend the AI to be both non cheating and challenging. So infinite ammo,respawning monster closets etc are out. The enemy is inspired by the Covenant from Halo games. Currently I have implemented the Elite and Grunt equivalents. I call them the Enforcers and Troopers respectively.

I am trying to give the enemy realistic senses. Obviously they can't see behind them but I want to extend this beyond what most games do. For example in most games if you shoot a gun the AI has magic hearing that tells them your exact coordinates. Even through 50 feet of concrete (I am looking at you Crysis and Deus Ex).

So instead I made the AI only search the general vicinity of the gunshot. See this video for what happens when I fire a single shot into an room and hide. The enemy does not know who fired the shot or even where it came from. They search the whole area but don't go to where I am hiding. This can make the AI seem a bit weak. How can I make the hearing more effective while still keeping it realistic ?


In this example I show the AIs reaction times and reactions to surprising events. Here I hit a small mook alien soldier with a Coca cola vending machine. He does not magically turn around and start shooting me. Instead as he gets up from being knocked he is completely awe struck. Although the animation does not currently show it he has a Langauge reaction going on. He takes a few seconds to come back to senses and start attacking me. This seems to offer the player ample time to kill him. Should I reduce the reaction time further or should this "realistic" reflexes remain ?


Also any other inputs on how to improve your typical FPS game AI ? AI is my main focus. And I would love suggestions on what the AI needs to do in order to be more lifelike. My emphasis is twofold 1 )simulating living creatures not bots and not using cheating. Anything that falls within these two constraints goes !