Wadim P
- 1 year ago
- 0
- 0
.WAD (по утверждению id Software, происходит от англ. W here’s A ll the D ata ; ) — архивный формат файлов , который использовался в компьютерных играх , основанных на движке Doom : Doom , Doom 2 , Final Doom: The Plutonia Experiment , Final Doom: Evilution , Heretic , Hexen и некоторых других, для хранения игровых ресурсов ( текстур , музыки, звуков и других). Формат ресурсов, помещаемых в такой файл, может подразумевать сжатие. Сам формат не предоставляет возможности сжатия, хотя по своей структуре допускает возможность создания нескольких ссылок в заголовке на один фактический ресурс, что позволяет избежать дублирования ресурса, целиком сводящегося к полному или частичному повторению другого ресурса. В силу экзотичности такой ситуации случаи практического использования этой возможности неизвестны.
Ресурсы хранятся в именованных блоках ( англ. lump ), имена, размеры и местоположение в файле которых хранится в каталоге — таблице размещения ресурсов, располагающемся, как правило, в конце файла, хотя каталог может располагаться где угодно.
Каталог состоит из 16- байтовых записей, либо описывающих блоки данных, либо являющихся маркерами. Каждая запись состоит из трёх полей: 4-байтовое смещение начала блока относительно начала файла, 4-байтовая длина блока (для маркера поле равно нулю) и восьмисимвольное имя (см. Стандарт 8.3 ) блока, дополняемое нулями до 8 байт.
.WAD
-файл имеет 12-байтовый заголовок, состоящий из трёх 4-байтовых частей: сигнатура, число записей каталога и смещение начала каталога относительно начала файла.
Сигнатура обычно бывает двух типов (для игр, использующих движок Doom и производные):
IWAD
— основной файл игровых ресурсов (
англ.
I
nternal
WAD
— «внутренний
WAD
»).
PWAD
— подключаемый файл (
англ.
P
atch
WAD
— «заплаточный
WAD
»).
Существуют также другие сигнатуры, в частности
WAD2
, используемый в игре
Quake
. Такие файлы, как правило, имеют другой (расширенный) формат каталога.
Маркеры используются для отметки группы блоков, которые игровой движок считает идущими в строго определённой последовательности. К примеру, данные уровня
начинаются маркером
ExMy
для
DOOM
и
Heretic
,
x
— номер эпизода,
y
— номер уровня, либо
MAPxx
для
DOOM 2
и
Hexen
,
xx
— номер уровня. Теоретически, имя блока может быть любым, допустимым в
имени файла
файловой системы
FAT
. Затем идут блоки данных уровня в строго определённой последовательности:
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
, была разработана другая технология хранения игровых ресурсов, основанная на совместном использовании
файловой системы
операционной системы и полноценных архивных файлов, содержащих срез файловой системы. При поиске ресурса файл сначала ищется в файловой системе в определённых
каталогах
; если он не находится, то начинается просмотр списка архивов. Таким образом, модификация игрового ресурса становится максимально простой: нужно просто положить нужный файл в нужное место на диске. А архивы позволяют не засорять папки файловой системы множеством мелких файлов.
Quake
также использует и
.WAD
-файлы: текстуры хранятся в файле
gfx.wad
, который, в свою очередь, упакован в архив
pak0.pak
.
Данная технология используется и поныне во многих современных играх, не только от id Software . Так, например, файлы .WAD "перекочевали" в такие игры как Quake или Counter-Strike .