Распаковка игровых ресурсов

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

Основные сведения[править | править код]

Все игровые файлы в большинстве сборок запакованы в базы данных в виде файлов-архивов. За время существования игр серии «Сталкер» всего было четыре основных вида таких архивов:

  1. Файл с именем data.xrp или gamedata.xrp. Формат ранних сборок — до 1465 включительно.
  2. Файл (или несколько файлов) с именем вида gamedata.xp* (* — это число от 0 до 9). Формат для большинства сборок.
  3. Файл (или несколько файлов) с именем вида gamedata.db*. Формат для поздних предфинальных сборок и финальной игры. В случае финальной версии игры и предфинальной мультиплеерной сборки, формат был немного изменён и получил две разновидности - для русской и для международной версий.
  4. Файл (или несколько файлов) с расширением вида %имя_файла%.db*, реже %имя_файла%.xdb*. Формат для ресурсов модификаций (размещённых в папке mods/), а также ресурсов финальных версий Чистого Неба и Зова Припяти, в сборках не встречается.

Для работы с игровыми базами данных существует множество утилит, написанных фанатами игры. Наибольшую известность получил т.н. «конвертер Бардака», написанный программистом bardak. И эта известность, в первую очередь, связана с универсальностью утилиты. При помощи «конвертера» можно распаковывать все существующие форматы и запаковывать в форматы финальных версий игры (в т.ч. поздних сборок ТЧ). Кроме того, исходный код «конвертера« открыт, и любой желающий, при наличии хороших знаний C++, может использовать его по своему усмотрению.

Однако, у сей замечательной утилиты есть и недостатки. Во-первых, «конвертер» — это чисто консольная утилита, и с обработкой файлов большого размера (свыше, приблизительно, 1,8 Гб), могут возникнуть проблемы. Имеющийся любительский графический интерфейс положения не спасает, и корректно работает только с .xdb–форматом. Во-вторых, можно запаковывать только в форматы пре-бета и бета сборок. То есть для всех сборок с номерами до 2232, есть возможность только распаковки архивов. Впрочем, как уже было указано, исходный код открыт, и вышеупомянутые недостатки можно исправить.

Работа с утилитой Бардака[править | править код]

Последнюю версию можно скачать по прямой ссылке здесь, последнюю версию пака утилит (конвертер входит в его состав), можно скачать по прямой ссылке здесь.

Исходный код можно скачать по прямой ссылке здесь.

По сути, «конвертер» представляет собой многофункциональную утилиту для работы с файлами игры. Среди его функций есть такие специфические, как извлечение из трёхмерных моделей составных частей (анимация, скелет). Но в нашем случае, мы рассмотрим только одну возможность - работа с файлами баз данных.

Конвертер представляет собой консольное приложение, и работа с ним осуществляется через «батники».

Ниже представлено содержимое батников для распаковки и запаковки.

Распаковка

converter.exe -unpack %имя_файла_БД% -%ключ% -dir %имя_папки_назначения%[1] 

Запаковка (для -2947ww, -2947ru, -xdb)

converter.exe -pack %имя_папки% -%ключ% -out %имя_файла_БД_назначения% 

Ключи[править | править код]

Ключи — это специальные указатели, поясняющие «конвертеру», с каким форматом сейчас предстоит работа. Ниже приведены все необходимые для работы с базами данных ключи.

-11xx 

Предназначен для формата архивов ранних версий игры. Обычно это один файл с именем data (до 1230 сборки) или gamedata (с 1230 до 1465) и расширением .xrp. Доступна только распаковка.

-2215 

Предназначен для распаковки архивов большинства сборок (с номерами от 1469 и до 2232). Обычно это один или несколько файлов с расширениями вида .xp* (* — это число от 0 до 9). Доступна только распаковка.

-2945 

Предназначен для распаковки архивов поздних сборок игры (с номерами от 2307), включая предрелизные мультиплеерные сборки (кроме 2947). Обычно это несколько файлов с расширениями вида .db*.

-2947ru 

Предназначен для распаковки архивов русской версии финальной игры. Десять архивов с именем gamedata и расширениями от .db0 до .db9, четыре архива патчей .dba, .dbb, .dbc, .dbd и один архив украинской локализации .dbu.

-2947ww 

Предназначен для распаковки архивов международной версии финальной игры, а также для распаковки официальной MP–сборки с номером 2947 и сборки Чистого Неба под номером 3120.

-xdb 

Предназначен для распаковки архивов игр Чистое Небо и Зов Припяти.

-3120 

Этот ключ был в самой первой версии конвертера; предназначается для 3120 сборки. По-сути, он аналогичен ключу -2947ww.

Также для «конвертера» существует графический интерфейс пользователя, но с какой из версий утилиты он работает нормально, до сих пор непонятно — везде происходила корректная распаковка только для .xdb - формата.

Работа с утилитой от GSC[править | править код]

Утилита для работы с архивами от GSC присутствует в большинстве сборок — это xrCompress.exe. Формат, с которым утилита работает, определяется версией сборки, в составе которой она присутствовала.

Запаковка осуществлятся переносом необходимой папки методом Drag'n'Drop на xrCompress.exe. Также имеется вариант запаковки с помощью командной строки:

xrCompress.exe %имя_папки%

При этом существует такая особенность, что если путь задан как C:\folder\ то выходной файл будет в папке folder, а если путь задан как C:\folder то выходной файл будет в корне диска C:\.

Ключи запаковки

  • -fast - быстрая запаковка (меньше сжатие, но быстрее)
  • -store - запаковка без сжатия (оптимально для тех ресурсов, которые сжатию поддаются очень плохо - текстуры, звуки, видео)

Распаковка есть, но как её осуществить — не ясно. Есть предположение, что в поздних версиях утилиты такая возможность вообще была убрана.

Создание различий Таинственный ключ -diff, с помощью которого, как предполагалось, осуществляется распаковка, на самом деле предназначен для создания различий между ресурсами, для получения патча.

xrCompress.exe -diff %имя_папки_с_изменёнными_ресурсами% %имя_папки_с_оригинальными_ресурсами% -out %имя_папки_для_результата%

Обратите внимание, в результате работы НЕ создаётся архив.

Пример использования. На ТЧ портирована некая локация из ЧН. Вместе с ней вытащены все используемые локацией текстуры и звуки. Но некоторые уже существуют в ресурсах ТЧ и только занимают место. С помощью данного режима, их можно отфильтровать.

Ключи создания различий

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

Также по проблеме есть сообщение с форума GM.

Вообще, утилита достаточно мало изучена. Есть сведения, подтверждающие то, что для неё существует большое количество ключей запуска. И вышеприведённое сообщение это подтверждает. Кроме того, версии утилиты из разных сборок различаются, иногда довольно значительно. Мододелы этот инструмент практически не используют, а применяется он в основном лишь теми, кто работает со старыми сборками, и только для запаковки игровых файлов.

Примечание. Есть xcompress 108 кб - он только запаковывает, 112( + xcore 2215 билд) распаковывает создавая разницу между пустой папкой gamedata (должна быть или выдаст ошибку), 396 кб - пока не изучено ВНИМАНИЕ при запаковке пропускает *old txt tga smf и еще не успел прочитать какие конвертер бардака по ссылке в xray_re-converter-rev6447-20110116.rar запустить не удалось, работает converter_25aug2008.7z

Другие инструменты[править | править код]

Также существуют другие программы для работы с игровыми ресурсами.

S.T.A.L.K.E.R. Universal Extractor[править | править код]

Программа с графическим интерфейсом, предназначена для распаковки всех трёх игр и 15 сборок. Последнюю версию можно скачать на этой странице.

Примечания[править | править код]

  1. ^ По умолчанию gamedata. Указывать необязательно.

См. также[править | править код]