Como o sftrabbit mencionou, este é um aplicativo perfeito para uma máquina de estado.
Essencialmente, você tem uma espécie de estrutura em árvore. Cada folha / nó contém informações sobre o estado atual e regras para avançar para o próximo estado. Cada nó pode conter várias saídas, dependendo da complexidade do fluxo de plot / play.
Um bom, muito análogo a isso, é um livro Escolha sua própria aventura . Cada página contém algum texto descrevendo parte da história e as decisões que o jogador pode tomar. Cada decisão leva a outra página. Algumas páginas podem ter links para páginas visitadas anteriormente, etc.
Os antigos jogos de aventura em texto, como Zork e Leather Goddesses of Phobos , e os infames jogos Sierra * Quest ( SpaceQuest, estrelado por Roger Wilco, o zelador do espaço é um dos meus favoritos ) usavam uma versão muito simples desse tipo de sistema. Cada sala de um mapa era um estado, com saídas vinculadas a outros estados ou salas. A aquisição de um item define um sinalizador em um objeto de estado global. Cada sala verificaria essas bandeiras para determinar quais caracteres ou itens estavam disponíveis em cada sala.
Portanto, seus estados podem ser implementados como uma classe ou estrutura, cada um com propriedades para:
Lista de ativos - lista de indicadores para gráficos de segundo plano e qualquer outra coisa que você precise para exibir a sala / estado / nível.
Condições de entrada - conquistas que já devem ter sido alcançadas para entrar em um nível
Saídas - links para cada possível "próxima" saída. Norte, Sul, Leste e Oeste são alguns exemplos disso, mas você também pode incluir Porta1, Teleporte, etc. Ao tentar sair de uma sala ou determinar se uma saída / porta está "aberta", seu jogo pode verificar o próximo estado para ver se suas condições de entrada foram atendidas e alterar a maneira como a saída é exibida na tela, ou simplesmente não permitir que o jogador se mova nessa direção.
Se você quiser se divertir, pode incluir uma versão diferente de um estado com diferentes condições de entrada, o que alteraria a maneira como a sala é apresentada ao jogador ou as ações disponíveis nessa sala.
Sua tela inicial, tela de morte / game over etc. podem ser estados no sistema, semelhantes à maneira pela qual você pode navegar pelas telas de menu. De fato, se você tiver um sistema de menus assim, poderá usá-lo para isso. Em vez de setas para cima / para baixo e "entrar" para navegar em um menu, você procuraria eventos específicos na área de jogo, como pisar em um bloco de teleporte, sair do lado direito da tela etc.
Do ponto de vista do administrador, considere se você pode ou não se beneficiar da criação de uma ferramenta de administração que permita criar a máquina de estado. Adicione salas a um mapa, crie links entre elas, atribua ativos como imagens de plano de fundo etc. Isso provavelmente é um exagero na sua primeira tentativa; é muito fácil absorver a criação de ferramentas administrativas e nunca terminar o jogo. Lembre-se - você não está escrevendo middleware, mas um jogo.
Espero que isto ajude.