Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Almacenar Ficheros En Un Unico Fichero

Iniciado por tamat, 08 de Mayo de 2006, 01:39:49 PM

« anterior - próximo »

tamat

 Para mi proyecto final de carrera necesito tener del orden de una giga en texturas, obviamente no se mostraran todas a la vez sino que las irá cargando conforme se necesiten (es algo rollo google earth).
Como no quiero tener miles de archivos he pensado en meterlo todo en un unico archivo y dejar tablas para localizar facilmente esos archivos dentro de él. No me interesa demasiado que esté comprimido ya que todo seran texturas ya comprimidas así que disponer de algo rollo zip no me ahorra espacio y seguramente me añada coste computacional.

Necesito alguna librería o algoritmo que me pertima facilmente guardar y leer de un archivo gigante, desde mi aplicacion.

Alguna idea de por donde empezar?
Por un stratos menos tenso

senior wapo

 Hay montones de código fuente para packers de recursos. Sin ir mas lejos en stratos en la sección COTW, uno de Zaelsius.

Y si no, copias todos los archivos uno detrás de otro en uno grande y guardas en un diccionario el par con la longitud almacenada o bien delante de cada archivo en sus primeros 4 bytes, o bien formando parte de la entrada de diccionario.

Para la tabla (serializar el diccionario), pues lista, array, tabla hash, arbol,  lo típico.

La tabla yo la guardo al final del archivo empaquetado, con la posición de la tabla guardada en los ultimos 4 bytes del paquete (bueno, una "cabecera" realmente).

ethernet

 En mi PFC he estado haciendo cosas "parecidas" y he usado un quadtree para indexar todas las "imágenes" (no son tal, pero se puede hacer una equivalencia). Quizás te sirva para hacerlo en el fichero.

AK47

 Hacer un programa que te lo haga esta tirau :P


tamat

 Gracias a todos.

La verdad es que no es que tema no saber hacerlo, ideas me sobran, pero quería sondear antes de mancharme las manos por si luego topo con algun punto oscuro. Supongo que haré eso, meterlos todos uno tras otro e indexarlos en un segundo fichero.

Las busquedas dentro de un fichero de una giga temo que seran lentas (por busquedas me refiero a saltos), tal vez piense en alguna idea a lo quadtree como comenta ethernet. En fin, veré como me las apaño.
Por un stratos menos tenso

Pablo Zurita

 Usar un archivo ZIP sigue siendo una muy buena idea. No hace falta que el zip comprima nada, se pueden incluir archivos a un zip sin que los comprima y eso te permite sacar las texturas de un zip de forma inmediata. Además esto te ahorra tiempo de desarrollo ya que hay librerías disponibles como zlib para abrir los zips.

tamat

 Pero en mi caso no creo que compense. Los archivos los genero yo desde mi app y los leo yo desde otra app, no tengo interes en poder gestionar los datos pero gracias por la información.
Por un stratos menos tenso

[EX3]

 Podrias usar el formato PAK tradicional del Quake/Half-Life que hace tiempo que veo diferentes implementaciones (que en el fondo son la misma) para trabajar con este formato en GameDev y sitios similares. Despues para armar los paquetes usas el PakScape que es un editor muy comodo y sencillo para crear diferentes formatos de paquetes de juegos, que lo puedes bajar desde mi web por ejemplo o googleando mismamente. Formato sencillo de leer y sin compresion.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.