Difference between revisions of "Sidedef"

From DoomWiki.org

[checked revision][checked revision]
(Sidedef Structure)
m (Reverted edits by Elzair (talk) to last revision by 80.193.147.241)
Line 20: Line 20:
 
<table {{prettytable}}>
 
<table {{prettytable}}>
 
<tr align=center>
 
<tr align=center>
  <th>Offset</th><th>Data Type</th><th>Description</th>
+
  <th>Offset</th><th>Size (bytes)</th><th>Description</th>
 
</tr>
 
</tr>
 
<tr align=center>
 
<tr align=center>
  <td>0</td><td>int16</td><td align=left>''x'' offset</td>
+
  <td>0</td><td>2</td><td align=left>''x'' offset</td>
 
</tr>
 
</tr>
 
<tr align=center>
 
<tr align=center>
  <td>2</td><td>int16</td><td align=left>''y'' offset</td>
+
  <td>2</td><td>2</td><td align=left>''y'' offset</td>
 
</tr>
 
</tr>
 
<tr align=center>
 
<tr align=center>
  <td>4</td><td>char[8]</td><td align=left>Name of upper texture</td>
+
  <td>4</td><td>8</td><td align=left>Name of upper texture</td>
 
</tr>
 
</tr>
 
<tr align=center>
 
<tr align=center>
  <td>12</td><td>char[8]</td><td align=left>Name of lower texture</td>
+
  <td>12</td><td>8</td><td align=left>Name of lower texture</td>
 
</tr>
 
</tr>
 
<tr align=center>
 
<tr align=center>
  <td>20</td><td>char[8]</td><td align=left>Name of middle texture</td>
+
  <td>20</td><td>8</td><td align=left>Name of middle texture</td>
 
</tr>
 
</tr>
 
<tr align=center>
 
<tr align=center>
  <td>28</td><td>uint16</td><td align=left>[[Sector]] number this sidedef 'faces'</td>
+
  <td>28</td><td>2</td><td align=left>[[Sector]] number this sidedef 'faces'</td>
 
</tr>
 
</tr>
 
</table>
 
</table>

Revision as of 11:49, 10 August 2016

A sidedef contains the wall texture data for each linedef (though sidedefs do not reference linedefs directly, indeed it is the other way around). Each sidedef contains texture data, offsets for the textures and the number of the sector it references (this is how sectors get their 'shape').

Upper texture - This contains the name of a texture that will be displayed on the border between a sector and its neighboring ceiling of a different height. If the linedef that contains this sidedef is one sided this field is meaningless.

Middle texture - On one sided linedefs this will be the only texture displayed; as the main wall texture. On two sided linedefs this will be displayed as a 'floating' texture which the player is able to walk through. Middle floating textures can be used to achieve a variety of faux 3D effects such as 3D bridges. Note that middle floating textures will only tile horizontally and not vertically, where they only repeat once.

Lower texture - This performs a similar function to the upper texture; the lower texture is displayed on the border between a sector and its neighboring floor of a different height.

x offset - How many pixels to shift all the sidedef textures on the X axis (right or left).

y offset - How many pixels to shift all the sidedef textures on the Y axis (up or down).

Regardless of the texture used on a sidedef, each sidedef will still take up the same amount of space since textures are referred to by name (in Doomstring format).

Sidedef Structure

Doom level format

Each Sidedef is 30 bytes large. Sidedefs are stored in WAD files in the following format:

OffsetSize (bytes)Description
02x offset
22y offset
48Name of upper texture
128Name of lower texture
208Name of middle texture
282Sector number this sidedef 'faces'

Sidedefs are exactly the same in Hexen format as they are in the original Doom format.

Sidedef compression

Linedefs reference two sidedefs: one for the left side, and one for the right side, by their order into the SIDEDEFS lump. Naive map authoring tools will generate a unique sidedef for every linedef side in the game (so one per one-sided linedef, two per two-sided).

Wad compression tools can reduce the number of sidedef entries by making multiple linedefs reference the same sidedef, when the linedefs have the same texture, offsets, and sector.

The index used by the linedef entry is a signed 16-bit integer, which restricts the number of sidedefs that can occur to 65536 per level. For huge maps, this figure can be surpassed by sharing sidedefs between linedefs.

See also