Writing Game AI code is an interesting endeavor. It really has very little to do with what the traditional “AI Community” does. It’s actually extremely easy to create an AI that can wipe the floor with even the best player. After all, your AI can have perfect knowledge about the game and instant reflexes. It’s a much more difficult problem to create AI’s that are fun to play against and that don’t cheat. If you are trying to make them actually look intelligent and fun it’s an even tougher problem. In fact most AI in games these days is a simple state machine (http://en.wikipedia.org/wiki/State_machine) with some feedback mechanisms to shift between states. This is a generalization, of course, as there have been several games based around the idea of real AI as in the game “Creatures”. Scripted AI sequences are also extremely popular to try to give the player a sense that the game avatars are intelligent. In addition these scripted sequences allow the characters to do things that either wouldn’t possible in an AI framework or that they need to do to make an big “game moment” happen on cue.
I actually don’t remember the last time I spent working on AI characters. It’s probably been at least 10 years. Our game has some interesting AI elements to it that I’m currently prototyping and it’s been something really fun to play with after so long. In the past actually getting the characters to navigate the world was one of the harder problems. Nowadays this is mostly a solved problem using either node networks or a navigation mesh type setup. There are still several complications like more complex types of navigation (opening doors, using elevators, jumping chasms etc). Overall though we can spend most of our time deciding how we want the AI to react to other agents like the player and other AI’s. In addition many modern AI’s allow some amount of common planning by a higher level AI planning brain. For instance, all of the AI’s on one team can coordinate as to which targets to attack and how they approach these targets by following orders of the higher level AI but still having enough intelligence to carry out the orders given.