Ativa o menu
Alternar menu de preferências
Alternar menu pessoal
Não autenticado(a)
Your IP address will be publicly visible if you make any edits.

WAD (acrônimo de “Where’s All the Data?”) é o formato de arquivo usado por Doom e por todos os jogos baseados na engine Doom para armazenar dados. Um arquivo WAD consiste em um cabeçalho, um diretório e os dados que compõem os recursos armazenados no arquivo. WADs podem ser IWADs ou PWADs.

Cabeçalho

Um arquivo WAD sempre começa com um cabeçalho de 12 bytes. Ele contém três valores:

Bytes Conteúdo
0x00–0x03 String ASCII “PWAD” ou “IWAD”, define se o WAD é um PWAD ou um IWAD
0x04–0x07 Um inteiro que especifica o número de entradas no diretório
0x08–0x0b Um inteiro que contém um ponteiro para a localização do diretório

Todos os inteiros têm 4 bytes e usam x86 little-endian. Seus valores nunca podem exceder 231−1, pois Doom os lê como inteiros com sinal.

Diretório

O diretório associa nomes de lumps aos dados correspondentes. Ele consiste em várias entradas, cada uma com 16 bytes. O tamanho do diretório é determinado pelo número informado no cabeçalho do WAD. A estrutura de cada entrada é a seguinte:

Bytes Conteúdo
0x00–0x03 Um inteiro com um ponteiro para o início dos dados do lump no arquivo
0x04–0x07 Um inteiro representando o tamanho do lump em bytes
0x08–0x0f String ASCII definindo o nome do lump. Apenas os caracteres A–Z (maiúsculos), 0–9 e []-_ devem ser usados nos nomes de lumps (há uma exceção para alguns sprites de ArchVile, que usam “\”). A string deve ser terminada em nulo se tiver menos de 8 bytes.

Ordem dos lumps

Para muitos lumps, a posição no WAD não é relevante, embora existam diretrizes para facilitar a leitura por outras pessoas. Para alguns lumps, no entanto, a posição é crucial.

Lumps de dados de mapa

Veja também map format — as informações abaixo estão desatualizadas e não cobrem UDMF, USDF ou ZSDF

Predefinição:Cleanup Um mapa em Doom é composto por vários lumps, cada um contendo dados específicos necessários para construir e executar o mapa. O primeiro lump fornece o nome interno do mapa. Em Doom, ele precisava estar no formato ExMy ou MAPxx, onde x e y não podiam exceder 4 e 9 respectivamente (Ultimate Doom), e xx não podia exceder 32 (Doom II/Final Doom). No ZDoom, essa limitação foi removida, e nomes de mapa podem ser qualquer nome de lump válido. Assim, E6M1, MAP1025 e JUNKYARD são nomes válidos. Além de definir o nome, o lump costuma ser vazio, mas pode conter dados. O nome do nível marca o início do mapa. Para funcionar corretamente, os seguintes lumps devem vir imediatamente após o nome do nível:

  • THINGS: Lista todos os Things do mapa, com coordenadas X, Y e Z, ângulos iniciais, tipo, flags, special e args. Essa lista é gerada pelo editor de mapas e geralmente não deve ser alterada. Nota: o formato Doom padrão não contém Z nem args.
  • LINEDEFS: Lista de linedefs, definidos por vértices inicial e final, flags, tipo, tag, args e sidedefs frontal e traseiro (se houver). Nota: o formato Doom padrão não contém args.
  • SIDEDEFS: Lista de sidedefs ligados aos linedefs. Contém dados das texturas exibidas em cada lado, deslocamentos X e Y e o setor ao qual o lado pertence.
  • VERTEXES: Lista de vértices do mapa, usando coordenadas X e Y.
  • SEGS: Lista de “segs” (segmentos) que se conectam para formar subsectors.
  • SSECTORS: Lista de subsectors, criada pelo construtor de nodes.
  • NODES: A árvore de nodes que o (Z)Doom usa para acelerar a renderização, semelhante a um vismap em jogos 3D modernos (como Quake 3). Criada pelo construtor de nodes.
  • SECTORS: Define alturas e texturas de piso e teto, valor de luz, tag e tipo de cada setor.
  • REJECT: Opcionalmente compilado pelo construtor de nodes; contém dados sobre quais setores são visíveis a partir de outros. Originalmente usado para otimização de IA. Hoje é dispensável; o ZDoom funciona sem ele. Por compatibilidade, recomenda-se incluir um REJECT vazio (preenchido com zeros). Também pode ser usado para efeitos especiais se modificado com cuidado.
  • BLOCKMAP: Informações de detecção de colisão que determinam se objetos se tocam.
  • BEHAVIOR: Não fazia parte do Doom original; surgiu no Hexen e contém scripts compilados usados pelo mapa. O ZDoom suporta totalmente esse lump. Doom vanilla e ports focados apenas em Doom travam quando níveis em formato Hexen são usados (devido às diferenças em LINEDEFS e THINGS). Este lump é sempre presente em níveis no formato Hexen. Níveis sem ele são considerados formato Doom.
  • SCRIPTS: Ignorado pelo ZDoom, mas é boa prática incluí-lo. Deve conter a versão em texto (não compilada) dos scripts do mapa, para aprendizado de outros. Pode ter outro nome além de SCRIPTS; às vezes é necessário usar nomes como SCRIPT01, SCRIPT02, etc., para evitar conflitos.

Flats, sprites e texturas

Veja também namespace

Esses recursos devem ficar entre lumps marcadores especiais para que o ZDoom os coloque no namespace correto. Fora definir início e fim da seção, esses marcadores normalmente não contêm dados (tamanho zero).

Os marcadores têm nomes x_START e x_END, onde x são as primeiras letras do recurso. Por exemplo, sprites ficam entre S_START e S_END. Em WADs de usuário, usam-se normalmente SS_START e SS_END. Flats usam F_START e F_END (FF_START/FF_END em WADs de usuário). Patches não exigem marcadores. Algumas ferramentas requerem P_START e P_END, mas o ZDoom não.

O ZDoom também adiciona marcadores próprios: TX_START e TX_END para texturas, e HI_START e HI_END para texturas escaladas.

Você pode usar tanto os marcadores antigos quanto os novos TX_. Recursos entre TX_ têm prioridade. Ex.: se houver um gráfico “VENT14” entre TX_ e um patch com o mesmo nome na área P_, a versão TX_ será usada. Na prática, evite nomes duplicados, embora seja permitido.

Gráficos do ZDoom colocados entre quaisquer dos marcadores acima podem ser usados indistintamente como pisos ou tetos.

Nomes especiais de lumps

Para uma lista de lumps específicos do ZDoom, veja: special lumps. Lumps especiais devem ser colocados no namespace global.

Veja também

Página original (em inglês): https://zdoom.org/wiki/WAD