Oбсуждаем какими утилитами и каким способом оптимизировать файлы для лучшего сжатия.
[more=набросок FAQ...][c][b]набросок FAQ
FAQ незакончен, на данный момент собраны вопросы, которые чаще всего спрашивают
В: rep, srep это одно и тоже по сути? и выходит srep - лучше?
О: srep - "в чём-то лучше, в чём-то хуже"
главный плюс - найдёт повторы во всём файле.
главный минус - "дисковые операции", но это особенность работы srep, т.е. чем меньше свободной оперативной памяти на машине, где будет происходить распаковка, тем дольше это займёт времени и тем больше будет нагрузка на диск.
см. топик FreeArc там были тесты.
Если результат обработки с помощью srep такой же как и у rep, лучше использовать rep.
В: Хочу сделать Repack (перепаковать файлы игры), с чего начать?
О: Прежде всего надо начать с "анализа" имеющихся данных:
0. Провести сбор информации по этой игре, что из себя представляют её ресурсные файлы...
1. Если уже были выпущены репаки, то посмотреть как они сделаны
Если Инет не очень быстрый, то стоит остановиться на Репаках от "Релиз-групп", которые давно этим занимаются.
Ниже описывается общий подход для сжатия данных, о которых ничего неизвестно.
2. Анализ данных:
2.1. Проверить на "повторы на больших расстояниях", используя для этого rep, srep
Если после srep, rep, степень сжатия незначительная 99% и т.п., то ли нет повторов, или данные чем-то упакованы, соответственно применять rep, srep не имеет смысл.
2.2. Проверить на сжатые данные (zLib or the Deflate compression method) используя precomp
2.2.1. precomp
2.2.2. precomp -slow
Если после precomp, степень сжатия 100% и т.п., соответственно применять precomp не имеет смысл.
Если после precomp, степень сжатия > 100%, то делаем п.2.1.
3. srep, rep, precomp - будут являться по-сути препроцессорами, после которых нужно будет использовать основной алгоритм сжатия, на практике используют ассиметричные алгоритмы, такие как LZMA.
В: Объясните, пожалуйста, как может помочь xdelta в сжатии данных?
О: Основная задача xdelta построить diff-файл, файл разницы между двумя файлами
вот пример использования Devil.May.Cry.4.Full-Rip.Skullptura
на сегодня для таких случаев есть srep
В: сделал exe, а при запуске получаю - не является приложением Win32
О1: на размер exe в Windows ограничение - 4ГБ (скорее всего в Win32)
О2: для freearc sfx можно использовать такой трюк - переименовать freearc.sfx в archive.exe, рядом положить archive.arc. тогда при запуске archive.exe будут распаковываться файлы из archive.arc
В: не отображается иконка у exe (размер exe от нескольких сотен МБ)
О: зависит от фрагментация адресного пространства процесса (Explorer \ TC и т.п.) в котором эта иконка отображаться должна...
[/more][/b][/c]
Precomp (по-русски) Прекомпрессор с интерфейсом командной строки. Вы можете использовать его для достижения лучшего сжатия некоторых типов файлов (работает с файлами, сжатыми методами ZLib или Deflate, и GIF-файлами). Precomp пытается произвести распаковку потоков этих файлов, и, если они декомпрессированые при последующей перекомпрессии идентичны бит-в-бит оригинальному потоку, то перекомпрессия не производится.
В результате получается .pcf-файл (PCF = PreCompressedFile), который содержит больше декомпрессированных данных, чем оригинальный файл. Обратите внимание, что этот файл больше оригинального, но, если сжать его методом сжатия сильнее, чем Deflate, он сожмётся лучше, чем оригинал (или использовать lprepaq для прекомпрессии и сжатия за один шаг).
[more=пример для командной строки]Как использовать precomp:
Прекомпрессия: precomp -slow image.img
На выходе имеем файл image.pcf - это и есть файл с разжатыми zLib-потоками, который, в отличие от оригинала image.img, жмётся тем же севензипом на ура.
Обратная рекомпрессия: precomp -r image.pcf
На выходе имеем файл image.img, т.е. исходный оригинал.
На данный момент рекомендуется отключать обработку JPG с помощью параметра -t-j
Код: precomp -t-j
precomp -slow -t-j