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
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í).
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).
Qt como dependencia sería una exageración. ¡Preferiría usar sqlite! Pero gracias por la información. –
Ambos están desactualizados y parecen abandonados. –
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.
- 1. manera más fácil de programar un sistema de archivos virtual en Windows con Python
- 2. Implementación de enlaces simbólicos en un sistema de archivos virtual
- 3. Implementación de un sistema de archivos virtual en .NET
- 4. Sistema de archivos en memoria para Windows
- 5. Cómo implementar un sistema de archivos virtual Python usando shelve
- 6. Node.js y sistema de archivos en Windows - Error de EBUSY
- 7. Comportamiento de archivos temporales de Windows: ¿el sistema los elimina?
- 8. Sistema de archivos TreeView
- 9. Proceso de horquillas con CC .NET
- 10. Detalles de call/cc
- 11. Copia de archivos con Python en Windows
- 12. Sistema de archivos incrustado de código abierto (o sistema de archivos virtual de un solo archivo, o almacenamiento estructurado) para C
- 13. Configuración de desarrollo de Windows Virtual PC?
- 14. En la memoria Sistema de archivos FUSE
- 15. ¿Cómo crear una impresora virtual en Windows?
- 16. ¿Qué es call/cc?
- 17. patrones "call-cc" en Scala?
- 18. Llamadas al sistema en Windows
- 19. FileEquals insensible a archivos en el sistema de archivos con distinción entre mayúsculas y minúsculas
- 20. Cómo crear una unidad de Windows virtual
- 21. simple Sistema de archivos
- 22. Uso de OpenCL en el sistema de invitado con CPU en Virtual Box, VMWare o Parallels?
- 23. git-merge con repositorio en el sistema de archivos local
- 24. PHP Mail, CC Field
- 25. Grep en varios archivos en el sistema de archivos Hadoop
- 26. Intentando probar las operaciones del sistema de archivos con VFSStream
- 27. Windows C llamada al sistema con espacios en el comando
- 28. Instalación de OSQA en Windows (sistema local)
- 29. Escuchante del sistema de archivos
- 30. ¿Cómo puedo recibir eventos del sistema de archivos de Windows en Java?
Absolutamente. SQLite ha sido utilizado por otros juegos por la misma razón. – 0xC0000022L
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! –