I programmatori di giochi hanno fatto affidamento su uno dei due metodi principali di archiviazione dei dati:
- memorizzare ogni file di dati come file separato
- memorizzare ogni file di dati in un formato di archivio personalizzato
Lo svantaggio della prima soluzione è il problema di spazio su disco sprecato, nonché il problema delle installazioni più lente.
La seconda soluzione prevede le sue insidie, la prima è che devi scrivere tutta la tua immagine / suono / ecc. routine di caricamento che utilizzano un'API personalizzata per accedere ai dati archiviati. Un ulteriore svantaggio è che devi scrivere la tua utility di archiviazione per costruire gli archivi in primo luogo.
A meno che non caricherai sempre tutti i file dall'archivio, TAR / GZ potrebbe non essere un'ottima idea, perché non puoi estrarre file specifici di cui hai bisogno. Questo è il motivo per cui molti giochi usano archivi ZIP, che ti permettono di estrarre singoli file come richiesto (un buon esempio è Quake 3, i cui file PK3 non sono altro che file ZIP con una diversa estensione).
EDIT: "Nascondi" la struttura delle cartelle di gioco e "Mantieni" solo gli eseguibili
Un'altra soluzione viene spesso utilizzata per "nascondere" i file di gioco nella struttura delle cartelle. Conserva solo i file eseguibili e forse un file Leggimi nella directory principale e sposta i file di gioco in una sottocartella denominata "dati" o altri relativi.
EDIT: Gamedev Tuts Plus ha una bella risorsa
EDIT: libarchico
Una potenziale soluzione libarchiva, che è una libreria di archiviazione che gestirà l'estrazione di file da un archivio come un file ZIP. Permette persino di assegnare il file estratto a un puntatore FILE standard, il che renderebbe potenzialmente più semplice l'interfacciamento con qualsiasi altra libreria.
EDIT: file in formato ZIP con estensione alternativa
Qui, mi piace il commento di @Joachim Sauer
L'utilizzo di file in formato ZIP con estensioni alternative ha una grande tradizione anche al di fuori dei giochi: lo fa Java , lo fa OpenDocument Format (alias OpenOffice / LibreOffice) , anche Office Open XML (alias il "nuovo" formato Microsoft Office) lo fa .