Анатомия игры: строение файловой системы на примере Elden ring и не только

в 9:20, , рубрики: Без рубрики
Анатомия игры: строение файловой системы на примере Elden ring и не только - 1

Добрый день, уважаемые читатели. С вами снова Людмила Хигерович. Но сегодня мы не будем говорить непосредственно о 3D-модельках и тонкостях моделирования. Вместо этого немного отвлечемся и познакомимся с устройством архивов одной из самых популярных игр этого года и номинанте на премию Game of the year — Elden Ring, а также сравним её строение с другими играми.

В этой статье будет рассматриваться только строение файловых систем и немного типы игровых архивов. Сами скрипты, программные вопросы функционирования и сжатие подробно рассматриваться не будут.

Примечание:

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

В тексте будет много упоминаний программ, сайтов и сервисов, а также игр и разработчиков игр. Не сочтите это за рекламу. 

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

Автор статьи настоятельно не рекомендует как-либо вмешиваться в структуру и работу файлов той или иной игры. Это может привести к сбоям в работе самой игры, срабатыванию систем типа античит и потере лицензии на использование и обслуживание игры.

▎Что такое игровой архив ?


Сейчас, заглянув внутрь папки с экзешником (исполняемым файлом запуска) почти любой игры, вы, скорее всего, увидите несколько dll-библиотек, деинсталлятор и пару подпапок с файлами странных и незнакомых расширений, например, dcx, bdt, pak, bsa и другие, причем размер их может варьировать от 500 Мб до нескольких десятков гигабайт. Это и есть архивы.

Зачем они вообще были придуманы? 

Если мы откроем какую-нибудь компьютерную игру 80-х годов выпуска (например, почти любую игру Super Mario Bros), то увидим либо только сам экзешник игры, либо экзешник и пару dll-файлов, либо экзешник, dll и папку с небольшим количеством спрайтов (небольших изображений героев, окружения, кнопок и предметов, использующихся как функциональные части игры) и иногда музыку.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 2
Некоторые современные игры в стиле ретро (как, например, Undertale) тоже минималистичны в плане внутренних файлов. Красным отмечены сами игровые файлы (и файл привязки к Steam), все остальное — музыка.

Такая простота связана с тем, что в первых видеоиграх практически не было каких-либо ресурсов. Все спрайты кодировались попиксельно непосредственно в экзешнике, позднее с усложнением дизайна уровней и анимаций персонажей понадобились изображения более высокой детализации и спрайты с вариантами реакций персонажей. Чем дальше развивался геймдизайн, тем более подробные изображения требовались, и тем большего размера спрайты помещались в директорию игры.

                    Анатомия игры: строение файловой системы на примере Elden ring и не только - 3

                    Анатомия игры: строение файловой системы на примере Elden ring и не только - 4
   Это не нативные (не родные) спрайты из игр Tekken и Pokemon, однако хорошо  демонстрируют разницу в качестве отрисовки (количестве кадров анимации, дополнительных цветах палитры, количестве пикселей в спрайте и т.п.).

Позднее появилось третье измерение, и проблема величины файлов становилась все значительнее. Первые трехмерные игры (Doom 1993, Wolfenstein 3D, первый The elder scrolls) с гибридной графикой (сочетание трехмерного окружения с двумерными спрайтами врагов и эффектов) уже занимали приличные для того времени 40 Мб на жестком диске (средняя емкость винчестера в то время составляла около 320 Мб, почти половину которых занимали компоненты системы и программные офисные пакеты).

Анатомия игры: строение файловой системы на примере Elden ring и не только - 5 
DooM 1993 года. Спрайты врагов, тел павших товарищей и предметов менялись динамически (подмена текстур как кадров в GIF-анимации), но всегда были повернуты одной стороной к игроку.

Чем дальше развивалась графика, тем объемнее становились игры. Вместо привычных, но не очень функциональных .bmp файлов картинок и .txt для скриптов придумывались более экономичные форматы (по сути, лишь немного измененные варианты привычных файлов без специальной шифровки).

Кроме того, появилась и проблема корпоративного воровства: разработчики, особенно мелкие и индивидуальные, часто брали готовый продукт более успешных коллег и, заменяя несколько текстур и десяток спрайтов, продавали его как свой. Особенно остро эта проблема встала в Японии в 80 — 90-е годы с массовым распространением приставок и игр к ним, а также более дешевых подделок под фирменные приставки и игры, недоступные для большинства потребителей.

Так появилась необходимость в запаковке игр — прятании больших внутренних файлов в сжатые и зашифрованные архивы.

▎Объем файла и его сжатие


Самая простая obj модель без костей (а формат не поддерживает кости) с двумя текстурами в формате jpeg (jpg) весит около 2-3 Мб при разрешении текстур в 1024х1024р. Формат fbx, содержащий риггинг, развесовку и четыре текстуры png, две из которых карты нормалей будет весить уже от 5 до 15 Мб в зависимости от размера текстур. 

Краткое отступление про размер изображений

PNG-текстуры обычно чуть пожирнее, чем JPEG. Несмотря на то, что JPEG намного меньше по размеру, методы кодирования пикселей у них немного различаются, из-за чего JPEG при сжатии может потерять качество и словно посыпаться. Кроме того, PNG поддерживает прозрачность (альфа-канал).

Текстуры Normalmap же весят еще больше, так как в сочетании синего, зеленого и красного цветов на картинке закодировано то, как свет внутри движка будет падать и преломляться на модельке.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 6
 Одна и та же цветовая текстура, сохраненная в разных форматах. Слева — PNG-файл (1,84 Мб), справа  — JPEG-файл. 

Среднестатистическая модель персонажа средней полигональности с риггингом и семью сетами текстур, каждый из которых содержит по 3 текстуры (диффузная карта, карта нормалей, карта отражений) весит от 20 до 70 Мб.

                           Анатомия игры: строение файловой системы на примере Elden ring и не только - 7
Один из моих рыцарей со всеми текстурами весит 52 Мб (fbx файл+10 сетов текстур diffuse/specular/normal/environment). Средний размер текстур 1800 — 2400р. Формат png и tga. Модель разделена по мешам — частям или объектам, имеющим собственный материал и сет текстур — голова, глаза, роговица, кираса, наручи, поножи/обувь, волосы, оружие.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 8
Другой из моих рыцарей весит 20 Мб (те же 10 сетов текстур + fbx+mesh). Средний размер текстур 500-800р. Формат текстур jpg.

Кто впервые додумался зашифровать архив игры в специфическом формате, доподлинно неизвестно. Скорее всего, пальма первенства в очередной раз оказалась у японцев. Doom 3 для сохранения места всего лишь немного поменяла Zip-архивы, которые все еще поддавались распаковке (почти) стандартными методами.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 9
Распаковка .pk4 файлов ПК-версии DooM 3: воскрешение зла. Распаковщик — обычный 7zip.

А вот модели, текстуры и анимации уже имели более специфический формат. Думовские модели сохранены в .md5mesh, формате, экспорт которого поддерживает только пакет Autodesk Maya (и несколько специальных скриптов импорта универсальных программ-конвертеров типа Noesis). Часть текстур внутри папок имеет формат .tga (весьма тяжелый файл до сжатия с поддержкой многослойности и многоканальности изображения), часть .dds.

DDS или DirectDraw Surface Image — специфический формат изображений, часто используемый в играх в качестве текстур и карт окружения. Для этого формата характерно сверхвысокое сжатие с сохранением детализации изображения и возможностью кодировать изображение «на лету», что обеспечивает как сохранение качества, так и скорость сохранения и чтения изображений. Хотя чтение dds-файлов все равно медленнее привычных jpeg-файлов.

Все варианты dds подразделяются на 4 типа кодирования:

  • DXT1 — диффузные (цветовые), зеркальные (specular) и карты высот (в т. ч. варианты displacements), без альфа-каналов;
  • DXT3 — диффузная, зеркальная и карта высот с альфа-каналами;
  • DXT5 — исключительно для карт нормалей, с альфа-каналами или без них;
  • DXT10 — весьма редко используемый формат, поддерживающий альфа-каналы и некоторые специфические каналы цвета, используемые в играх для дополнительного контроля над картами отражений и наложений эффектов без использования дополнительных карт (например, в Dark souls 3).

DDS-файлы не получится открыть простым средством просмотра фотографий. Для этого вам потребуется либо установить специальную dll-библиотеку в свою систему, либо использовать средства просмотра, имеющие скрипты и плагины для открытия dds-файлов (Irfanview, Xnview, GIMP, NVidia--плагины для Photoshop). Для открытия DXT5 и DXT10 dds и этого недостаточно — некоторые из них всегда будут выдавать ошибку открытия файлов или сообщение вроде «некорректный хэдер (заголовок) файла». Для справки — корректный заголовок файла dds в системе HEX — 4444 5320.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 10
Некоторые разработчики и вовсе создают свои собственные варианты компрессии изображений. Например, часть DDS-файлов из директории Neverwinter online не хотят открываться ни в одной программе.

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

▎Многоэтажная компрессия From software


Современные игры не обходятся без сжатия файлов. Сколько бы ни расширялся объем дискового пространства накопителей с развитием НТП, еще большими темпами растет требовательность к качеству текстур и моделек. За десять лет «прожорливость» игр по отношению к свободному месту на диске выросла с 5 Гб (средний вес базовой игры TES V Skyrim 2012 года) до 40 — 50 Гб.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 11
Elden Ring в базовом формате весит почти 47 Гб. И ОЗУ жрет столько, что мой компьютер отказывается с ним работать. Приходится мириться с облаком.

Чтобы сэкономить место на диске, некоторые разработчики используют многоэтажную компрессию. Проще говоря, запаковывают архив в архив, причем методы сжатия и форматы у этих архивов могут сильно разниться.

Первая игра от From software, с которой мне выдался шанс познакомиться, — это Dark Souls: Prepare to die edition. Я не буду расписывать тут, как перевернулся мой мир, но после относительно простого (в плане игрового процесса и устройства игровых архивов) Скайрима темный соус оставил неизгладимое впечатление и навсегда поженил меня с соулс-лайками. 
Впрочем, и в предыдущей игре (Demon’s Souls) Fromы уже использовали двойную и тройную архивацию: 

Анатомия игры: строение файловой системы на примере Elden ring и не только - 12
Некоторые частично распакованные файлы Demon's souls.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 13
Базовые архивы Dark souls PDTE (полная версия для ПК 2012 года). 

Компоненты архивации со времен демонических душ и на протяжении жизни темных душ не особо менялись. Самый последний уровень архивации — BDT архивы. Если честно, не знаю, как эта аббревиатура точно расшифровывается, вероятно, Binded data. Позднее будет понятно, почему нет третьего слова. BDT — непосредственно игровые архивы, содержащие модели, текстуры, анимации, карты, GUI и HUD (элементы интерфейса).

Анатомия игры: строение файловой системы на примере Elden ring и не только - 14
Файлы Elden ring. Обратите внимание на размер BDT и BHD архивов.

К BDT-файлам прилагается BHD-файл соответствующего имени — файл заголовков или Binded header (для первого Dark Souls — BHD5). В нем содержатся ключи шифрования BDT-архива и некоторые сведения о структуре зашифрованного архива. Без дескрипции BHD-файлов невозможно дешифровать и открыть BDT.

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

Какого-то четкого предпочтения по распределению контента по номерным архивам основной игры нет. В первом Dark Souls основная часть моделек и текстур содержалась в dvdbnd0.bdt.

                  Анатомия игры: строение файловой системы на примере Elden ring и не только - 15
                  Содержимое архива dvd bond0.bdt
                                      Dаrk souls PTDE

Dark Souls 2 SotFS разрабатывался немного иным составом команды, что отразилось и на организации архивов — вместо номерных безымянных архивов один большой архив GameDataEbl.bdt с двумя файлами кодировки (файл с заголовками и файл с ключом шифрования .pem) и множество мелких архивов с текстурами дополнительных вариантов разрешения и мелкими скриптами. Изменения в строении архивов сказались на восприятии игрой модификаций, и, по мнению некоторых, на работоспособности некоторых скриптов. Но я не настолько хороший кодер, чтобы точно это знать.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 16
                                Архивы Dark Souls II SotFS.

К разработке Dark Souls 3 уже вернулась та же команда, что работала над первым дарком. Вернулись и традиционные безымянные архивы с номерами.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 17
                                Архивы Dark Souls 3 с обоими DLC

В третьем дарке внутренности архивов были распределены между несколькими большими архивами. Data2 содержит папку Parts — оружие, части доспехов, тело, прически, глаза, брови/ресницы/бороды и базовое лицо, а также сеты NPC-людей (Сигварда, Орбека и др.). 

Анатомия игры: строение файловой системы на примере Elden ring и не только - 18
Содержимое архива Data3.bdt — chr-файлы (файлы с боссами и противниками).

В Data3 содержится папка Chr и архивы четырех основных типов — chrbnd, texbnd, anibnd, behbnd: 

  • CHRBND — binded-архив с моделью противника или босса, а также негуманоидных и уникальных NPC (например, Хранительницы огня). 
  • TEXBND — текстуры соответствующего противника, зашифрованные в еще один архив — TPF-файл. 
  • NIBND — скелет в формате HKX (формат пакета Havok) и набор анимаций для противника, иногда отличающийся не только по типу противника, но и по каждому варианту противника (в соответствии с номером и приличествующим вариантом ИИ). 
  • BEHBND — архив с дополнительными настройками анимаций и поведения противников.

Data4 прячет внутри себя объекты мира, с которыми игрок может взаимодействовать — рычаги, лифты, разрушаемые объекты, а также некоторые элементы окружения с физикой и скелетом (цепи, флаги, тела и т. п.). Data5 отведена под карты (сцены) окружения, архитектуру, фоны, LOD (малополигональные модельки находящихся вдалеке объектов) и почему-то звуков. Схожей архитектуры придерживались разработчики и в работе над другими проектами — Bloodborne, Sekiro и Elden ring.

▎Что внутри Древнего Кольца


Сравним файловую организацию TES V Skyrim от Bethesda и Elden Ring от From software.

Архивы беседки очень просто устроены. В папке с игрой вы найдете папку Data, а внутри — файлы Skyrim — Meshes.bsa, Skyrim — Textures.bsa, Skyrim — Interface.bsa и т.д., а также россыпь архивов и папочек в зависимости от того, какая версия игры или сборка у вас установлена (паки-наборы текстур высокого разрешения, дополнительные интерфейсы и т.п.).

Анатомия игры: строение файловой системы на примере Elden ring и не только - 19
                                Содержимое папки Data игры TES V Skyrim

Сами архивы имеют формат BSA — Bethesda softworks archive, и распаковываются инструментами, самой студией и разработанными специально для сборки и разборки собственной игры и создания модификаций (шутка про то, что беседка оставляет игру сразу на допиливание конечным пользователям). Архивы удобно подписаны, и внутри почти все подпапки также имеют имена, соответствующие содержимому: 

Анатомия игры: строение файловой системы на примере Elden ring и не только - 20
                                Содержимое архива Meshes.bsa

Все персонажи, противники и животные помещены в папку Actors, и также скрупулезно подписаны. Аналогичная структура и в архиве Textures.bsa, имена и расположение папок и конечных файлов аналогичны на 80%.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 21
Папка actors не защищена никакими дополнительными архивами.

Больше никаких архивов внутри архивов — подпапки содержат только конечные файлы: модели в формате nif, скелеты моделей и анимации (для архива с текстурами — текстуры и энвайронмент-карты в формате dds). 

Анатомия игры: строение файловой системы на примере Elden ring и не только - 22
Nif-файлы с моделями Скайрима можно просмотреть и незначительно отредактировать программой Nifskope

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

Теперь возьмем Elden Ring. В папке с игрой нас встречают уже знакомые BDT-архивы и их BHD-энкрипторы. Вместо имен — абстрактные числа (Data0, Data1, Data2, Data3). 

Анатомия игры: строение файловой системы на примере Elden ring и не только - 23
                                Внутри архива Data0 Elden Ring

DATA0.BDT

Data0 содержит много папочек с более-менее понятными названиями, в первую очередь, папку Parts — с одеждой и частями персонажей, включая героя игрока и NPC. Но не обольщайтесь — это последний раз, когда нам будет все понятно. Потому как внутри папки parts мы увидим картину, аналогичную картине внутренностей предыдущих игр фромов.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 24
Анатомия игры: строение файловой системы на примере Elden ring и не только - 25
Внутри архива DATA0.bdt папка Parts, в ней — архивы DCX, а в каждом архиве — еще один архив — PARTSBND.

Архивы dcx и partsbnd рассортированы в соответствии с содержимым: am_m_xxxx — модели обмундирования для рук (перчатки, обмотки, латные перчатки, браслеты и т. п.) мужских персонажей и сетов без различий по полу персонажа (я их называю — реалистичный доспех), am_f_xxxx — соответствующий номеру женский вариант. BD — маркировка для тела (рубашки, кирасы, кольчуги, куртки и т.п.), LG для ног до пояса (штаны, брюки, поножи, юбки, сапоги). 

HD — одеяния для головы (шлемы, капюшоны, маски, обручи, шляпы), но не сами головы. 
Концевая приписка _l в предыдущих играх обозначала вариант с меньшим разрешением, в Elden Ring при перепроверке оказалось, что разница в масштабе всего 20%, а в весе примерно 4 раза (в среднем 2,5 Мб против 600 Кб).

Анатомия игры: строение файловой системы на примере Elden ring и не только - 26
Чтобы добраться до модели брони и ее текстуры, надо продраться сквозь многоэтажные папки в папках. В конечной папке будет лежать модель в типично соуловском flver-формате, архив с дополнительной анимацией к скелету персонажа, файлы дополнительных костей с физикой и tpf-архив с текстурами. 

FC_F и FC_M — базовые лица для NPC и игрока, а также варианты текстур для маскирования (наложения цветовых масок). Лиц для каждого NPC в отдельности в этих архивах нет — как и в предыдущих играх, лицо, созданное вами в редакторе и лица персонажей хранятся в другом месте в формате .tri — файлах морфов (изменений геометрии лица).

  • FG_A — маркировка для дополнительных элементов лица (брови, ресницы, глаза, усы, борода и варианты текстуры к ним). 
  • HR_A — архивы с прическами и белой текстурой (редактор в игре накладывает цвет на белую текстуру отдельно).

Анатомия игры: строение файловой системы на примере Elden ring и не только - 27
                                Одна из причесок Elden ring

Стоит отметить, что каждый parts-файл имеет одну модель, но в каждой модели есть несколько вариантов меша (несколько похожих или дублирующих друг друга кусков модели) для разных режимов отображения. Причем это практически не зависит от выбранного вами типа телосложения персонажа (худой, мускулистый или полный). Каждый вариант нужен для сочетания всех частей обмундирования с другими: одни части прически скрываются под шапкой, другие — под капюшоном. Аналогично и для доспехов — пояс у штанов модели из папки LG виден, если герой ходит с голым торсом, но исчезает при надевании кирасы.
К слову, прически в Скайриме тоже имеют скрываемую часть меша для помещения под шапку, как и скрываемые рукава кирасы, хотя и не со всеми сетами они работают корректно.

DATA1.BDT

Data1 содержит папку Asset, в которой есть две директории: aeg и aet. В AEG расположены несколько многоуровневых папок, в самой последней из которых лежат архивы типа aegxxx_xxx.geombnd. AEGХХХ_ХХХ.geombnd — файлы интерактивной геометрии — двери, переключатели, объекты окружения с физикой (небольшие деревья, сталактиты, обломки зданий и т.п.), а также принадлежащие им скелеты и анимации.
AET-директория содержит tpf-архивы с текстурами с аналогичной иерархией папок. 

Анатомия игры: строение файловой системы на примере Elden ring и не только - 28
AEG001_315.geombnd содержит модельку тюремной двери. Некоторые модельки ссылаются не на свои текстуры, а на текстуры из другого архива.

DATA2.BDT

Этот архив содержит файлы окружения или карты локаций (map-файлы — архитектуру, лес, деревья, здания, руины), файлы разрушаемой геометрии (breakobj — горшки, доски, вазы, сухие корни и т. п.) и загрузочные листы (регулирующие файлы с именами NPC и врагов, которые должны быть загружены на локации).

Анатомия игры: строение файловой системы на примере Elden ring и не только - 29
                                Содержимое архива Data2.bdt

На скриншоте вы можете видеть много папочек с именами m10, m11, m34 и т.п. Это папки с наборами архивов по локациям 

  • m10 — замок Грозовой завесы и его придел (Часовня ожидания, место старта игры), 
  • m11 — столица Лейнделл и её засыпанный радиоактивным пеплом вариант, а также Круглый стол, 
  • m12 — все подземные локации ака Ночной Петербург (большие подземелья со своими кусками рисованной карты — Нокрон, Нокстелла, Глубокий корень, реки Ансель и Сиофра), 
  • m13 — летающий и рассыпающийся город Фарум Азула,
  • m14 — местный Хогвартс ака Академия Райи Лукарии (хотя мне ближе Архивы Герцога Сита), 
  • m15 — проклятое… ой, то есть, священное дерево Микеллы,
  • m16 — Вулканово поместье, m18 — Плавучее кладбище (тоже начальная локация), 
  • m19 — не уверена, но, вероятно, одно из мест встречи с финальным боссом, 
  • m30 — все рукотворные катакомбы,
  • m31 — некоторые природные пещеры,
  • m32 — некоторые шахты и туннели, соединяющие разные локации, 
  • m34 — сюжетно важные Дивные башни ака Священные рунные башни, 
  • m35 — Подземелье Отчуждения, 
  • m39 — усыпанный руинами обрыв (путь на плато Альтус), 
  • m60 — озерная Лиурния (Петербург днем), Лунный Алтарь, Замогилье, подъемник Дектуса, Вулкан Гельмир, плато Альтус, окрестности Лейнделла, подземелья окрестностей столицы, Звездные пустоши и Вершины великанов.

Пропуски в номерах вряд ли случайны — вероятно, разработчики оставляли пробелы для последующей доработки и добавления сцен или, наоборот, следы вырезанного контента. Да и сами архивы неравномерны — больше половины локаций сосредоточены в папке m60. Быть может, это следы самой первой версии игры, либо то, что, по мнению разрабов, точно должно было войти в игру. В последнем патче добавили еще и упоминание таинственного набора карт m40, вокруг которого появилось много спекуляций на тему грядущего DLC, но пока не добавили сами карты с таким номером.

DATA3.BDT

Главное, что есть в этом архиве — папка CHR с моделями и анимациями боссов, минибоссов, рядовых противников и NPC с уникальными модельками (Мелина, Ренни, Бок).

Анатомия игры: строение файловой системы на примере Elden ring и не только - 30
Частично распакованные файлы в папке CHR

Аналогично Dark Souls 3, внутри папки CHR расположены пронумерованные DCX-архивы, содержащие соответствующие архивы с моделями (chrbnd), текстурами (texbnd, у некоторых моделей в двух дополнительных вариантах — h-высоком и l-низком разрешении), файлами поведения (behbnd), анимациями и скелетами (anibnd). Как вы могли заметить, все файлы категории CHR помечены буквой C в начале. Это тоже давняя традиция фромов, идущая еще с Demon’s souls.

Некоторые архивы отличаются только последней цифрой в номере — таким образом, архивы с противниками группируются в варианты, использующие одни и те же базовые настройки, но отличающиеся какими-либо деталями: вариантами оружия, вариантами текстур и габитуса (общего внешнего вида), количеством здоровья, наличием дополнительной атаки или эффекта и т. п. 

Анатомия игры: строение файловой системы на примере Elden ring и не только - 31
                                Драконица Лансеакс без текстур

Например, c451x — код архивов с четырехкрылыми каменными драконами. С4510 — встречающаяся несколько раз на протяжении игры драконица Лансеакс и ее уменьшенная копия-рядовой враг в Фарум Азула. C4510_div — архивы с дополнительными анимациями для различных локаций и этапов игры.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 32
Бедолага Фортисакс, зараженный проклятыми корнями. В игре его белая каменная шкура почернела от проклятия.

C4511 — брат Лансеакс, дракон-лич Фортисакс. Скелет и большая часть анимаций у них общая, кроме пары спец-атак, хотя сами модельки и их текстуры различаются. Но не все архивы боссов подвержены данному правилу. Так, c2120 Маления в одной модельке содержит меши обеих своих стадий как босса.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 33
«Я — Маления, Клинок Микеллы. И я не знала поражений»
Фраза, вызывающая травматические флешбеки у каждого второго из тех, кто до нее дошел. Но не у меня.

Еще один вариант архивов, отличающихся одной конечной цифрой — модельки для общего геймплея и катсцены (заставки), либо для различных стадий босса. Так, c2190 — Радагон, с2191 — Марика из катсцены.  Кроме того, некоторые архивы дублируются. Так, для Мелины и Малении существуют дополнительные архивы с маркером с80ХХ (маркер, обычно используемый для сюжетных NPC и иногда — фантомов-помощников). С8900 — версия Малении для катсцен, тоже содержит две модельки разных стадий в одной, но без лепестков.

С2180 — моделька Мелины для геймплея и призыва ее в качестве фантома.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 34
Все модельки в данном вьювере отражены справа налево. Такая особенность конвертации.

С8906 — версия Мелины, не задействованная в геймплее, ее можно увидеть только в одной из концовочных катсцен.

Анатомия игры: строение файловой системы на примере Elden ring и не только - 35
Растрепанные волосы и побледневшая кожа прилагались.

▎Итого

Шутки про то, что японцы вечно любят все усложнять и придумывать неочевидные препоны, не родилась на пустом месте. Анатомия игр вроде Elden Ring тому подтверждение. Где это видано — четыре уровня архивации, вложенные один в другой словно матрешка (или дарума?). 

Впрочем, не только фромы этим грешат — NetEase, создатели мобильной игры Onmyoji arena пошли по тому же пути, запаковав свои ресурсы в трехэтажный архив, в структуре которого без ста грамм разобраться очень сложно. Да и никакого намека даже на математический порядок, как у фромов, у NetEase нет — каждый персонаж, каждый объект на сцене получает новый номер при добавлении чего-либо в архив. Это вызывает некоторые проблемы при скачивании и установке обновлений, ведь требуется не просто добавить пару файлов и заменить один архив — вам как пользователю придется заново скачать и переустановить ВСЕ огромные архивы (а пять с лишним гигабайт для телефона — не такое уж маленькое пространство, если вы, конечно, не мажор и не бездельник. Да и с интернетом у нас не по всей стране все ок).

Анатомия игры: строение файловой системы на примере Elden ring и не только - 36
Каждый раз номера перегруппировываются, так как новые варианты (скины) персонажей «присоседиваются» к уже существующему файлу предыдущего скина, сдвигая число последующих файлов.

И, конечно, мододелы Скайрима (а каждый сумевший удачно закинуть архив с модом в корень игры считает себя почти что мододелом) при виде архивов Elden Ring и её сородичей приходит в тихий ужас. А познакомившись с процессом подключения мода (даже не создания), теряет волю к жизни, словно игровой журналист после первого соулсборновского босса.

Пускай эта статья может показаться не очень содержательной, но краткое знакомство с устройством файлов Elden Ring и игр From software очень сильно пригодится для экономии места в следующей статье. А следующая статья будет целиком и полностью посвящена модификациям уже изученных файлов и проблемам, с этими файлами связанным. Более того, большая часть этих самых проблем связана, в первую очередь, именно с устройством игровых архивов.

▎А на сегодня все. Всего хорошего и не болейте!


НЛО прилетело и оставило здесь промокод для читателей нашего блога:
15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS

Автор: =Фанеро|Строй=

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js