Довідка
Пакування ресурсів
Команда:
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 move /YX:\engine.log X:\logs\xrCompress_% username %.log move /YX:\xrCompress_*.mdmp X:\logs\ pause
Розберемо коротко батник: - перший рядок запускає компресор із затримкою (параметри wait та /Y застосовані через недопрацьованість пакера); - друга переміщує та перейменує лог-файл (знову ж таки через вогкість пакера - лог залишається в кореневій папці замість $logs$); - третя переміщає дамп до папки $logs$ з вищезазначеної причини. Власне, для створення архіву необхідний лише перший рядок, решта лише для підтримання порядку у робочій директорії.
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 /YX:\engine.log X:\logs\xrCompress_% username %.log move /YX:\xrCompress_*.mdmp X:\logs\ pause
У gamedata лежать файли, з якими працює модер, у gamedata_old – оригінальні ресурси гри. На виході отримуємо папку з нашим модом/патчем ( patch_%date% ), готову до пакування.