Come menzionato sftrabbit, questa è un'applicazione perfetta per una macchina a stati.
In sostanza, hai una sorta di struttura ad albero. Ogni foglia / nodo contiene informazioni sullo stato corrente e regole per passare allo stato successivo. Ogni nodo può contenere più uscite, a seconda della complessità del flusso di trama / riproduzione.
Un buon analogo molto sciolto a questo è un libro Scegli la tua avventura . Ogni pagina contiene del testo che descrive parte della storia e le decisioni che il giocatore può prendere. Ogni decisione porta ad un'altra pagina. Alcune pagine possono essere collegate a pagine precedentemente visitate, ecc.
I vecchi giochi di avventura basati su testo come Zork e Leather Goddesses of Phobos e i famigerati giochi Sierra * Quest ( SpaceQuest con Roger Wilco, il bidello spaziale è uno dei miei preferiti ) utilizzavano una versione molto semplice di questo tipo di sistema. Ogni stanza in una mappa era uno stato, con uscite collegate ad altri stati o stanze. L'acquisizione di un elemento imposta un flag in un oggetto stato globale. Ogni stanza controllava quelle bandiere per determinare quali personaggi o oggetti erano disponibili in ogni stanza.
Pertanto, i tuoi stati possono essere implementati come una classe o struttura, ciascuno con proprietà per:
Elenco risorse: elenco di puntatori alla grafica di sfondo e tutto ciò che è necessario per visualizzare la stanza / lo stato / il livello.
Condizioni di partecipazione: risultati che devono essere già stati raggiunti per accedere a un livello
Esci: collega a ogni possibile uscita "successiva". Nord, Sud, Est e Ovest sono alcuni esempi di questo, ma puoi anche includere Porta1, Teletrasporto, ecc. Quando si tenta di uscire da una stanza o la determinazione di un'uscita / porta è "aperta", il gioco potrebbe controllare lo stato successivo per vedere se le sue condizioni di ingresso sono state soddisfatte e modificare il modo in cui l'uscita viene visualizzata sullo schermo, o semplicemente non consentire al giocatore di muoversi in quella direzione.
Se vuoi essere sofisticato, potresti includere una versione diversa di uno stato con condizioni di ingresso diverse, che altererebbe il modo in cui la stanza viene presentata al giocatore o le azioni disponibili in quella stanza.
La schermata iniziale, la morte / il gioco sullo schermo, ecc. Potrebbero essere tutti stati all'interno del sistema, in modo simile al modo in cui è possibile navigare tra le schermate dei menu. In effetti, se si dispone di un tale sistema di menu, è possibile utilizzarlo per questo. Invece di frecce su / giù e "invio" per navigare in un menu, dovresti cercare eventi specifici all'interno dell'area di gioco, come salire su un pad di teletrasporto, uscire dal lato destro dello schermo, ecc.
Dal punto di vista dell'amministratore, considerare se è possibile trarre vantaggio dalla creazione di uno strumento di amministrazione che consenta di creare la macchina a stati. Aggiungi stanze a una mappa, crea collegamenti tra loro, assegna risorse come immagini di sfondo, ecc. Questo è probabilmente eccessivo per il tuo primo tentativo; è troppo facile essere assorbiti nella costruzione di strumenti di amministrazione e non finire mai il gioco. Ricorda: non stai scrivendo middleware, ma un gioco.
Spero che sia di aiuto.