Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Так как там работает xrCompress.exe
GAMEINATOR forums > S.T.A.L.K.E.R. > Мастерская: создание модов для S.T.A.L.K.E.R.
aka_sektor
Давняя тема.
Моды есть, чаще с открытыми ресурсами.

Почему так? Наверное одна из причин - непонимание, как пользоваться GSC'шным запаковщиком ресурсов xrCompress.exe

В комплекте с X-Ray SDK 0.4 его не было (есть в версии YURSHAT'а), есть в 0.5 и 0.7

Собственно вопрос, кто-нибудь разобрался как правильно сией утилитой пользоваться?

Оф. мануал вроде как не существует.
aka_sektor
Провёл тут опрос, данные такие по xrCompress.exe из состава SDK 0.7:
- Не пакует файлы в формате .xr, даже если прописать:
Код
[include_files]
gamemtl.xr = true
lanims.xr = true
particles.xr = true
senvironment.xr = true
shaders.xr = true
shaders_xrlc.xr = true
stalkergame.inf = true

Цитата
В логе даже ничего не писало.
Если распаковать полученный архив, файлов .xr нету



Далее, наткнулся на пост по xrCompress.exe из SDK от YURSHAT, который изменил macron: https://www.amk-team.ru/forum/topic/5525-so...comment=1091417

Там сказано следующее:
Цитата
hex-правки Macron (не брал *.avi, *.txt и *.tga-файлы, хотя в datapack.ltx их убрали из списка исключений. Пришлось в самом xrCompress.exe хексом переименовать .txt в .txz и т.д. Тогда стал брать)


По всей видимости, компрессор багованный, и не только в SDK 0.7
Marafonec
aka_sektor, я паковал мод "Последний сталкер" компрессором из SDK от YURSHAT. Всё оставлял по умолчанию, ничего не правил.
Игровые архивы не читались (точнее не читалась папка levels, как писал уже когда-то). Упаковал первый архив gamedata.db0 из всех пустых каталогов геймдаты простым конвертером. После этого остальные архивы стали читаться.
Сначала использовал батник:
Код
@start xrCompress.exe c:\gamedata -ltx datapack.ltx -fast -max_size 1900
Все работало. Но, рандомно могла генерироваться ошибка и вылетало с логом
Код
FATAL ERROR
[error]exp​ression    : current_level.guid() == level_graph().header().guid()
[error]Function      : CAI_Space::load
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\ai_space.cpp
[error]Line          : 129
[error]Description   : graph doesn't correspond to the AI-map
Опять виновата была папка levels. В результате убрал из батника параметр -fast, и релиз запаковывал без него. Все работает без проблем.
aka_sektor
Касаемо запаковки, наткнулся на пост: https://www.amk-team.ru/forum/topic/13149-c...;comment=576061

Чел проверил xrCompress.exe из SDK 0.7 пакует с таким .ltx:
Код
[options]
exclude_exts = *.ncb,*.sln,*.vcproj,*.old,*.rc,*.scc,*.vssscc,*.bmp,*.smf,*.uvm,*.prj,*.tga,*.t
xt,*.log

[include_folders]
anims = true
configs= true
levels = true
meshes = true
scripts = true
sounds = true
spawns = true
textures = true

[exclude_folders]


[header]
auto_load       = true
level_name    = mp_test; level name
level_ver    = 1.0        ; level version
entry_point    = $fs_root$\gamedata\; do not change !
creator     = "www.stalker-game.com"; creator or link
link         = "www.stalker-game.com"

И такой командой:
Код
@start /wait xrCompress.exe my_mod -ltx build_map.ltx -store

Цитата
мод был в папке my_mod , но там были только папки, которые я указал....

Далее переименовал в xpatch_03.db и сунул в папку patches


Цитата(Marafonec @ 10.04.2019, 20:28) *
виновата была папка levels. В результате убрал из батника параметр -fast, и релиз запаковывал без него. Все работает без проблем.

Судя по посту: https://www.gameru.net/forum/index.php?s=&a...t&p=1642326

Виновата не папка, а файлы:
  • .geom
  • .geomx

Точнее даже, компрессор, который по какой-то причине не способен их сжать.

А вылет:
Цитата(Marafonec @ 10.04.2019, 20:28) *
graph doesn't correspond to the AI-map

Вроде как в другом, см. 3 вариант: https://modders.pro/Ai_space.cpp

А именно, из-за файлов:
  • level.ai
  • game.graph
aka_sektor
Вот ещё пост, тут некоторое пояснение по .ltx файлу и командам: https://www.amk-team.ru/forum/topic/8230-co...;comment=686028
Код
xrCompress.exe gamedata -ltx datapack.ltx

Цитата
- команда start и ключик /wait не требуются при запуске непосредственно из операционки;

- gamedata - это папка с упаковываемыми ресурсами;

- -ltx datapack.ltx - ключик и имя конфиг-файла для упаковки.

и папка и имя конфиг-файла могут быть иными, важно чтобы именно они были указаны в батнике.

Использование ключиков для типа сжатия (-fast|-story), т.е. быстрого сжатия или без сжатия - по вкусу, хотя очевидно, что для модов они врядли востребованы.


Цитата
Конфиг-файл состоит из 4-х секций: [options], [include_folders], [exclude_folders], [header]

[options] ;-- собственно тут можно указать расширения для файлов, которые не следует паковать
exclude_exts = *.old, *txt,*.bak,*.log

[include_folders] ;-- перечисляем папки/подпапки которые требуется включить в пак-файл
scripts = true
configs = true

[exclude_folders] ;-- с точностью до наоборот, перечисляем папки которые НЕ включать в архив (хотя их проще не иметь в упаковываемой gamedata)

[header] ;-- собственно основная секция, которая задает формат/заголовок пак-файлу
auto_load = true
level_name = single
level_ver = 1.0 ;-- version
entry_point = $fs_root$\gamedata\ ; do not change!
;creator = "www.stalker-game.com" ;-- creator or link (для любителей все метить "своим")
link = "www.stalker-game.com"


Т.о. копируя в 'gamedata' нужный для упаковки контент и, указывая в конфиге нужные папки для упаковки, на выходе будут получаться файлы gamedata.pack_#0.

Остается переименовать типа в xpatch_03.db и положить в папку 'patches' установленной игры (CoP).
Marafonec
Цитата(aka_sektor @ 10.04.2019, 20:46) *
Вроде как в другом
Да нет, именно из-за компрессора вылет. Уровни то я не меняю и ничего с ними не делаю. Просто пакую.
xrModder
Ну вот я разобрался, короче для ТЧ пакуешь без ключа -ltx, а для ЧН и ЗП с ключом, но убираешь инклуды и экслуды и пакуешь папки отдельно. Зато не будет ошибок. Рекомендую xrCompress от av661194, благо там всё вместе, а не зоопарк глючных компрессоров от непонятно кого.
aka_sektor
xrModder, вообще, так если посмотреть, чистые xrCompress из SDK - никто не юзает.

Вот к примеру, давно проверенный паковщик для ТЧ от HIGHLANDER: https://www.gameru.net/forum/index.php?s=&a...t&p=1640206

А вот для ЧН/ЗП от Kontro-zzz: https://www.gameru.net/forum/index.php?s=&a...t&p=1411458


Поди разберись какой лучше, наверное только тестить.
RayTwitty
https://github.com/OGSR/OGSR-Engine/release..._x64_1.0.527.7z

OGSR Engine x64 Compressor
Код
OGSR Engine x64 Compressor

Запуск упаковки через батник вида:
xrCompress "gamedata" -ltx xrCompress_Cfg.ltx -unique_logs

Первый параметр - имя папки, содержимое которой надо упаковать.

Команды:
-ltx         : путь до файла конфигурации. Он важен, без него не запустится.
-xdb         : упаковка архивов в .xdb формат.
-fast        : быстрая упаковка, небольшое сжатие.
-store       : упаковка всех файлов без сжатия. Самый быстрый режим.
-max_size 50 : максимальный размер создаваемого архива в МБ. В данном примере - 50 мб. По умолчанию в компрессоре установлено ограничение ~1900 МБ.

Большие объёмы данных, естественно, разбиваются автоматически.

Настройки игнорируемых файлов и тд. находятся в xrCompress_Cfg.ltx

Отключено сжатие файлов *.geom, *.geomx, *.ogm и прочие нюансы учтены.


Архивы gamedata.db_pack_#0, gamedata.db_pack_#1, ... и тд. создадутся в папке "!Ready\"
Логи компрессора создадутся в папке "logs\"
Yara
Цитата(RayTwitty @ 11.04.2019, 04:39) *

Автор перенёс в xrCompress.exe обработку всех файлов с именем "build" (пропускаются, в т.ч build.lights). Начиная с чн, он присутствует в каждой папке с уровнем (наверное нужен, раз его разработчики оставили).

Чистые xrCompress из SDK, а также с этого поста пропускают файлы, что в shaders\r3\objects\r3 и r4 (они без расширения, пр. 2048__1__0_____0__________________0_10_0000_00), которые, тоже, наверное нужны.
xrModder
Цитата(aka_sektor @ 11.04.2019, 03:09) *
xrModder, вообще, так если посмотреть, чистые xrCompress из SDK - никто не юзает.

Не знаю как там с левыми компрессорами, лично пользуюсь компрессором от av661194, там и для всех частей и для билдов есть + полный контроль фильтруемых файлов.
ForserX
Как по мне: xrCompressor довольно неудобный в чистом виде.
* Не имеет доступный интерфейс
* Постоянная регистрация левых каталогов по $working_folder$/$target_folder$ в fsgame
* В целом имеет ряд проблем

Я потратил на него n-нное число времени и понял, что проще будет с ноля написать аналог, чем довести его до ума. ИМХО, конечно
aka_sektor
Наткнулся на такой пост: http://sigerous.ru/forum/322-208-390469-16-1311368042
Цитата
Урок 23 (автор tracker)
Задача: Упаковка файлов мода для ЧН или ЗП в db-архив.

->

Как вы наверное знаете, для ТЧ, эту операцию можно проделать с помощью конвертера от товарища Бардака, используемую также для распаковки игровых ресурсов, или с помощью программы DB Packer 1.0. А вот для ЧН и ЗП, как оказалось, по данному вопросу в сети информации нет, или я плохо искал. Но, вспомнив про map_compressor, который идет в составе SDK, и немного поэксперементировав, я написал данный урок. Постарался описать все как можно подробнее, если возникнут вопросы, обращайтесь в личку.

Итак, мы делаем мод, следовательно в директории игры у нас есть папка gamedata, со всеми нашими правленными файлами.

Кидаем в корень игры, рядом с папкой gamedata файлы map_compressor'а (BugTrap.dll, build_map.ltx, compress_map.cmd, xrCompress.exe, xrCore.dll).

Откроем файл build_map.ltx. Что нам в нем необходимо подправить:
Секция: options. Параметр exclude_exts - это расширения файлов которые игнорируются при упаковке. Например, если у вас в gamedata'е есть txt-файлы, с вашими заметками, то при упаковке они не попадут в архив (так сказать в чужие руки). Так же это очень удобно для разделения по нескольким архивам файлов одного типа.
Следующие секции: include_folders и exclude_folders. Это перечень всех папок, которые будут включенны в состав архива, и проигнорированны соответственно.
Например, запишем в первой из них textures = true, во второй textures\act = true. И в нашем архиве окажутся все текстуры из папки textures, кроме подпапки act, расположенной в ней.
Секция-загололовок: header - содержит служебную инфомацию.
Параметр entry_point желательно не изменять.
* Параметр auto_load, должен равняться true, иначе архив не будет читаться движком.

В ходе экпериментов оказалось, что файлы, расположенные непосредственно в папке gamedata (например particles.xr, shaders.xr и др.), незапаковываются. Решение таково - создадим в build_map.ltx, между секциями exclude_folders и header новую секцию include_files, и по аналогии пропишем в неё наши файлы:
Код
[include_files]                   particles.xr = true                  
shaders.xr = true


Теперь откроем файл compress_map.cmd и так же немного изменим его. Поменяем название папки for_levels на gamedata.

С приготовлениями все. Запускаем compress_map.cmd и ждем окончания процесса упаковки. Посмотреть результаты работы упаковщика можно в файле engine.log. Файлы компрессора нам более не нужны, и их можно удалить. Переименовываем полученный архив (он появится здесь же в корне игры), как нам понравится, например в mod.db, и... А куда же его лучше положить?

В результате экпериментов, я узнал что, чтение архивов происходит в том порядке, в каком это указанно в файле fsgame.ltx:
Код
$arch_dir_levels$       = false| false| $fs_root$|            levels\ $arch_dir_resources$    = false| false| $fs_root$|            resources\
$arch_dir_localization$ = false| false| $fs_root$|            localization\
$arch_dir_patches$      = false| true|  $fs_root$|            patches\


Поэтому, если мы в этот файл добавим еще одну строку, то создадим все условия для правильного порядка загрузки файлов мода. Вот эта строка:
Код
$arch_dir_mods$      = false| true|  $fs_root$|            mods\


Теперь осталось создать в корне игры папку mods, и поместить туда наш архив.
Вот собственно и все, можно запускать игру.

P.S. Все эксперименты делались на ЗП. Экспериментальный мод содержал: дополнительную локацию, новые текстуры, скрипты, модели, файлы анимации камеры, all.spawn, правленный gamemtl.xr. Ни каких проблемм обнаруженно не было.
Распаковка с помощью конвертера от Бардака показала полную идентичность исходной, подготовленной к упаковке gamedata'ы и распакованной.
Так же проведенна проверка на ЧН.
Zagolski
Цитата(Yara @ 11.04.2019, 07:06) *
Автор перенёс в xrCompress.exe обработку всех файлов с именем "build" (пропускаются, в т.ч build.lights). Начиная с чн, он присутствует в каждой папке с уровнем (наверное нужен, раз его разработчики оставили).

Кстати, да. Насчет build.lights. Ранее читал, что в нем освещение для травы записано (вроде где-то на вики). Но судя по коду оттуда читаются статичные источники света на локации. Если r2_allow_r1_lights в юзере активировать, эти источники как раз будут светить (бестеневые). Поправьте меня, если я не прав.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.