Esperimenti di Salvataggio

In questi giorni non ho portato avanti di molto lo sviluppo del gioco sul Rosatellum perché, dopo aver cominciato a pensare di spostare alcune funzionalità in Lua, sto cercando di risolvere il problema del salvataggio e del caricamento dei dati.

In un gioco strategico come quello che sto preparando ci sono veramente molti dati da gestire: l’approccio che ho sempre tenuto in questo tipo di situazione è quello di usare un database, ma vorrei provare a vedere se riesco a farne a meno mantenendo comunque i dati strutturati e il sistema sufficientemente veloce.

Per salvare i dati occorre serializzarli, e questo è abbastanza facile in Unity fino a quando si parla di classi semplici composte da numeri e stringhe, ma quando cominciano ad esserci diversi riferimenti incrociati tra le classi il problema si complica.

Non sono ancora certo di aver trovato il modo migliore per salvare i dati, ma per ora ho duplicato tutte le mie classi creando una classe solo per i dati puri da utilizzare solo per il caricamento e il salvataggio. In questa classe alcuni riferimenti verranno gestiti utilizzando degli identificativi, che però non ho ancora implementato, e non ho deciso come renderli univoci. L’idea sarebbe avere il numero minimo di dati necessari nel salvataggio, e ricalcolare tutti gli altri al caricamento, ma per alcuni dati statistici come lo storico delle elezioni non so se salvare separatamente i risultati o se ricalcolarli partendo dagli elettori (in ogni caso dovrò conservare lo storico di quello che ha votato ogni singolo elettore, perché inciderà sulle elezioni successive).

Oltre al salvataggio dei dati sto cercando di decidere come gestire la configurazione iniziale del gioco, e in particolare i partiti: i partiti dovrebbero essere precostruiti usando un editor e il gioco dovrebbe scegliere secondo alcune logiche quali partiti creare durante la partita. Questi partiti dovrebbero essere salvati in file separati e in un formato leggibile, mentre il salvataggio del gioco potrebbe anche essere in binario.

Tutti questi passaggi non sono molto divertenti da programmare, e sono anche abbastanza lunghi e per ora ripetitivi. Probabilmente sto sbagliando qualcosa nel modo in cui ho strutturato il progetto e forse dovrei più semplicemente risolvere tutto con un database. Oppure forse ho trovato uno dei motivi per che allungano il tempo di sviluppo tra un gioco semplice per una jam, e un gioco vero: e dal numero di tutorial per unity che consigliano di utilizzare in modo errato le PlayerPrefs per salvare i dati comincio a convincermene.