Я написав FSM на основі розділу в "Масивно розробленому багатокористувацькому грі" під редакцією Тор Олександра. Всередині - глава з написом "Паралельні стани для правдоподібних персонажів". Це написано в python, але поняття легко перекладаються на C ++. Я настійно рекомендую перевірити це, хоча це стосується станів символів, а не станів гри.
Що я створив тут: https://github.com/swganh/mmoserver/tree/master/src/ZoneServer/GameSystemManagers/State%20Manager
дивіться у StateManager для детальної інформації про впровадження, але в основному у вас є різні "базові стани", які ви можете використання. Тоді звідти у вас є конкретні стани, до яких ви переходите як персонаж, тому кожен стан - це клас. Потім ви перевіряєте, чи можна переходити з одного стану в інший, а потім, коли «перейдіть», ви перемикаєтесь, ви також можете легко робити такі речі, як ставити події після переходу до стану. Я знайшов, що це справді добре розроблено для гри.
Те, що я реалізував, - це те, що книга називає машину паралельного стану, що є суттєвою роботою декількох функцій fsm. У цьому випадку ви можете перейти в один стан, який блокує всі інші стани (тобто: CreatureState_Dead). Я не збираюся надто детально розбиратися в деталях, як я не думаю, що це вам справді допоможе, але якщо ви хочете, я можу детальніше розглянути.