Como mencionó sftrabbit, esta es una aplicación perfecta para una máquina de estados.
Esencialmente, tienes una especie de estructura de árbol. Cada hoja / nodo contiene información sobre el estado actual y las reglas para avanzar al siguiente estado. Cada nodo puede contener múltiples salidas, dependiendo de cuán complejo necesite que sea su flujo de trama / juego.
Un buen análogo muy suelto de esto es un libro Choose Your Own Adventure . Cada página contiene texto que describe parte de la historia y las decisiones que puede tomar el jugador. Cada decisión lleva a otra página. Algunas páginas pueden vincular a páginas visitadas anteriormente, etc.
Los viejos juegos de aventura basados en texto como Zork y Leather Goddesses of Phobos , y los infames juegos Sierra * Quest ( SpaceQuest protagonizada por Roger Wilco, el conserje espacial es uno de mis favoritos ) usaban una versión muy simple de este tipo de sistema. Cada habitación en un mapa era un estado, con salidas que se vinculaban con otros estados o habitaciones. La adquisición de un elemento establece una bandera en un objeto de estado global. Cada habitación verificaría esas banderas para determinar qué personajes o elementos estaban disponibles en cada habitación.
Por lo tanto, sus estados pueden implementarse como una clase o estructura, cada uno con propiedades para:
Lista de activos: lista de punteros a gráficos de fondo y cualquier otra cosa que necesite para mostrar la sala / estado / nivel.
Condiciones de entrada: logros que ya deben haberse alcanzado para ingresar a un nivel
Salidas: enlaces a cada posible "siguiente" salida. Norte, Sur, Este y Oeste son algunos ejemplos de esto, pero también puede incluir Puerta1, Teletransporte, etc. Al intentar salir de una habitación, o al determinar que una salida / puerta está "abierta", su juego podría verificar el siguiente estado para ver si se han cumplido las condiciones de entrada y modificar la forma en que se muestra la salida en la pantalla, o simplemente no permitir que el jugador se mueva en esa dirección.
Si quieres ponerte elegante, puedes incluir una versión diferente de un estado con diferentes condiciones de entrada, lo que alteraría la forma en que se presenta la sala al jugador, o las acciones que están disponibles en esa sala.
Su pantalla de inicio, muerte / juego sobre pantalla, etc. podrían ser estados dentro del sistema, de forma similar a la forma en que puede navegar entre las pantallas de menú. De hecho, si tiene un sistema de menú de este tipo, puede usarlo para esto. En lugar de las flechas arriba / abajo y "entrar" para navegar por un menú, buscaría eventos específicos dentro del área de juego, como pisar una plataforma de teletransporte, salir del lado derecho de la pantalla, etc.
Desde el punto de vista del administrador, considere si podría o no beneficiarse de la creación de una herramienta de administración que le permita crear la máquina de estado. Agregue habitaciones a un mapa, cree enlaces entre ellas, asigne activos como imágenes de fondo, etc. Esto probablemente sea excesivo para su primer intento; es demasiado fácil absorberse en la construcción de herramientas de administración y nunca terminar el juego. Recuerde: no está escribiendo middleware, sino un juego.
Espero que esto ayude.