Открыть сервис

WAD-файлы

WAD-файл (от англ. Where’s All the Data? — «Где все данные?») — это формат файла-контейнера, используемый в компьютерных играх для хранения игровых ресурсов: текстур, звуков, музыки, карт уровней, спрайтов и других данных. Формат получил широкое распространение благодаря серии игр Doom и Doom II, разработанных компанией id Software, и стал основой для моддинга этих игр. WAD-файлы представляют собой архив, в котором ресурсы организованы в виде «лумпов» (lumps) — отдельных блоков данных, каждый из которых имеет уникальное имя и может быть извлечён или заменён.

История

Формат WAD был разработан в 1993 году программистом Джоном Кармаком для игры Doom. Изначально он предназначался для упрощения распространения и обновления игровых данных: вместо множества отдельных файлов все ресурсы упаковывались в один или несколько WAD-файлов. Это также позволяло игрокам создавать собственные уровни и модификации, заменяя или добавляя лумпы в существующие WAD-файлы. Первая версия формата использовалась в Doom (1993) и Doom II: Hell on Earth (1994), а затем была адаптирована для других игр на движке id Tech 1, таких как Heretic (1994), Hexen: Beyond Heretic (1995) и Strife: Quest for the Sigil (1996).

В 1994 году, после выхода Doom II, id Software выпустила официальную спецификацию формата WAD, что способствовало развитию сообщества моддеров. В 1996 году с выходом Quake компания перешла на формат PAK, но WAD остался популярным для старых игр и их производных. В 2000-х годах формат был расширен в рамках порта ZDoom, который добавил поддержку сжатия и новых типов лумпов.

Структура WAD-файла

WAD-файл состоит из трёх основных частей: заголовка, каталога (директории) и данных (лумпов). Все данные хранятся в формате little-endian, что характерно для архитектуры x86.

Заголовок

Заголовок занимает 12 байт и содержит:

  • Идентификатор (4 байта): строка «IWAD» (для основного игрового файла) или «PWAD» (для дополнительного патча-модификации). В редких случаях встречается «WAD2» или «WAD3» для игр на движке Quake.
  • Количество лумпов (4 байта): целое число без знака, указывающее общее число записей в каталоге.
  • Смещение каталога (4 байта): указатель на начало каталога в файле (в байтах от начала).

Каталог

Каталог представляет собой массив записей, каждая из которых занимает 16 байт:

  • Смещение лумпы (4 байта): позиция начала данных лумпы в файле.
  • Размер лумпы (4 байта): длина данных в байтах.
  • Имя лумпы (8 байт): строка в кодировке ASCII, ограниченная 8 символами. Если имя короче, оно дополняется нулевыми байтами. Имена могут содержать буквы, цифры и символ подчёркивания, но не должны содержать пробелов.

Лумпы

Лумпы — это непосредственно данные, которые могут быть текстурами (в формате Doom Graphics), картами уровней (в виде сегментов, вершин и линий), звуками (в формате DMX или WAV), музыкой (в формате MIDI) или скриптами (например, для языка ACS в ZDoom). Порядок лумпов в файле не обязательно соответствует порядку в каталоге, но для корректной работы игры они должны быть расположены в определённой последовательности, особенно для карт уровней.

Типы WAD-файлов

Различают два основных типа WAD-файлов:

IWAD (Internal WAD)

IWAD — это основной файл игры, содержащий все ресурсы, необходимые для запуска. Например, в Doom это файл DOOM.WAD, а в Doom IIDOOM2.WAD. IWAD включает в себя текстуры, спрайты, звуки, музыку, а также все карты уровней. Идентификатор в заголовке — «IWAD». Игровой движок требует наличия хотя бы одного IWAD для работы.

PWAD (Patch WAD)

PWAD — это дополнительный файл, который содержит только изменённые или новые ресурсы. Он загружается поверх IWAD и заменяет лумпы с теми же именами. PWAD широко используются для модификаций (модов), позволяя добавлять новые уровни, оружие, монстров или текстуры без изменения исходного IWAD. Идентификатор — «PWAD». Примеры популярных PWAD-модов: Doom: The Plutonia Experiment (1996) и Doom: TNT: Evilution (1996), которые были выпущены как официальные дополнения.

Применение

WAD-файлы применяются в основном в играх на движке id Tech 1 и его производных. Основные области использования:

  • Хранение игровых ресурсов: все текстуры, звуки, музыка, спрайты и карты уровней упаковываются в один или несколько WAD-файлов, что упрощает распространение и загрузку.
  • Моддинг: сообщество игроков создаёт собственные WAD-файлы (обычно PWAD) для добавления новых уровней, оружия, врагов или изменения игровой механики. Существуют тысячи пользовательских WAD-файлов, доступных на сайтах вроде Doomworld и idgames.
  • Портирование: современные порты Doom, такие как GZDoom, ZDoom, PrBoom+, Crispy Doom и Chocolate Doom, поддерживают WAD-файлы и расширяют их функциональность, добавляя поддержку сжатия, скриптов и новых форматов данных (например, PNG для текстур, OGG для музыки).
  • Обратная совместимость: WAD-файлы используются в эмуляторах и ретро-играх для воспроизведения оригинального контента.

Расширения и модификации формата

Со временем формат WAD был расширен для поддержки новых возможностей:

  • ZDoom WAD: в порте ZDoom (и его форке GZDoom) добавлена поддержка сжатых WAD-файлов (с использованием алгоритма LZMA или ZIP), а также новых типов лумпов, таких как TEXTURES (для определения текстур), SNDINFO (для звуковых эффектов) и DECORATE (для определения объектов и оружия).
  • PK3 и PK7: в GZDoom и ZDoom вместо WAD можно использовать архивы форматов ZIP (с расширением .pk3) или 7z (с расширением .pk7), которые поддерживают иерархическую структуру папок и сжатие. Однако WAD остаётся основным форматом для старых модов.
  • WAD2 и WAD3: эти форматы использовались в играх Quake (1996) и Quake II (1997) соответственно. Они отличаются от классического WAD поддержкой 32-битных цветов и других типов данных, но несовместимы с оригинальным Doom.

Инструменты для работы с WAD-файлами

Для создания, редактирования и извлечения WAD-файлов существует множество утилит:

  • SLADE — кроссплатформенный редактор, поддерживающий WAD, PK3 и другие форматы. Позволяет просматривать, редактировать и создавать лумпы, а также работать с текстурами, картами и скриптами.
  • Doom Builder — редактор карт уровней, который сохраняет результаты в WAD-файлы.
  • WadAuthor — один из первых редакторов для Doom, выпущенный в 1994 году.
  • DeuTex и WadTool — консольные утилиты для извлечения и замены ресурсов в WAD-файлах.

Критика и ограничения

Формат WAD имеет ряд недостатков, которые стали заметны с развитием игровой индустрии:

  • Ограничение на длину имён лумпов: 8 символов (в оригинальном формате) затрудняет организацию ресурсов, особенно в крупных модах.
  • Отсутствие сжатия: оригинальные WAD-файлы не поддерживают сжатие, что приводит к большому размеру файлов (например, IWAD Doom II занимает около 14 МБ, что для 1994 года было значительным, но для современных стандартов — мало).
  • Линейная структура: все лумпы хранятся в одном плоском списке, без поддержки папок или иерархии, что усложняет навигацию.
  • Неэффективность для больших проектов: при большом количестве ресурсов каталог становится громоздким, а поиск нужного лумпы — медленным.

Тем не менее, благодаря простоте и широкой поддержке, WAD остаётся популярным в сообществе любителей ретро-игр и моддинга.

Интересные факты

  • Название «WAD» было придумано программистом Джоном Ромеро как шутка: «Where’s All the Data?» — фраза, которую он якобы часто слышал от коллег при поиске файлов.
  • В Doom и Doom II IWAD-файлы содержат «секретные» лумпы, например, ENDOOM — текстовый экран, который отображается при выходе из игры в MS-DOS.
  • Существуют WAD-файлы, созданные для неигровых целей, например, для демонстрации графических эффектов или как арт-проекты.

Источники

  • id Software. Doom Specs 1.9 (1994) — официальная спецификация формата WAD.
  • Fabian Greffrath. The Unofficial Doom Specs (2005) — расширенное описание формата.
  • ZDoom Wiki. WAD — документация по формату и его расширениям.
  • Doomworld Forums — обсуждения и примеры модов.
  • John Romero. Doom Guy: Life in First Person (2023) — автобиография, содержащая упоминания о разработке WAD.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →