JavaScript EditorFree JavaScript Editor     Ajax Editor 

Main Page
  Previous Section Next Section


Hierarchical state machines are born as solutions to the flaws with standard finite-state machines. The biggest issue is complexity of the representation. With classical finite-state machines, it is difficult to express the following examples:

  • "During any attacking or wandering behavior, run away if the enemy boss appears."

  • "When a flash grenade is thrown, enter dodge mode!"

  • "The attack behavior consists of the tasks of finding, following, and shooting at the enemy."

  • "The camping behavior is independent from weapon management."

The flat nature of finite-state machines does not allow these concepts to be expressed. The four following criteria can be identified from such examples [Harel87]:

  • Clustering— The first example indicates the need to group together all states for attacking and wandering. The compound state itself is known as a superstate.

  • General transitions— In the second case, there's a need to express a transition from any state, so that the behavior is overridden.

  • Refinement of states— Some behaviors in the finite-state machine are defined as a combination of other simpler activities. The third case is an example of this.

  • Independence and orthogonality— The fourth point illustrates that components of a system are not always directly connected.

The first three properties can be captured using a hierarchical model. The last property is about concurrency instead, and can be considered separate.

      Previous Section Next Section

    JavaScript EditorAjax Editor     JavaScript Editor