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 II — DOOM2.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 →