Un pequeño manual elaborado por mí para aplicar esta compresión y tratar de reducir el juego.
Antes de proceder tenemos que ver la estructura del juego y
su posible compresión.
Precomp comprime mejor binarios, datos, dll pero no videos y
archivos ya comprimidos (pak por ejemplo)
Hay juegos que están ya comprimidos y apenas se comprimirán
nada, como por ejemplo Call of Duty que contiene casi todos los archivos en
Pak.
Yo suelo coger unos archivos 2 o 3 y pruebo con las tres
compresiones posibles, freearc solo, srep y precomp a ver cual comprime mejor,
generalmente sobretodo en juegos modernos solo con la compresión srep será
suficiente, es la que suelo aplicar yo para ahorrar tiempo , si en la prueba de
compresión el precomp comprime bastante mas pues se puede alternar entonces a
comprimir con precomp los datos y con el srep los vídeos.
Una vez vista la estructura me creare un subdirectorio
llamado “G”.
Creamos otra carpeta con los siguientes archivos (se pueden
bajar desde mi blog)
ARC.EXE
ARC.INI
SREP.EXE (v.3.0)
PRECOMP.EXE (v.0.4.2)
PACKJPG_DLL.DLL
ZLIB1.DLL
Pongamos que tenemos un juego:
Aquí se podría probar la compresión de un archivo data.bin
pero como pesan demasiado si no quereis perder tiempo le aplicáis la compresión
srep.
Comenzamos la compresión por bloques:
Yo suelo probar por bloques de mas o menos dos gigas de
datos, por lo que en la carpeta “G” crearía la carpeta “DATOS” y dentro
copiaría el 1º archivo “DATA1.BIN” que ocupa ya 2 GB.
Aplicamos la compresión:
Si usamos SREP solo:
arc a -ep1
-r -w.\ .\Disk\Data1.bin -msrep+lzma:a1:mfbt4:d256m:fb128:mc1000:lc8
"d:\g\*"
Con esto creamos el comprimido (se llama data1.bin también)
en la carpeta “Disk” en la carpeta donde tengas el ARC.
Ejemplo:
Si utilizados PRECOMP+DELTA+SREP
arc a -ep1
-ed -r -w.\ .\Disk\Data1.bin
-mprecomp:t-nf:zl98:d0+srep+exe+delta+lzma:a1:mfbt4:d256m:fb128:mc1000:lc8
"d:\g\*"
Ahora miramos el resultado del archive comprimido, si pesa
600 o 700 o 800 MB se puede incluir mas
datos a la siguiente compresión.
Procesemos asi con todos los archivos de la carpeta datos cambiando en la línea de comandos el Data1.bin por Data2.bin y así sucesivamente:
arc a -ep1
-r -w.\ .\Disk\Data2.bin -msrep+lzma:a1:mfbt4:d256m:fb128:mc1000:lc8
"d:\g\*"
arc a -ep1
-r -w.\ .\Disk\Data3.bin -msrep+lzma:a1:mfbt4:d256m:fb128:mc1000:lc8
"d:\g\*"
Luego procedemos a copiar a “G” la carpeta video, esta como
sus archivos pesan poco se puede copiar ya la carpeta y los archivos en la raiz
que queden para comprimirlos todos.
A pesar de que contienen algunos binarios hay unos archivos
de video por lo que recomiendo solo SREP (ahorraras mucho tiempo y la
compresión será parecida al PRECOMP).
Ahora que ya tememos todo comprimido supongamos que ha
quedado el resultado:
Vamos al script :
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.bin'),
ExpandConstant('{app}'), '', false, '', '', ExpandConstant('{app}'),
notPCFonFLY {PCFonFLY}) then break;
Con esta línea descomprimirá hasta el Data3.bin que es el
ultimo del disco 1.
if not
ShowChangeDiskWindow ('Inserta el disco 2 con el archivo Data4.bin.',
ExpandConstant('{src}'),'data4.bin') then break;
Con esto si no
encuentra el Data4.bin preguntara donde encontrarlo, por lo que insertamos el
Disco 2 y lo seleccionamos.
if not
ISArcExtract ( 0, 0, ExpandConstant('{src}\*.bin'), ExpandConstant('{app}'),
'', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
Y con esta seguirá extrayenso el resto, Data5 y Data6.
En resumen:
if not
ISArcExtract ( 0, 0, ExpandConstant('{src}\*.bin'), ExpandConstant('{app}'),
'', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
// CAMBIO DISCO
if not ShowChangeDiskWindow ('Inserta el disco
2 con el archivo Data4.bin.', ExpandConstant('{src}'),'data4.bin') then
break;
if not ISArcExtract ( 0, 0,
ExpandConstant('{src}\*.bin'), ExpandConstant('{app}'), '', false, '', '',
ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
A tener en cuenta:
Muchas veces no merece la pena usar la Precomp o Srep,
simplemente con Freearc nos vale.
Me gusta más Srep que Precomp a no ser que la diferencia de
compresión sea mucha, en la mayoría de juegos con Srep es suficiente ya que
comprimirá igual que Precomp.
Se puede alternar la compresión pero si quieres ahorrar
tiempo comprime todos los datos con Srep o solo con Arc.
Precomp además de tardar mucho tiempo puede consumir mucho
espacio en los temporales del disco duro además de demorarse más en la
instalación que Srep.
Podeis bajar el script
aqui