Сповіщення
Очистити все

XrCompress.exe


Ранг:
Майстер
Роль:
Гість
Записи:
752
Приєднався:
2 роки тому
 

Довідка

Пакування ресурсів

Команда:

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% ), готову до пакування.


   
Цитата