Les programmeurs de jeux ont utilisé l'une des deux méthodes principales de stockage de données:
- stocker chaque fichier de données dans un fichier séparé
- stocker chaque fichier de données dans un format d'archive personnalisé
L'inconvénient de la première solution est le problème de l'espace disque gaspillé, ainsi que celui des installations plus lentes.
La deuxième solution offre ses propres pièges. Premièrement, vous devez écrire votre propre image / son / etc. des routines de chargement utilisant une API personnalisée pour accéder aux données archivées. Un autre inconvénient est que vous devez d'abord créer votre propre utilitaire d'archivage pour créer les archives.
TAR / GZ risque de ne pas être une très bonne idée, car vous ne pouvez pas extraire des fichiers spécifiques car vous en avez besoin. C'est la raison pour laquelle de nombreux jeux utilisent les archives ZIP, ce qui vous permet d'extraire des fichiers individuels à votre guise (un bon exemple est Quake 3, dont les fichiers PK3 ne sont rien d'autre que des fichiers ZIP avec une extension différente).
EDIT: "Cacher" la structure des dossiers du jeu et "Ne garder" que les exécutables
Une autre solution est souvent utilisée pour "masquer" les fichiers de jeu dans la structure de dossiers. Conservez uniquement vos exécutables et peut-être un fichier Lisez-moi dans le répertoire principal et déplacez les fichiers du jeu dans un sous-dossier nommé "data" ou un autre fichier associé.
EDIT: Gamedev Tuts Plus a une belle ressource
EDIT: libarchive
Une solution potentielle libarchive, qui est une bibliothèque d'archivage qui gérera l'extraction de fichiers à partir d'une archive telle qu'un fichier ZIP. Il vous permet même d’affecter le fichier extrait à un pointeur FILE standard, ce qui rendrait l’interface avec toute autre bibliothèque potentiellement plus simple.
EDIT: fichiers au format ZIP avec extension alternative
Ici, j'aime le commentaire de @Joachim Sauer
L'utilisation de fichiers au format ZIP avec des extensions alternatives a également une grande tradition en dehors des jeux: Java le fait , le format OpenDocument (aussi appelé format OpenOffice / LibreOffice) le fait , même Office Open XML (ou le "nouveau" format Microsoft Office) il fait .