- WAD
-
WAD
WAD (происходит от «Where’s all the data»; слово wad также имеет самостоятельное значение — «ком») — архивный формат файлов, который использовался в компьютерных играх для хранения игровых ресурсов: текстур, музыки, звуков. Использовался в играх, основанных на движке Doom: Doom, Doom II, Final Doom: The Plutonia Experiment, Final Doom: Evilution, Heretic, Hexen и некоторых других. Формат ресурсов, помещаемых в WAD, может подразумевать сжатие. Сам WAD не предоставляет возможности сжатия, хотя по своей структуре допускает возможность создания нескольких ссылок в заголовке на один фактический ресурс, что позволяет избежать дублирования ресурса, целиком сводящегося к полному или частичному повторению другого ресурса. В силу экзотичности такой ситуации случаи практического использования этой возможности неизвестны.
Содержание
Описание формата
Ресурсы хранятся в именованых блоках (англ. lump), имена, размеры и местоположение в файле которых хранится в специальном каталоге, располагающемся, как правило, в конце файла, хотя, по идее, каталог может располагаться где угодно.
WAD-файл имеет 12-байтовый заголовок, состоящий из трех 4-байтовых частей: сигнатура, число записей каталога и смещение начала каталога относительно начала файла.
Сигнатура обычно бывает двух типов (для игр, использующих движок Doom и производные):
- IWAD - основной файл игровых ресурсов (Internal WAD).
- PWAD - подключаймый файл (Patch WAD).
Существуют также другие сигнатуры, в частности WAD2, используемый в игре Quake. Такие файлы, как правило, имеют другой (расширенный) формат каталога.
Каталог состоит из 16-байтовых записей, либо описывающих блоки данных, либо являющихся маркерами. Каждая запись состоит из трех полей: 4-байтовое смещение начала блока относительно начала файла, 4-байтовая длина блока (для маркера поле равно нулю) и восьмисимвольное имя блока, дополняемое нулями до 8 байт.
Маркеры используются для отметки группы блоков, которые игровой движок считает идущими в строго определенной последовательности. К примеру, данные уровня начинаются маркером ExMy (для DOOM и Heretic, x - номер эпизода, y - номер уровня ) либо MAPxx (для DOOM II и Hexen, xx - номер уровня). Затем идут блоки данных уровня в строго определенной последовательности: THINGS, LINEDEFS, SIDEDEFS, VERTEXES, SEGS, SSECTORS, NODES, SECTORS, REJECT, BLOCKMAP. В Hexen также присутствует блок BEHAVIOR, содержащий скрипты.
Когда подключаются PWAD-файлы, игровой движок помещает их каталоги в начало списка, так, что при поиске содержащиеся в них блоки будут обнаружены первыми. Таким образом, не меняя основного файла можно заменить практически любой игровой ресурс (карты, спрайты, текстуры).
Ограничения оригинального движка
Тем не менее, в оригинальном движке существует проблема, как раз связанная с использованием маркеров: все спрайты и текстуры полов и потолков должны располагаться между специальными маркерами: S_START и S_END для спрайтов и F_START и F_END для текстур полов и потолков. И-за чего требуется помещение всех блоков вместе с маркерами из IWAD-файла в PWAD-файл, что сказывается не только на удобстве использования, но и на проблеме в распространении (оригинальная игровая графика, как правило, защищена копирайтом). Для устранения этой проблемы существуют специальные программы, создающие нужные PWAD-файлы уже у конечного пользователя, обладающего IWAD-файлом. В современных портах эти ограничения устранены.
Дальнейшее развитие идеи
В более поздних играх от id Software, начиная с Quake[1]. была разработана другая технология хранения игровых ресурсов, основанная на совместном использовании файловой системы ОС и полноценных архивных файлов, содержащих срез файловой системы. При поиске ресурса файл сначала ищется в файловой системе в определенных каталогах; если не обнаружен, начинается просмотр списка архивов. Таким образом, модификация игрового ресурса становится максимально простой: нужно просто положить нужный файл в нужное место. А архивы позволяют не засорять каталоги ФС множеством мелких файлов.
Данная технология используется и поныне во многих современных играх не только от id.
Ссылки
Примечания
- ↑ Примечательно, что Quake также использует и WAD-файлы: текстуры хранятся в файле gfx.wad, который, в свою очередь, упакован в архив pak0.pak.
Wikimedia Foundation. 2010.