Eu escrevi um FSM baseado em um capítulo no "Massively Multiplayer Game Development", editado por Thor Alexander. Dentro, há um capítulo chamado "Máquinas de Estado Paralelo para Personagens Críveis". Isso está escrito em python, mas os conceitos são facilmente traduzíveis em C ++. Eu recomendo verificar isso, mesmo que seja sobre estados de personagem, não sobre jogo.
O que eu criei está aqui: https://github.com/swganh/mmoserver/tree/master/src/ZoneServer/GameSystemManagers/State%20Manager
procure no StateManager para obter detalhes da implementação, mas basicamente você tem 'estados base' diferentes. usar. Então, a partir daí, você tem os estados específicos para os quais faz a transição como personagem; portanto, cada estado é uma classe. Em seguida, você verifica se pode fazer a transição de um estado para outro e, em seguida, ao pressionar 'enter', você também pode fazer coisas como colocar eventos depois de passar para um estado. Descobri que isso funcionou muito bem para o jogo até agora.
O que eu implementei é o que o livro chama de máquina de estado paralelo, essencial para vários fsm trabalharem juntos. Nesse caso, você pode fazer a transição para um estado, que bloqueia todos os outros estados (por exemplo: CreatureState_Dead). Não vou detalhar muito mais, pois acho que isso realmente não ajudaria, mas se você quiser, posso elaborar.