xrCompress
Содержание
Справка
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%), готовую к паковке.