Los programadores de juegos se han basado en uno de los dos métodos principales de almacenamiento de datos:
- almacenar cada archivo de datos como un archivo separado
- almacenar cada archivo de datos en un formato de archivo personalizado
El inconveniente de la primera solución es el problema del espacio de disco desperdiciado, así como el problema de las instalaciones más lentas.
La segunda solución proporciona sus propias trampas, primero es que debe escribir toda su propia imagen / sonido / etc. cargar rutinas que usan una API personalizada para acceder a los datos archivados. Otro inconveniente es que, en primer lugar, debe escribir su propia utilidad de archivo para crear los archivos.
A menos que siempre cargue todos los archivos del archivo, TAR / GZ podría no ser una muy buena idea, porque no puede extraer archivos específicos ya que los necesita. Esta es la razón por la que muchos juegos usan archivos ZIP, que te permiten extraer archivos individuales según sea necesario (un buen ejemplo es Quake 3, cuyos archivos PK3 no son más que archivos ZIP con una extensión diferente).
EDITAR: "Ocultar" la estructura de carpetas del juego y "Guardar" solo los ejecutables
A menudo se usa otra solución para "ocultar" los archivos del juego en la estructura de carpetas. Mantenga solo sus archivos ejecutables y tal vez un archivo Léame en el directorio principal y mueva los archivos del juego a una subcarpeta llamada "datos" u otros relacionados.
EDITAR: Gamedev Tuts Plus tiene un buen recurso
EDITAR: libarchive
Una posible solución libarchive, que es una biblioteca de archivo que se encargará de extraer archivos de un archivo como un archivo ZIP. Incluso le permite asignar el archivo extraído a un puntero de ARCHIVO estándar, lo que haría la interfaz con cualquier otra biblioteca potencialmente más sencilla.
EDITAR: archivos de formato ZIP con extensión alternativa
Aquí, me gusta el comentario de @Joachim Sauer
El uso de archivos en formato ZIP con extensiones alternativas también tiene una gran tradición fuera de los juegos: Java lo hace , el formato OpenDocument (también conocido como el formato OpenOffice / LibreOffice) lo hace , incluso Office Open XML (también conocido como el "nuevo" formato Microsoft Office) lo hace .