Vari giochi memorizzano le cose in diversi modi. Spesso, le società di giochi creano un modo per farlo e la maggior parte dei loro giochi usa lo stesso modo. Naturalmente, diversi studi spesso usano modi diversi. L'SQL è sicuramente usato per i giochi, ad esempio CCP (EVE) ha (o almeno aveva) una rete di server SQL, non sono sicuro di come lo facciano adesso. Altri, usano solo molti file.
Forse iniziare creando un "meccanismo di broker di dati" agnostico, per gestire varie transazioni di dati di gioco? Dal momento che stai solo testando, crea un meccanismo che ti consenta di non doverti preoccupare troppo della memoria, dal punto di vista del gioco stesso. Significato, concentrati su come, dall'applicazione host, gestirai questo.
Personalmente penso che sarebbe un grande vantaggio se si potesse cambiare il negozio reale, senza dover riscrivere il gioco e il broker stesso. Basta passare a un altro modulo con la stessa interfaccia con cui il broker può parlare.
La memorizzazione dei dati in sé non è probabilmente un problema di per sé. La spedizione efficiente dei dati da / verso quel negozio, tra l'host e tutti i clienti, potrebbe essere più complicata. Spedisco l'intero set di dati del giocatore, o se lo scompongo in parti, con quale granularità scelgo di partizionare, ecc. Quale richiede più risorse in quale situazione, ecc.
Un formato in cui spedire i dati potrebbe essere XML. In questo modo puoi essere più facilmente dinamico nel modo in cui puoi farlo a pezzi. Un carattere contro più caratteri o un elemento contro una raccolta di elementi, ecc. È quindi possibile "archiviare" l'XML come XML (in SQL) e / o fare in modo che SQL lo distribuisca in modo più transazionale dall'XML, a come desideri che i dati vengano effettivamente archiviati.
Un altro modo è binario, che è più efficiente in termini di spedizione, ma può comportare maggiori costi in altre situazioni.
Con 1.000 client, è possibile iniziare e archiviare facilmente 10 MB per client e utilizzare solo 10 GB di RAM effettiva + aggiungere un po 'di RAM amministrativa di sistema per la gestione di tali dati, diciamo altri GB o due. È possibile mantenerlo nella RAM sull'host già nella struttura dei dati pronto per l'uso. E carica / salva dinamicamente, a seconda di chi è online, in varie frequenze a seconda dell'attività, ecc.
È anche possibile archiviare le informazioni di ciascun cliente in un file separato e così via.