Risposte:
Sono d'accordo con eBusiness. Dipende dalle dimensioni e da come si desidera modificarlo.
Stimare la dimensione in byte della mappa in una rappresentazione ragionevolmente compatta. Decidi anche quali parti della mappa possono cambiare durante il gioco. Le parti che non cambiano possono essere caricate e non devono essere salvate. Se la dimensione stimata è ridotta, è sufficiente archiviare tutto in memoria. Non vale la complessità extra del caricamento di parti della mappa e del monitoraggio di ciò che hai caricato o meno, a meno che i dati non siano così grandi da essere necessari.
Ad esempio, se stavi scrivendo Civilization II , la dimensione della tua mappa potrebbe essere di 100x100 tessere.
Questo è inferiore a 30k per una rappresentazione binaria compatta della mappa + oggetti di Civ II, quindi puoi archiviarli tutti in memoria, anche se usi un formato dettagliato molto più grande. Ho ottenuto i numeri precedenti da qualcuno che ha invertito la struttura della mappa di Civ II .
Daggerfall , considerato da alcuni come una mappa ridicolmente grande, sembra essere 5000x2500 e circa 25 megabyte, ma ha anche un gran numero di NPC (750.000 è quello che ho letto ma sembra molto alto). Sulle macchine desktop / laptop di oggi anche questo potrebbe adattarsi alla memoria, ma su dispositivi mobili o browser che potrebbero essere un po 'troppo grandi. C'è una wiki che descrive il formato della mappa Daggerfall .
È possibile ridurre le dimensioni identificando e prendendo in considerazione la ridondanza . Ad esempio, invece di archiviare 100.000 alberi o spade identici ciascuno in un formato XML, memorizza un albero e una spada e 100.000 riferimenti ad essi. Nei formati binari quel riferimento potrebbe essere solo 1 o 2 byte, e in un formato più dettagliato il riferimento può ancora essere ragionevolmente piccolo.
Fai la cosa più semplice che funziona per il tuo gioco. Se la mappa è piccola, non importa se si utilizza un formato compatto o dettagliato. Se il formato compatto si adatterà alla memoria ma il formato dettagliato no, devi decidere se il lavoro extra del formato binario è più o meno del lavoro extra del caricamento di porzioni della mappa. Dipenderà dal gioco. In un gioco in stile Civ in cui sono necessari tutti i dati per simulare i turni, il formato binario è probabilmente una scelta migliore. In un gioco simile a Daggerfall in cui non è necessario caricare aree tranne ciò che è vicino al giocatore, caricare porzioni della mappa è probabilmente una scelta migliore. Se la mappa è così grande che anche il formato compatto non si adatta alla memoria, quindi chiediti prima se vale davvero la pena lavorare in più e, in tal caso, progetta un formato binario di cui puoi caricare parti.
Per il mio attuale progetto (hobby), le mappe e tutti gli oggetti su di esse si adattano a 50 MB, quindi tenere tutto in memoria andrebbe bene. Tuttavia, voglio che venga eseguito nel browser e 50 MB sono più di quelli che voglio trasferire sulla rete, quindi li tengo tutti in memoria sul server e quindi carico solo parti del mondo nel client. Le tessere della mia mappa sono 1 byte per tessera, tessere 2048x2048 (4 MB). Gli oggetti (alberi, sedie, orchi, ecc.) Sono codificati JSON per semplicità. Nel client carico solo le aree della mappa (compresi i loro oggetti) che si trovano vicino al giocatore.
Quanto caricare dipende almeno da quanto è grande la mappa, se i dati possono ragionevolmente adattarsi alla memoria, non c'è davvero motivo di preoccuparsi del caricamento progressivo.
La cosa più notevole che XML fa è occupare molto spazio di archiviazione / memoria / spazio di rete / traffico. Se pensi che usare XML sia divertente, assicurati di farlo solo per quantità relativamente piccole di dati.
Quando si progetta un formato di dati, è necessario tenere presente come si desidera modificare questi dati. È possibile utilizzare un semplice editor di testo per scrivere i dati come un semplice file di testo, è possibile utilizzare direttamente questi file o convertirli in un formato binario per risparmiare spazio. Puoi usare un editor di immagini per rendere i tuoi livelli come bitmap, ancora una volta, potresti voler convertire in un file più piccolo.
Oppure potresti creare il tuo editor, nel qual caso ci sono poche ragioni per non usare un formato binario compatto.
Non c'è una risposta a queste domande. Questi sono tutti intrinsecamente da te.
Puoi salvare le mappe come preferisci e visualizzarle / renderizzarle in qualsiasi momento.