Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: tamat en 08 de Mayo de 2006, 01:39:49 PM

Título: Almacenar Ficheros En Un Unico Fichero
Publicado por: tamat en 08 de Mayo de 2006, 01:39:49 PM
 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?
Título: Almacenar Ficheros En Un Unico Fichero
Publicado por: senior wapo en 08 de Mayo de 2006, 02:21:06 PM
 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).
Título: Almacenar Ficheros En Un Unico Fichero
Publicado por: ethernet en 08 de Mayo de 2006, 03:14:16 PM
 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.
Título: Almacenar Ficheros En Un Unico Fichero
Publicado por: AK47 en 08 de Mayo de 2006, 04:03:50 PM
 Hacer un programa que te lo haga esta tirau :P
Título: Almacenar Ficheros En Un Unico Fichero
Publicado por: Warchief en 08 de Mayo de 2006, 04:49:01 PM
 El cotw de Za está por aquí:
http://www.lemonteam.com/html/tutorials/zpack.htm
Título: Almacenar Ficheros En Un Unico Fichero
Publicado por: tamat en 08 de Mayo de 2006, 05:10:09 PM
 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.
Título: Almacenar Ficheros En Un Unico Fichero
Publicado por: Pablo Zurita en 08 de Mayo de 2006, 05:13:58 PM
 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.
Título: Almacenar Ficheros En Un Unico Fichero
Publicado por: tamat en 08 de Mayo de 2006, 07:09:08 PM
 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.
Título: Almacenar Ficheros En Un Unico Fichero
Publicado por: [EX3] en 08 de Mayo de 2006, 11:36:38 PM
 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...