Linedef

Linedefs are what make up the 'shape' (for lack of a better word) of a map. Every linedef is between two vertices and contains one or two sidedefs (which contain wall texture data). There are two major purposes of linedefs. The first is to divide the map into sectors, and the second is to trigger action specials.

Any area of a map directly behind a one-sided linedef is void space (which cannot be occupied except by using the idclip cheat code). A two-sided linedef is needed (to separate the two sectors) any time there is a change in (1) the height or texture of the floor or ceiling, (2) the light level, or (3) the sector tag or type.

There are three ways to trigger an action: Which of these applies depends on the linedef type number, which also specifies what particular action will occur.
 * 1) walkover
 * 2) "use" (or "push") (with the space bar, by default)
 * 3) shoot (with an impact weapon)

The specified action usually will take place in the sector or sectors that have the same tag number as the linedef. Exceptions to this include local doors (which act on the sector on the other side of the line), special effects that apply to the linedef itself, and the exit-level actions.

Most actions can be specified as either once-only or repeating (by using different linedef types).

Which side is the front or back of a linedef is determined by which vertex is the first vertex. For example, if you were to draw many linedefs with different second vertexes, but the same first vertex, those linedefs would face "clockwise". The front is always 90 degrees to the right / clockwise from the ray you would draw starting from the first point to the second point. To make a linedef face the opposite way, you would flip the vertices.

Doom level format
Each linedef is 14 bytes long.

Doom 64 level format
The Doom 64 linedef is the same as the Doom format except for the Flags which are twice the size compared to Doom. Therefore each linedef is 16 bytes long.

Hexen level format
Each linedef is 16 bytes long.

Linedef flags
Linedefs contain a two-byte (16 bit) field reserved for various flags. Flags are as follows:

Boom level format
Boom added one flag to Doom's linedef flags:

Hexen level format
All Doom flags and also the following: