Escribí un FSM basado en un capítulo en "Desarrollo de juegos multijugador masivo" Editado por Thor Alexander. Dentro hay un capítulo titulado "Máquinas de estado paralelo para personajes creíbles". Esto está escrito en python, pero los conceptos son fácilmente traducibles a C ++. Recomiendo comprobar esto, aunque se trata de estados de personajes, no de estados de juego.
Lo que creé está aquí: https://github.com/swganh/mmoserver/tree/master/src/ZoneServer/GameSystemManagers/State%20Manager
busque en StateManager los detalles de implementación, pero básicamente tiene diferentes 'estados base' que puede utilizar. Luego, a partir de ahí, tiene los estados específicos a los que hace la transición como personaje, por lo que cada estado es una clase. Luego verifica si puede pasar de un estado a otro y luego, al 'ingresar', realiza el cambio, también puede hacer fácilmente cosas como poner eventos después de pasar a un estado. Descubrí que esto funcionó muy bien para el juego hasta ahora.
Lo que he implementado es lo que el libro llama una máquina de estado paralela, que es esencial para que múltiples fsm trabajen juntas, en este caso puede hacer la transición a un estado, que bloquea todos los demás estados (es decir: CreatureState_Dead). No voy a entrar mucho más en detalles ya que no creo que realmente te ayude, pero si quieres puedo dar más detalles.