Sto pianificando un gioco di avventura e non riesco a capire quale sia il modo giusto per attuare il comportamento di un livello in base allo stato di avanzamento della storia.
Il mio gioco per giocatore singolo presenta un enorme mondo in cui il giocatore deve interagire con le persone in una città in vari punti del gioco. Tuttavia, a seconda della progressione della storia, al giocatore verranno presentate diverse cose, ad esempio il leader della gilda cambierà le posizioni dalla piazza della città a varie località della città; Le porte si aprivano solo in determinati momenti della giornata dopo aver terminato una particolare routine; Diversi eventi cut-screen / trigger si verificano solo dopo il raggiungimento di un determinato traguardo.
Ho ingenuamente pensato di utilizzare inizialmente un'istruzione switch {} per decidere cosa dire l'NPC o su cui si potesse trovare e rendere interattivi gli obiettivi della missione solo dopo aver verificato le condizioni di una variabile game_state globale. Ma mi sono reso conto che mi sarei imbattuto rapidamente in molti stati di gioco e casi diversi per cambiare il comportamento di un oggetto. Anche questa istruzione switch sarebbe molto difficile da eseguire il debug e immagino che potrebbe essere difficile da usare in un editor di livelli.
Quindi ho pensato, invece di avere un singolo oggetto con più stati, forse avrei dovuto avere più istanze dello stesso oggetto, con un solo stato. In questo modo, se uso qualcosa come un editor di livelli, posso mettere un'istanza dell'NPC in tutte le diverse posizioni in cui potrebbe mai apparire, e anche un'istanza per ogni stato di conversazione che ha. Ciò significa che ci saranno molti oggetti di gioco inattivi e invisibili che fluttuano intorno al livello, il che potrebbe essere un problema per la memoria o semplicemente difficile da vedere in un editor di livelli, non lo so.
O semplicemente, crea un livello identico, ma separato per ogni stato del gioco. Questo sembra il modo più pulito e privo di bug per fare le cose, ma sembra un enorme lavoro manuale assicurandosi che ogni versione del livello sia davvero identica l'una all'altra.
Tutti i miei metodi sembrano così inefficienti, quindi per ricapitolare la mia domanda, esiste un modo migliore o standardizzato per implementare il comportamento di un livello a seconda dello stato di avanzamento della storia?
PS: Non ho ancora un editor di livelli, sto pensando di usare qualcosa come JME SDK o crearne uno mio.