Pregunta

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 desde un archivo zip, sin embargo, este es un "sistema de archivos" de solo lectura y necesito una forma de escribir nuevos archivos y serializarlos después (y deserializarlos durante la próxima ejecución).¿Hay bibliotecas útiles en la naturaleza para usar o debería escribir una para mí en función de alguna?

¿Fue útil?

Solución

Este es probablemente uno de los lugares donde el uso de una base de datos simple como sistema de archivos tiene sentido.

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

Una de las ventajas de hacer esto es que en realidad 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, también puedes almacenar otra información del juego allí).

Otros consejos

Puede consultar PicoStorage y Sistema de archivos integrado en C ++ .No he usado directamente ninguno de los dos, pero los he mirado a ambos.El sistema de archivos incrustado tiene una dependencia que podría ser un obstáculo: 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 interfaz de usuario).

Mis seis peniques además de las respuestas anteriores. SolFS y CodebaseFS proporciona capacidades de sistema de archivos virtuales;ambos tienen una API para C / C ++ y parecen hacer exactamente lo que está preguntando.Aún así ... la escala de su 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top