Иерархический конечный автомат
Конечный автомат, состояния которого могут содержать собственные подсостояния, так что общее поведение пишется один раз в родителе.
Плоский конечный автомат для игрового персонажа быстро упирается в проблему: «стоит», «бежит» и «присел» должны уметь прыгать, и один и тот же переход приходится проводить из каждого. В иерархическом автомате все три лежат внутри родительского состояния «на земле», которое одно владеет переходом в «в воздухе». Подсостояние, не обработавшее событие, передаёт его вверх, родителю, — почти как наследование в объектно-ориентированном коде.
Идея восходит к statecharts Дэвида Харела (1987), придуманным для описания авионики истребителей, чтобы диаграммы не разрастались до неприличия. Разработчики игр взялись за неё, когда плоские автоматы и паттерн «Состояние» перестали масштабироваться, — и нередко в свою очередь бросали ради деревьев поведения, когда глубина иерархии выходила из-под контроля.