Discussion
Although standard HSMs have been used in some computer games, they are not widespread by any means. This may be because of terminology more than anything. The combination of finite-state machines with other nested techniques (for instance, rule-based systems or scripts) is popular, but these barely class as HSMs.
Advantages
HFSM really push finite-state machines to their best. Modularity does wonders to reduce the complexity of the design, which in turn simplifies the development process. Hierarchies make the creation of complex finite-state machines with graphical tools feasible. The ability to refine states into nested finite-state machines is a tremendous advantage when the behaviors are crafted incrementally.
The computational model itself is extremely flexible. It's possible to consider a state as an abstract component, letting it simulate its internal hierarchy as it deems necessary. Using this technique, it's relatively easy to customize the interaction semantics between nested states.
Disadvantages
HSMs, however, can get quite complex (on the same terms as software), although this paradigm seems one of the best suited to deal with such complexity. Debugging can be tricky for large models.
Although HSMs can be created manually with a text editor, advanced use relies heavily on graphical user interfaces—more so than finite-state machines. It's difficult to get the most out of a hierarchy without being able to display it and improve it with visual tools.
When it comes to the implementation itself, it's extremely important to define the interaction between states in the hierarchy. Still, unexpected events can occur—especially when native functions are used as transitions (that is, a procedural rather than declarative approach). Such problems are also common in standard finite-state machines, but the hierarchy really emphasizes these.
|