Я написал FSM на основе главы «Разработка многопользовательских игр» под редакцией Тора Александра. Внутри находится глава с надписью «Параллельные машины для правдоподобных персонажей». Это написано на python, но концепции легко переводятся на C ++. Я настоятельно рекомендую проверить это, хотя это касается состояний персонажей, а не состояний игры.
То, что я создал, находится здесь: https://github.com/swganh/mmoserver/tree/master/src/ZoneServer/GameSystemManagers/State%20Manager.
Подробные сведения о реализации вы найдете в StateManager, но в основном у вас есть разные «базовые состояния», которые вы можете использовать. использовать. Затем оттуда у вас есть конкретные состояния, в которые вы переходите как символ, поэтому каждое состояние является классом. Затем вы проверяете, можете ли вы переходить из одного состояния в другое, а затем, нажимая клавишу «enter», вы можете легко сделать такие вещи, как вставка событий после перехода в состояние. Я обнаружил, что до сих пор это отлично сработало для игры.
Я реализовал то, что книга называет параллельным конечным автоматом, который необходим для совместной работы нескольких fsm, в этом случае вы можете перейти в одно состояние, которое блокирует все остальные состояния (например, CreatureState_Dead). Я не буду вдаваться в подробности, так как не думаю, что это действительно поможет вам, но если вы хотите, я могу уточнить.