Discussion
With regards to finitestate machines in game AI development, there are some observations to point out.
Advantages
Finitestate machines are so incredibly simple. They're easy to implement, visualize, design, debug, and work with in pretty much any other stage of the development pipeline.
Their theory is extremely well understood. We have formal definitions of finitestate machines, which can be optimized and manipulated by various algorithms. It's also clear that finitestate machines can deal with regular languages only.
Finitestate machines have been proven to work well with computer games, and are in fact one of the most popular AI techniques. This is because of the fact that they can be used for control, and almost anyone can create them.
Disadvantages
The pitfalls of finitestate machines seem insignificant compared to avalanche of benefits, although there are quite a few:
Designing finitestate machines can get very complex when building large machines. They are computationally limited to certain problems. Finitestate machines are not suited to many simple tasks, such as counting. The design of finitestate machines is frozen at runtime. There can be problems dealing with procedural control. The output of finitestate machines is very predictable, and not necessarily suited to creating behaviors.
The disadvantages of finitestate machines can be easily taken into account during the design (and selection of the right solution), so these issues have not affected finitestate machines as the most popular game AI technique.
