Archiviazione asset di gioco: archivio vs singoli file [chiuso]


8

Mentre sono in procinto di creare un gioco c ++ 3D e mi chiedevo quale sarebbe stato più vantaggioso quando si trattasse di risorse di gioco in termini di archiviazione. Ho visto alcuni giochi avere un singolo file di risorse compresso con tutto ciò che contiene e altri con molti piccoli file compressi.

Se avessi molti singoli file non avrei bisogno di caricare un file di grandi dimensioni contemporaneamente e di utilizzare la memoria, ma il codice dovrebbe andare in cerca di file quando il livello si carica per trovare tutti i file corretti necessari.

Non è necessaria la ricerca di file quando si ha a che fare con un file di grandi dimensioni, ma ancora, che dire di tutte le risorse attualmente non necessarie che verrebbero caricate con un unico file?

Potrei anche avere un file di risorse per ogni livello, ma come posso gestire le risorse condivise

Questo mi ha infastidito per un po ', quindi dimmi quali altri vantaggi e svantaggi ci sono in entrambi i modi di fare le cose.


7
Anche con un file di grandi dimensioni, non carichi tutto in memoria, lo carichi da un file quando ne hai bisogno.
Kikaimaru,

Risposte:


9

Sia dal punto di vista delle prestazioni che di quello di archiviazione, un singolo file di risorse è una soluzione più vantaggiosa (tuttavia in pratica non è sempre molto evidente). Lo svantaggio è che è più difficile aggiornarlo e gestirlo.

L'IMO di solito non è così importante, basta usare quello che è più conveniente per te, è davvero solo un dettaglio tecnico che non dovrebbe essere preso in considerazione fino a quando non noti davvero alcuni problemi con esso.


6
+1, fai ciò che è più semplice dal punto di vista dello sviluppatore fino a quando non si rivela un problema
John McDonald,

4

I file decompressi semplificano la modifica e la sostituzione dei file da parte dell'utente, rendendo il gioco molto più semplice da modificare. Questo può essere visto come un vantaggio o uno svantaggio, a seconda del tuo atteggiamento nei confronti del modding.

Dal punto di vista delle prestazioni: il caricamento di molti file di piccole dimensioni dal disco rigido può essere molto più lento di un singolo file di grandi dimensioni, poiché la deframmentazione di un file system generalmente cerca di evitare la divisione di file di grandi dimensioni, ma molti file di piccole dimensioni in la stessa directory può essere sparsa su tutto il disco. Quindi, quando carichi migliaia di piccoli file, l'unità potrebbe dover fare molte ricerche. D'altra parte, l'uso degli archivi potrebbe rendere più costoso ottenere singoli file all'interno degli archivi (a seconda di come sono strutturati internamente gli archivi), quindi dovresti provare a raggruppare i file che sono solitamente necessari insieme.

Dal punto di vista della manutenzione: a meno che non si disponga di uno strumento per eseguire aggiornamenti incrementali ai file dei pacchetti, le patch diventeranno molto più grandi quando è necessario sostituire interi pacchetti per patchare un singolo file.


1

Tipicamente un pacchetto sarebbe più veloce, tuttavia non è sempre conveniente, come ha detto Petr. Un modo per combatterlo è rendere il tuo motore in grado di caricare file sciolti e comprimere file. Quindi, in modalità debug, carica file sciolti e in modalità di rilascio, carica da un pacchetto

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.