by Matthew S. Fell [with revisions by Steve Benner] / Ben Morris
Each LINEDEF represents a line from one VERTEX to another. The structure of a Hexen LINEDEF differs from that of the LINEDEFs used in DOOM, DOOM II and Heretic, as shown in the following table:
The structure of the LINEDEF in DOOM and Hexen WADs | |||
---|---|---|---|
Offset (DOOM) | Offset (Hexen) | Size | Purpose |
0 | 0 | short | Start VERTEX: the LINEDEF runs from this point... |
2 | 2 | short | End VERTEX: ...to this one. |
4 | 4 | short | Line attribute flags |
6 | - | short | Line Special Effect type |
8 | - | short | "tag" or "trigger" number which ties this line's effect type to all SECTORS that have the same tag number |
- | 6 | byte | Line Special Action type |
- | 7 | 5 bytes | The Special Action's arguments |
10 | 12 | short | number of the "right" SIDEDEF for this LINEDEF |
12 | 14 | short | number of the "left" SIDEDEF if this LINEDEF adjoins 2 SECTORS. Otherwise, it is equal to -1 (FFFF hex). |
When considering sides of a LINEDEF, "right" and "left" are based on the direction as indicated by the "from" and "to", or "start" and "end", VERTEXES. This sketch should make it clear:
left side right side start -----------------> end <----------------- start right side left side
IMPORTANT: All lines must have a right side. If it is a one-sided line, then it must go the proper direction, so its single side is facing the sector it is part of. All versions of the game engine will crash on a level that has a line with no right side.
The third short field of each LINEDEF controls some attributes of that line. These attributes (aka flags) are indicated by bits. If the bit is set (equal to 1), the condition is true for that line. If the bit is not set (equal to 0), the condition is not true. Note that the "unpegged" flags cannot be independently set for the two SIDEDEFs of a line. Here's a list of the flags:
LINEDEF attribute flags | |
---|---|
Bit | Meaning when Set |
0 | Impassable: Players and monsters cannot cross this line. Note that if there is no SECTOR on the other side, they can't go through the line anyway, regardless of the setting of this flag. |
1 | Blocks Monsters: Monsters cannot cross this line. |
2 | Two-sided/Shoot-through/See-through: The line's two SIDEDEFS can have "-" as a texture, which in this case means "transparent". If this flag is not set, the SIDEDEFS can't be transparent: if "-" is viewed, it will result in the "Hall of Mirrors" effect. A side-effect of this flag is that if it is set, then gunfire (pistol, shotgun, chaingun) can go through it. If this flag is not set, gunfire cannot go through the line. Projectiles (rockets, plasma etc.) are not restricted this way--they can go through as long as there's a sector on the other side (and the sector heights allow it). Finally, monsters can see through and attack through two-sided lines, despite any of the line's other flag settings and textures (once again, provided sector heights and the REJECT table allow it). |
3 | Upper Unpegged: The upper texture is pasted onto the wall from the top down instead of from the bottom up like usual. [More.] |
4 | Lower Unpegged: The alignment of lower textures is calculated from the ceiling, instead of from the top of the lower texture as usual. In addition, the middle texture is drawn from the bottom up, instead of from the top of that texture. [More.] |
5 | Secret: On the automap, this line appears in red like a normal solid wall that has nothing on the other side. This is useful in protecting secret doors and such. Note that if the sector on the other side of this "secret" line has its floor height higher than the sector on the facing side of the secret line, then the map will show the lines beyond and thus give up the secret. Also note that this flag has nothing to do with the SECRETS ratio on inter-level screens. That's done with special sector 9. |
6 | Blocks Sound: Affects the sound propagation across the line. Note that this flag does not stop sound dead. |
7 | Not on Map: The line is not shown on the automap, even if the computer all-map power up is acquired. |
8 | Already on Map: When the level is begun, this line is already on the automap, even though it hasn't been seen (in the display) yet. Normally lines only get mapped once part of the line has been seen in the display window. |
9 | Special Repeatable (Hexen only): If set, the line's Special Action is repeatable, otherwise it will activate only once. |
10, 11, 12 | Special Activation (Hexen only): These three bits determine how the line's Special Action is activated. [Values] |
The upper and lower texture pegging flags are used to control the way textures appear on walls around openings. Upper textures normally have the bottom of the wall texture to be drawn lined up with the bottom of the "upper" space in which it is to be drawn. This can result in the upper texture being misaligned with a neighboring "middle" texture. To help solve this problem, common over openings in walls, the upper unpegged flag can be set. If the upper texture is unpegged, it is drawn with the wall texture's top row at the ceiling, just like middle and lower textures are usually drawn. This can help realign the upper texture with a neighbour.
The lower unpegged flag is commonly used on lower textures around openings. It is used on doorjambs, because when the door opens, the sector ceiling is rising, so the "sides" (the doorjambs), which are middle textures, will be drawn from the ever-changing ceiling height down, and thus will appear to be moving with the ceiling. Unpegging them will make them be drawn from the floor up, and since the floor height doesn't change when a door opens, then will not move.
NOTE: There is much more information on the use of the Unpegged flags (and other alignment features) in Texture Alignment pages of The WADster's Guide.
On the automap in DOOM and DOOM II, red lines indicate a line is one-sided, that there is a sector on only one side (or the line is marked secret). Brown lines are between two sectors with different floor heights but the same ceiling height. Yellow lines are between two sectors with different ceiling heights and the same or different floor heights. Gray lines are as-yet-unseen lines revealed by the computer all-map. Without the all-map, lines between sectors with identical floor and ceiling heights don't show up. With it, they are gray.
Every time a player fires a weapon, the "sound" of it travels from sector to sector, alerting all non-deaf monsters in each new sector. But the sound will die when it hits a second line with this flag, providing that line is on a sector boundary. The sound can cross one such line, but not two. All possible routes for the sound to take are taken, so it can get to some out-of-the-way places.
Another thing that blocks sound, instantly, is incompatible sector heights: an air-gap is always required to permit sound to pass. Sound can go from a sector with 0/72 floor/ceiling heights to one with 64/192, but the sound cannot go from a 0/128 sector to an adjacent 128/256 sector.
The way that Special Actions are structured and triggered from LINEDEFS differs widely between the basic engine of DOOM, DOOM II and Heretic, and the much more advanced engine used in Hexen.
The short in field 4 of 7 of a LINEDEF can control various special effects like doors opening, floors moving, etc. Some of them must be activated by "using" them, like switches, and some of them are activated when they are walked over. There are a huge number of ways to use these effects, but it's all done by using one of a hundred or so line function types.
The most common way they work is this: a player walks across a line or activates (presses the spacebar or the use key) right in front of a line. That line has a function type that is non-zero. It also has a tag number. Then all sectors on the level with the same tag number, that are not already engaged in some action, undergo the effects that the LINEDEF type number dictates. Note that the tag numbers are not the SECTOR numbers, nor the LINEDEF numbers. A tag number is in a LINEDEF's 5th short field, and a SECTOR's last short field.
Hexen uses a much more flexible Special Action system than does DOOM. In the earlier model of game engine, all of the characteristics of an action, including its trigger type and all aspects of its operation were hard-coded into the particular action. With Hexen, much of this has changed. An action's repeatability, for instance, is now part of the LINEDEF structure: bit 9 of the line's Attribute flags. The precise way that any line triggers the action is also encoded in the line's Attribute flag: bits 10, 11 and 12 of the flag provide a three-bit value which is decoded as follows:
Hexen line activation flags | |
Value | Causes line to activate when |
---|---|
0 | Player crosses the line |
1 | Player uses the line with the use key |
2 | Monster crosses the line |
3 | Projectile impacts the wall |
4 | Player pushes the wall |
5 | Projectile crosses the line |
Finally, Hexen's Special Actions permit the passing of up to five arguments from the LINEDEF to control the precise way that the triggered activity is carried out. Full details of these are given in the pages dealing with the Special Actions of Hexen.
![]() |
↑ Menu ↑ | HTML-Version new styled on Nov 2008 by Dieter Heinrich | ↑ top ↑ |