Ho una classe   GameState    progettata per contenere una matrice di giocatori, un   Array    di   StarSystems    e alcuni altri campi che devono persistere dal salvataggio al salvataggio. Ogni   GameObject    tiene traccia del proprio ID, che è anche il suo indice nel suo array e l'id dei relativi oggetti di gioco. 
public class GameState implements Json.Serializable
{
    private Array<StarSystem> systems;
    private Array<Player> players;
    //Methods used to access data and some utilities
}
 Ogni   StarSystem    nella   GameState    memorizza un   Array    di   Planet    e una Stella o tre, che a loro volta contengono informazioni su temperatura e abitabilità. Class Star si estende dal pianeta e ha 0 abitabilità. La classe   StarSystem    ha anche riferimenti a tutte le flotte presenti nel sistema, i loro proprietari. La classe   Fleet    contiene un elenco di istanze Ship presenti nella flotta e le informazioni pertinenti per ogni nave. 
Ho progettato questo sistema per due motivi:
- Volevo essere in grado di chiamare 'Json.toJson (Object)' una volta quando salvo il gioco invece di passare e salvare ogni oggetto singolarmente.
- Prima di questo il mio codice era molto disorganizzato e avevo strani riferimenti a varie cose disseminate nel codice. Questo è più pulito.
Sfortunatamente questo ha anche abbassato il FPS dal 35-40 al 20-25, il che mi fa schifo e probabilmente ticcherebbe anche qualsiasi utente. In altre parole, sto chiedendo come posso migliorare questo design?
 Note: la natura indicizzata indica che per un   Planet.ProductionQueue    per aggiungere un nuovo   Fighter    a   Fleet    SomeFleet di   Player    A, deve prima chiamare   GameInstance.getInstance().getState().getSystem(parent_system).getFleet(fleet_target_id).addShip(new Fighter(owner_id, getLeastPowerfulCommandShip().getID()))    
Nota che sto usando anche libGdx e che la classe Json di cui ho parlato fa parte della libreria.