xrCompress

Материал из xrWiki
Перейти к: навигация, поиск

xrCompress — официальная утилита для паковки ресурсов в формат игровых архивов .db

Паковка ресурсов

Команда:

xrCompress.exe <data_dir> -ltx <file_name.ltx> [options]

Опции могут быть следующими:

  • -diff /? (опция для получения информации о созданных различиях)
  • -fast (быстрое сжатие)
  • -store (сохранять файлы без сжатия)
  • -ltx <file_name.ltx> (конфиг с путями для пакуемых файлов)

Формат ltx-файла:

[config]
;<path>  = <recurse>
.\       = false
textures = true

Получение различий (создание патча)

Команда:

 xrCompress.exe -diff <new_data> <old_data> -out <diff_resulf> [options]

Параметры <new_data>, <old_data> и <diff_resulf> должны быть именами каталогов.
Опции могут быть следующими:

  • -nofileage (не выполнять проверку на дату изменения файлов)
  • -crc (не выполнять проверку CRC32)
  • -nobinary (не выполнять проверку бинарных файлов)
  • -nosize (не выполнять проверку размера файлов)

Заметка: компрессором из 2215 можно было распаковывать архивы некоторых билдов; в современных версиях распаковщик не работает.


Практика

Паковка ресурсов

1. Создадим пакетный файл следующего вида:

:: запускаем пакер с задержкой
@start /wait bin\designer\compressor\xrCompress.exe gamedata -ltx datapack.ltx
:: перемещаем и переименуем лог-файл из корневой папки в $logs
move /Y X:\engine.log X:\logs\xrCompress_%username%.log
:: перемещаем дамп (при его наличии) в $logs
move /Y X:\xrCompress_*.mdmp X:\logs\
pause

2. Создадим ltx-файл примерно следующего содержания:

[options]
exclude_exts = *.ncb,*.sln,*.vcproj,*.old,*.rc,*.scc,*.vssscc,*.bmp,*.smf,*.uvm,*.prj,*.tga,*.txt,*.log,*.tmp

[include_folders]
;<path>       = <recurse>
.\            = false
configs       = true

[exclude_folders]
textures\ed   = true

[header]
auto_load    = true
level_name   = single
level_ver    = 1.0
entry_point  = $fs_root$\gamedata\
creator      = "gsc game world"
link         = "www.gsc-game.com"

Тут все понятно — в секциях указываются учитываемые/неучитываемые файлы и папки. В заголовке указывается тип архива, версия, точка входа и возможность автозагрузки при старте игры:

  • для одиночной игры — single, автозагрузка разрешена;
  • для сетевой должен соответствовать имени карты, автозагрузка запрещена.

С вышеуказанным конфигом будет создан архив gamedata.pack_#0, содержащий *.xr-файлы и конфиги из папки gamedata. Теперь его нужно переименовать в gamedata.dbNN, где NN - порядковый номер архива, и отправить в папку с игрой.

Создание патча

Команда:

@start /wait bin\designer\compressor\xrCompress.exe -diff gamedata gamedata_old -out patch_%date%
move /Y X:\engine.log X:\logs\xrCompress_%username%.log
move /Y X:\xrCompress_*.mdmp X:\logs\
pause

В gamedata лежат файлы рабочей версии проекта, в gamedata_old — оригинальные (неизмененные) ресурсы игры. На выходе получаем папку с нашим модом/патчем (patch_%date%), готовую к паковке.