Sto sviluppando una Metroidvania 2D che consiste in una serie di livelli interconnessi che possono essere rivisitati.
Ogni livello è rappresentato da un file TMX piastrellato in cui ho specificato dove vengono generati vari oggetti di diverse classi di sprite (ad esempio nemici, pickup, leve, ecc.). Quando inizio una nuova partita, caricando una partita salvata o cambiando un livello, il mio ciclo di gioco scorre attraverso il file TMX appropriato e genera tutti gli oggetti in quel livello.
Gestisco i cambiamenti di livello nel modo seguente: Se l' Player
oggetto interseca un Portal
oggetto, change_map()
viene chiamato un metodo che carica una nuova mappa (quella associata al portale intersecato) e posiziona il giocatore nella posizione appropriata sulla nuova mappa.
Alcuni dei miei oggetti hanno stati che vorrei essere persistenti attraverso i cambiamenti di livello e il salvataggio e l'uscita dal gioco. Ad esempio, se un giocatore sblocca una porta e l'attributo di stato della porta è impostato su "aperto", vorrei che la porta fosse aperta quando il giocatore ritorna. Voglio qualcosa di simile per le leve, che può essere impostato a sinistra o a destra, e vari altri oggetti. Inoltre, a volte il giocatore avrà collezionato oggetti che non voglio rigenerare quando il giocatore rivisita l'area.
La mia domanda è quindi come posso gestire questo tipo di persistenza?
Sto lavorando in Python, anche se penso che tu possa sottrarti a questo.