2011-06-13 17 views
6

Actualmente estoy desarrollando un juego que simula un sistema operativo. Por lo tanto, necesito un sistema de archivos dentro del juego. Actualmente, estoy usando zziplib para poder cargar archivos de un archivo zip, sin embargo, este es un "sistema de archivos" de solo lectura y necesito una forma de escribir nuevos archivos y serializarlos posteriormente (y deserializarlos durante la siguiente ejecución). ¿Hay alguna biblioteca útil en la naturaleza para ser utilizada o debería escribir una para mí en función de cualquiera?Sistema de archivos virtual con C/C++ en Windows

Respuesta

6

Este es probablemente uno de los lugares donde el uso de una base de datos simple como un sistema de archivos hace sens.

Utilice algo como sqlite para almacenar los datos (con rutas como claves, blobs como datos, o algo así).

Una de las ventajas de hacer esto es que no tiene que preocuparse por el almacenamiento, y puede usar las herramientas de base de datos existentes para ver/editar los datos "sin conexión" en lugar de tener que escribir los suyos propios. (Además, puede almacenar otra información del juego allí).

+1

Absolutamente. SQLite ha sido utilizado por otros juegos por la misma razón. – 0xC0000022L

+0

Me olvidé por completo, que podría usar SQL que de hecho es muy bueno y se puede incluir fácilmente! ¡Gracias por el recordatorio! –

5

Puede consultar PicoStorage y Embedded File System in C++. No he usado directamente ninguno pero los he visto a los dos. Embedded File System tiene una dependencia que podría ser un tope de show: requiere que Qt esté vinculado. Quizás eso podría eliminarse, pero lo usa principalmente para QString y QFile (y no tendría ninguna razón para requerir la UI).

+0

Qt como dependencia sería una exageración. ¡Preferiría usar sqlite! Pero gracias por la información. –

+0

Ambos están desactualizados y parecen abandonados. –

2

Mis seis peniques en la parte superior de las respuestas anteriores. SolFS y CodebaseFS proporcionan capacidades de sistema de archivos virtual; ambos tienen una API para C/C++ y parecen hacer exactamente lo que estás preguntando. Aún así ... la escala de tu tarea no está clara para mí. ¿Tu juego necesita administrar docenas, cientos, zounds, ... de archivos? ¿Cuáles son los tamaños de esos archivos? Etc, etc. plantearía estas preguntas antes de buscar una solución adecuada.

Cuestiones relacionadas