Difference between revisions of "Thing"
From DoomWiki.org
[unchecked revision] | [checked revision] |
(transwikied from zdoom wiki, sorry about doing plurals by mistake) |
m (→Doom 64 flags: fix bit number) |
||
(39 intermediate revisions by 17 users not shown) | |||
Line 1: | Line 1: | ||
− | + | '''Things''' represent [[player]]s, [[monster]]s, [[pick-up]]s, and [[projectile]]s. Inside the game, these are known as actors, or [[mobj]]s. They also represent obstacles, certain decorations, player start positions and [[teleporter|teleport]] landing sites. | |
− | + | While some mobjs, such as projectiles and special effects, can only be created during play, most things can be placed in a map from a map editor through an associated editor number. When the map is loaded, an actor that corresponds to that number will be spawned at the location of that map thing. See [[thing types]] for a listing of all things that have an associated editor number. | |
− | [[ | + | ==THINGS lump== |
+ | {{Doom level format}} | ||
+ | Level thing data is stored in the {{c|THINGS}} [[lump]]. Each entry is 10 bytes long. This format is used by both [[Doom]] and [[Heretic]]. | ||
+ | {| {{prettytable|style=text-align: center;}} | ||
+ | ! Offset | ||
+ | ! Size (bytes) | ||
+ | ! C99 type | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0 || 2 || int16_t | ||
+ | | style="text-align: left;" | ''x'' position | ||
+ | |- | ||
+ | | 2 || 2 || int16_t | ||
+ | | style="text-align: left;" | ''y'' position | ||
+ | |- | ||
+ | | 4 || 2 || int16_t | ||
+ | | style="text-align: left;" | [[Angle]] facing | ||
+ | |- | ||
+ | | 6 || 2 || int16_t | ||
+ | | style="text-align: left;" | DoomEd [[thing type]] | ||
+ | |- | ||
+ | | 8 || 2 || int16_t | ||
+ | | style="text-align: left;" | Flags | ||
+ | |} | ||
− | + | ===Flags=== | |
− | + | {| {{prettytable}} | |
+ | !bit||hex||description | ||
+ | |- | ||
+ | |0||0x0001||Thing is on [[Skill level#Doom and Doom II skill levels|skill levels]] 1 & 2 | ||
+ | |- | ||
+ | |1||0x0002||Thing is on skill level 3 | ||
+ | |- | ||
+ | |2||0x0004||Thing is on skill levels 4 & 5 | ||
+ | |- | ||
+ | |3||0x0008||Thing is waiting in ambush. Commonly known as "deaf" flag.<br>In fact, it [[Monster_behavior#Initial_state_and_alertness|does not render monsters deaf]] per se. | ||
+ | |- | ||
+ | |4||0x0010||Thing is not in single player | ||
+ | |} | ||
− | + | ===Boom flags=== | |
− | + | [[Boom]] adds the flags: | |
− | + | {| {{prettytable}} | |
+ | !bit||hex||description | ||
+ | |- | ||
+ | |5||0x0020||Thing is not in deathmatch | ||
+ | |- | ||
+ | |6||0x0040||Thing is not in coop | ||
+ | |} | ||
− | + | ===MBF flag=== | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ===Thing | + | [[MBF]] adds the flag: |
− | + | ||
− | + | {| {{prettytable}} | |
− | + | !bit||hex||description | |
− | + | |- | |
− | + | |7||0x0080||Friendly monster | |
− | + | |} | |
− | + | ||
− | + | ==Hexen Format== | |
− | + | [[Hexen]] extended upon the things lump. Hexen things may contain an action special which is executed upon death or pickup of the thing (for monsters and items, respectively). Hexen format also introduced true [[z-clipping]], allowing placement of monsters on the z-axis. Finally, Hexen monsters are also able to have a tag similar to sectors. This is called the thing ID or TID. | |
− | + | ||
− | + | {| {{prettytable|style=text-align: center;}} | |
− | + | ! Offset | |
− | + | ! Size (bytes) | |
− | + | ! C99 type | |
− | + | ! Description | |
− | + | |- | |
− | + | | 0 || 2 || int16_t | |
− | + | | style="text-align: left;" | Thing id (tid) | |
− | + | |- | |
− | + | | 2 || 2 || int16_t | |
− | + | | style="text-align: left;" | X position | |
− | + | |- | |
− | + | | 4 || 2 || int16_t | |
− | + | | style="text-align: left;" | Y position | |
− | + | |- | |
− | + | | 6 || 2 || int16_t | |
− | + | | style="text-align: left;" | Starting height | |
− | + | |- | |
− | + | | 8 || 2 || int16_t | |
− | + | | style="text-align: left;" | Angle facing | |
− | + | |- | |
− | + | | 10 || 2 || int16_t | |
− | + | | style="text-align: left;" | DoomEd thing type | |
− | + | |- | |
− | + | | 12 || 2 || int16_t | |
− | + | | style="text-align: left;" | Flags | |
− | + | |- | |
− | + | | 14 || 1 || uint8_t | |
− | + | | style="text-align: left;" | [[Hexen action special]] | |
− | + | |- | |
− | + | | 15 || 1 || uint8_t | |
− | + | | style="text-align: left;" | Argument 1 | |
− | + | |- | |
− | + | | 16 || 1 || uint8_t | |
− | + | | style="text-align: left;" | Argument 2 | |
− | + | |- | |
− | + | | 17 || 1 || uint8_t | |
− | + | | style="text-align: left;" | Argument 3 | |
− | + | |- | |
− | + | | 18 || 1 || uint8_t | |
− | + | | style="text-align: left;" | Argument 4 | |
− | + | |- | |
− | + | | 19 || 1 || uint8_t | |
− | + | | style="text-align: left;" | Argument 5 | |
− | + | |} | |
− | + | ||
− | + | Note that Hexen things are 20 bytes in size; 10 bytes larger than things in Doom. | |
− | + | ||
− | + | ===Hexen flags=== | |
− | + | ||
− | + | {| {{prettytable}} | |
− | + | !bit||hex||description | |
− | + | |- | |
− | + | |0||0x0001||Thing is on [[Skill level#Hexen skill levels|skill levels]] 1 & 2 | |
− | + | |- | |
− | + | |1||0x0002||Thing is on skill level 3 | |
− | + | |- | |
− | + | |2||0x0004||Thing is on skill levels 4 & 5 | |
− | + | |- | |
− | + | |3||0x0008||Thing is waiting in ambush | |
− | + | |- | |
− | + | |4||0x0010||Thing is dormant - it will not wake up until it is activated using Thing_Activate | |
− | + | |- | |
− | + | |5||0x0020||Thing appears to the [[Fighter]] class | |
− | + | |- | |
− | + | |6||0x0040||Thing appears to the [[Cleric]] class | |
− | + | |- | |
− | + | |7||0x0080||Thing appears to the [[Mage]] class | |
− | + | |- | |
− | + | |8||0x0100||Thing appears in single-player games | |
− | + | |- | |
− | + | |9||0x0200||Thing appears in cooperative games | |
− | + | |- | |
− | + | |10||0x0400||Thing appears in deathmatch games | |
− | + | |} | |
− | + | ||
− | + | ==Strife Format== | |
− | + | [[Strife]] did not alter the thing structure like Hexen did, however it did make use of the unused flag bits. | |
− | + | ||
− | + | ===Strife flags=== | |
− | + | {| {{prettytable}} | |
− | + | !bit||hex||description | |
− | + | |- | |
− | + | |0||0x0001||Thing is on [[Skill level#Strife skill levels|skill levels]] 1 & 2 | |
− | + | |- | |
− | + | |1||0x0002||Thing is on skill level 3 | |
− | + | |- | |
− | + | |2||0x0004||Thing is on skill levels 4 & 5 | |
− | + | |- | |
− | + | |3||0x0008||Thing stands still (only useful for specific enemies) | |
− | + | |- | |
− | + | |4||0x0010||Thing will not appear in single player | |
− | + | |- | |
− | + | |5||0x0020||Thing is waiting in ambush | |
− | + | |- | |
− | + | |6||0x0040||Thing is a friendly monster | |
− | + | |- | |
− | + | |7||0x0080||Unused | |
− | + | |- | |
− | + | |8||0x0100||Thing is 25% translucent | |
+ | |- | ||
+ | |9||0x0200||Thing is either invisible, or 75% translucent if combined with bit 8. | ||
+ | |} | ||
+ | |||
+ | ==Doom 64 format== | ||
+ | The [[Doom 64]] THING format is similar to the Doom format except for the inclusion of a ''z'' position and an ID. Each entry is 14 bytes long. | ||
+ | {| {{prettytable|style=text-align: center;}} | ||
+ | ! Offset | ||
+ | ! Size (bytes) | ||
+ | ! C99 type | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0 || 2 || int16_t | ||
+ | | style="text-align: left;" | ''x'' position | ||
+ | |- | ||
+ | | 2 || 2 || int16_t | ||
+ | | style="text-align: left;" | ''y'' position | ||
+ | |- | ||
+ | | 4 || 2 || int16_t | ||
+ | | style="text-align: left;" | ''z'' position | ||
+ | |- | ||
+ | | 6 || 2 || int16_t | ||
+ | | style="text-align: left;" | [[Angle]] facing | ||
+ | |- | ||
+ | | 8 || 2 || int16_t | ||
+ | | style="text-align: left;" | DoomEd [[thing type]] | ||
+ | |- | ||
+ | | 10 || 2 || int16_t | ||
+ | | style="text-align: left;" | Flags | ||
+ | |- | ||
+ | | 12 || 2 || int16_t | ||
+ | | style="text-align: left;" | ID | ||
+ | |} | ||
+ | |||
+ | ===Doom 64 flags=== | ||
+ | Additional flags are defined in comparison to the Doom format, however flags 10 through 12 are not used in any Doom 64 maps. | ||
+ | |||
+ | {| {{prettytable}} | ||
+ | !bit||hex||description | ||
+ | |- | ||
+ | |0||0x0001||Thing is on [[Skill level#Doom 64 skill levels|skill levels]] 1 & 2 | ||
+ | |- | ||
+ | |1||0x0002||Thing is on skill level 3 | ||
+ | |- | ||
+ | |2||0x0004||Thing is on skill level 4 | ||
+ | |- | ||
+ | |3||0x0008||Thing is waiting in ambush | ||
+ | |- | ||
+ | |4||0x0010||Thing is not in single player | ||
+ | |- | ||
+ | |5||0x0020||Thing doesn't spawn until triggered in level | ||
+ | |- | ||
+ | |6||0x0040||Thing triggers something when picked up | ||
+ | |- | ||
+ | |7||0x0080||Thing triggers something when killed | ||
+ | |- | ||
+ | |8||0x0100||Thing counts as secret in [[intermission]] screen | ||
+ | |- | ||
+ | |9||0x0200||Thing ignores other attackers (no [[infighting]]) | ||
+ | |- | ||
+ | |10||0x0400||Thing doesn't spawn in deathmatch games | ||
+ | |- | ||
+ | |11||0x0800||Thing doesn't in standard netgame mode | ||
+ | |- | ||
+ | |12||0x1000||Thing appears in nightmare mode ([[KEX Engine]]) | ||
+ | |} | ||
+ | |||
+ | ==Sources== | ||
+ | * [[Unofficial Doom Specs]] | ||
+ | * [[Boom]] source code: <tt>boomref.txt</tt> | ||
+ | * {{idgames|file=docs/editing/d64techbible|title=Doom 64 Tech Bible}} | ||
+ | |||
+ | [[Category:Doom engine]] | ||
+ | [[Category:WAD lumps]] | ||
+ | [[Category:Lists]] |
Revision as of 08:46, 25 July 2020
Things represent players, monsters, pick-ups, and projectiles. Inside the game, these are known as actors, or mobjs. They also represent obstacles, certain decorations, player start positions and teleport landing sites.
While some mobjs, such as projectiles and special effects, can only be created during play, most things can be placed in a map from a map editor through an associated editor number. When the map is loaded, an actor that corresponds to that number will be spawned at the location of that map thing. See thing types for a listing of all things that have an associated editor number.
Contents
THINGS lump
Doom level format |
---|
Level thing data is stored in the THINGS lump. Each entry is 10 bytes long. This format is used by both Doom and Heretic.
Offset | Size (bytes) | C99 type | Description |
---|---|---|---|
0 | 2 | int16_t | x position |
2 | 2 | int16_t | y position |
4 | 2 | int16_t | Angle facing |
6 | 2 | int16_t | DoomEd thing type |
8 | 2 | int16_t | Flags |
Flags
bit | hex | description |
---|---|---|
0 | 0x0001 | Thing is on skill levels 1 & 2 |
1 | 0x0002 | Thing is on skill level 3 |
2 | 0x0004 | Thing is on skill levels 4 & 5 |
3 | 0x0008 | Thing is waiting in ambush. Commonly known as "deaf" flag. In fact, it does not render monsters deaf per se. |
4 | 0x0010 | Thing is not in single player |
Boom flags
Boom adds the flags:
bit | hex | description |
---|---|---|
5 | 0x0020 | Thing is not in deathmatch |
6 | 0x0040 | Thing is not in coop |
MBF flag
MBF adds the flag:
bit | hex | description |
---|---|---|
7 | 0x0080 | Friendly monster |
Hexen Format
Hexen extended upon the things lump. Hexen things may contain an action special which is executed upon death or pickup of the thing (for monsters and items, respectively). Hexen format also introduced true z-clipping, allowing placement of monsters on the z-axis. Finally, Hexen monsters are also able to have a tag similar to sectors. This is called the thing ID or TID.
Offset | Size (bytes) | C99 type | Description |
---|---|---|---|
0 | 2 | int16_t | Thing id (tid) |
2 | 2 | int16_t | X position |
4 | 2 | int16_t | Y position |
6 | 2 | int16_t | Starting height |
8 | 2 | int16_t | Angle facing |
10 | 2 | int16_t | DoomEd thing type |
12 | 2 | int16_t | Flags |
14 | 1 | uint8_t | Hexen action special |
15 | 1 | uint8_t | Argument 1 |
16 | 1 | uint8_t | Argument 2 |
17 | 1 | uint8_t | Argument 3 |
18 | 1 | uint8_t | Argument 4 |
19 | 1 | uint8_t | Argument 5 |
Note that Hexen things are 20 bytes in size; 10 bytes larger than things in Doom.
Hexen flags
bit | hex | description |
---|---|---|
0 | 0x0001 | Thing is on skill levels 1 & 2 |
1 | 0x0002 | Thing is on skill level 3 |
2 | 0x0004 | Thing is on skill levels 4 & 5 |
3 | 0x0008 | Thing is waiting in ambush |
4 | 0x0010 | Thing is dormant - it will not wake up until it is activated using Thing_Activate |
5 | 0x0020 | Thing appears to the Fighter class |
6 | 0x0040 | Thing appears to the Cleric class |
7 | 0x0080 | Thing appears to the Mage class |
8 | 0x0100 | Thing appears in single-player games |
9 | 0x0200 | Thing appears in cooperative games |
10 | 0x0400 | Thing appears in deathmatch games |
Strife Format
Strife did not alter the thing structure like Hexen did, however it did make use of the unused flag bits.
Strife flags
bit | hex | description |
---|---|---|
0 | 0x0001 | Thing is on skill levels 1 & 2 |
1 | 0x0002 | Thing is on skill level 3 |
2 | 0x0004 | Thing is on skill levels 4 & 5 |
3 | 0x0008 | Thing stands still (only useful for specific enemies) |
4 | 0x0010 | Thing will not appear in single player |
5 | 0x0020 | Thing is waiting in ambush |
6 | 0x0040 | Thing is a friendly monster |
7 | 0x0080 | Unused |
8 | 0x0100 | Thing is 25% translucent |
9 | 0x0200 | Thing is either invisible, or 75% translucent if combined with bit 8. |
Doom 64 format
The Doom 64 THING format is similar to the Doom format except for the inclusion of a z position and an ID. Each entry is 14 bytes long.
Offset | Size (bytes) | C99 type | Description |
---|---|---|---|
0 | 2 | int16_t | x position |
2 | 2 | int16_t | y position |
4 | 2 | int16_t | z position |
6 | 2 | int16_t | Angle facing |
8 | 2 | int16_t | DoomEd thing type |
10 | 2 | int16_t | Flags |
12 | 2 | int16_t | ID |
Doom 64 flags
Additional flags are defined in comparison to the Doom format, however flags 10 through 12 are not used in any Doom 64 maps.
bit | hex | description |
---|---|---|
0 | 0x0001 | Thing is on skill levels 1 & 2 |
1 | 0x0002 | Thing is on skill level 3 |
2 | 0x0004 | Thing is on skill level 4 |
3 | 0x0008 | Thing is waiting in ambush |
4 | 0x0010 | Thing is not in single player |
5 | 0x0020 | Thing doesn't spawn until triggered in level |
6 | 0x0040 | Thing triggers something when picked up |
7 | 0x0080 | Thing triggers something when killed |
8 | 0x0100 | Thing counts as secret in intermission screen |
9 | 0x0200 | Thing ignores other attackers (no infighting) |
10 | 0x0400 | Thing doesn't spawn in deathmatch games |
11 | 0x0800 | Thing doesn't in standard netgame mode |
12 | 0x1000 | Thing appears in nightmare mode (KEX Engine) |
Sources
- Unofficial Doom Specs
- Boom source code: boomref.txt
- Doom 64 Tech Bible at Doomworld/idgames