Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Recursos empaquetados y como acceder a ellos

Iniciado por Vicente, 06 de Septiembre de 2006, 02:04:38 PM

« anterior - próximo »

Vicente

Hola,

alguien tiene un buen link que hable sobre empaquetar recursos (.zip, formato propio, lo que sea) y como acceder a ellos y tal? Me interesa más una discusión teórica de pros y contras, diversos sistemas, extensiones (criptografía,...) y tal, que lo que es la implementación en si.

Un saludo!

Vicente


Astat

Te recomiendo la serie de articulos titulados: "Programming a Virtual File System" de la extinta flipcode.com.

Es algo antiguo (2001), aunque da igual ya que ese campo no avanza a la velocidad de otros como el grafico.

http://www.flipcode.com/articles/article_vfs01.shtml

senior wapo

Las ventajas que yo le veo aun archivo empaquetado son:

1. Solo utilizas un archivo real de SO (un solo handle).
2. Garantizas orden de los ficheros en muchos soportes. Si vas a leer siempre file1, file32, file7, en ese orden, pues los colocas consecutivamente en el archivo empaquetado. Con esto ganas velocidad en sistemas de archivos secuenciales (ISO9660 (CDROMS) , FAT (según el caso), cintas...) y algo menos, pero siempre deseable, en otros jerárquicos (NTFS).
3. Puedes obtener la lista de archivos con una sola lectura del bloque de directorio/índice sin necesidad de usar operaciones de enumeración de directorios propias del sistema operativo.
4. Se comprimen externamente mejor al ser archivo único. Como archivos separados se resetea el diccionario del compresor al empezar cada fichero. Equivale al viejo "solid mode" del winrar y otros. Esto es útil si no usas compresión internamente.

Desventajas:
1. Hay que empaquetar todo cada vez que cambias algo de un archivo (a menos que sobreescribas). Hay trucos para solucionar esto.
2. Pierdes la ventaja de velocidad si accedes a dos o más archivos a la vez.
3. Al ser un archivo único es más lento si varios programas acceden a la vez, por ejemplo si estas ejecutando el juego desde un disco compartido de windows o NFS. Externamente el sistema operativo solo ve un archivo grande al que acceden varios usuarios, en lugar de un gran directorio en el que distintos usuarios acceden a distintos archivos en cada momento. Dependiendo de lo eficaz del mecanismo de locking que emplee el SO esto puede ser serio o simplemente anecdótico.

Algunas recomendaciones:
- Si pones la "cabecera" del archivo (la etiqueta mágica de identifiación y el directorio) al final en lugar del principio ganas una ventaja: que los primeros bytes del archivo son directamente los primeros bytes del primer fichero empaquetado dentro. Imagínate que el primer fichero es el propio ejecutable y está sin comprimir: tienes todo en un gran .EXE, lo cual es útil si quieres que corra sin instalador o como plugin.
- Si decides meter compresión, tal vez quieras considerar el SDK de LZMA que es gratuito y tiene un descompresor simple  en C que solo ocupa un archivo .C además de tener un grado de compresión bastante alto.


Eso es lo que yo he hecho en el mio y va de miedo.

Vicente

Hola!

muchas gracias por los links y comentarios. Esto es para implementarlo en C# (es para Jade). Tenía algunas ideas, pero ahora despues de leer todas estas cosas bastante mejor la verdad :)

Un saludo!

Vicente






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.