ID24

From DoomWiki.org

ID24 is a specification and standard specifically aimed at mod authors and mods in general. It builds on top of the possibilities shown in the MBF21 standard, acting as a super-set of it, and was first implemented in the KEX Engine source port of Doom + Doom II. It was first used there for the Legacy of Rust episode.

History[edit]

Initially under development in Rum and Raisin Doom under the name 'RNR24', Doom + Doom II licensed the code and renamed it to 'ID24'. On August 10, 2024 documentation for the standard, titled "ID24 0.99.1" in the files, was released on Google Drive.[1]

Neither the specification 'ID24 0.99.1' nor Doom + Doom II at release are fully compatible with Boom and MBF21 standards, this is due to it being a clean-room re-implementation. Where the ID24 code (all the new tech features) is open to be adopted to source ports, the resources file requires that if you want to use the new monsters, id24res.wad needs to be included.

On August 13, 2024, Simon Howard (Fraggle) announced that the Freedoom project would develop a free replacement for id24res.wad, as part of a subproject named 'FD24',[2] with a branch on the official GitHub repository being created the same day.[3] This will allow any future mods developed against the new ID24 standard to remain playable under Freedoom.

On September 4, 2024 Ethan Watson (GooberMan) announced a draft revision of the spec 'ID24 0.99.2', clarifying that the documents are CC0, with the code being GPL. It revised the wording for id24res.wad, added a self damage factor to ID24HACKED, while ability to apply a translation to every graphic asset in a WAD has been added to GAMECONF, as well as many revisions in the wording in the documentation.[4]

The finalized spec will follow soon.

Features[edit]

An overview of most of the ID24 features and some Boom oddities.
  • Several new things, including new monsters and props, internally defined with ID24HACKED features.
  • Several new control lumps, using JSON format. These include notably:
  • Uses the UMAPINFO standard, with some new additions, such as the ability to define intermission scripts with the enteranim and exitanim properties (using lumps in JSON format as the values).

Mapping additions[edit]

ID24 has implemented a few new features and line specials for use by mappers. This section details this new functionality.

Baseline features[edit]

The ID24 map additions are a super-set of the following specifications:

An ID24-capable port is expected to implement all features for those standards.

Reserved indices for line specials[edit]

The following line special index ranges are reserved for future use by id Software and/or its affiliates:

  • 2048 - 4095 inclusive

This is easily testable with a bitwise AND with single bit, 0x0800. Any line special outside of the Boom generalised linedef range with this bit set is expected to have been defined by id Software and/or its affiliates; if it has been defined through any other means, this is in violation of the ID24 specification.

Further, the line specials used by ZokumBSP are respected and reserved for use by ZokumBSP. At the time of writing, the following list of indices are reserved:

  • 998
  • 999
  • 1048
  • 1078
  • 1079
  • 1080
  • 1081
  • 1082
  • 1083
  • 1084
  • 1085
  • 1086

UMAPINFO additions[edit]

UMAPINFO defines the bossaction field as a way to activate a line special when all boss monsters of the specified type are killed. It uses a string mnemonic to resolve the type. This was reasonable when it was not possible to have four billion+ different types. As such, bossaction now allows you to specify the thing number as defined by DeHackEd in place of a string mnemonic.

Further, bossactionednum has been added which differs from bossaction by resolving a thing's editor number instead of the thing number directly. The boss actions internally still use the usual thing type values, and as such this field must resolve to a valid thing from the editor number to be able to function correctly.

Any texture and flat can be used on any surface[edit]

ID24 allows both textures defined in TEXTURE1/2 and flats found between flat markers in the WAD directory to be rendered on any floor, ceiling, or wall. TEXTURE1/2 textures rendered on floors and ceilings do not clamp to power-of-2 boundaries but instead render their entire dimensions in a 1:1 ratio of texels to world units. TEXTURE1/2 textures rendered on floors and ceilings tile using the same rules as flats.

For the purposes of rendering a transparent texture on a solid surface, transparent texels must be rendered with palette index 0. Composite textures must clear their texture to palette index 0 before compositing.

Floor and ceiling texture transformations[edit]

There are now line specials to offset floor and ceiling textures, similar to how wall textures are offset. The line special's X and Y direction are treated as the offset values. Offsets are always applied assuming the floor/ceiling is rendering from the origin (0, 0).

Floor and ceiling textures are also rotatable. As per offsets, the rotation is defined by the angle of the line and applied as if the floor/ceiling is rendering from the origin (0, 0). Lines that combine offset and rotation effects perform the offset first and then the rotation.

ID Usage Description
2048 Always Offset target floor texture by line direction
2049 Always Offset target ceiling texture by line direction
2050 Always Offset target floor and ceiling texture by line direction
2051 Always Rotate target floor texture by line angle
2052 Always Rotate target ceiling texture by line angle
2053 Always Rotate target floor and ceiling texture by line angle
2054 Always Offset then rotate target floor texture by line direction and angle
2055 Always Offset then rotate target ceiling texture by line direction and angle
2056 Always Offset then rotate target floor and ceiling texture by line direction and angle

Music changing[edit]

The new music line specials mean that you no longer are required to use MUSINFO to change the current music track playing. When defining the music track, you set the upper texture to the wanted lump name of the music track when activating the line from the front side; and the lower texture when activating from the back side. The music change is immediate, unlike MUSINFO which has a small delay.

If a lump is not found with the provided name, no music change occurs.

If the upper/lower textures are not set, no music change occurs. The exception is when using the "reset" class of lines, which reverts to the level's default looping music when activated.

ID Usage Description
2057 W1 Change music and make it loop only if a track is defined
2058 WR Change music and make it loop only if a track is defined
2059 S1 Change music and make it loop only if a track is defined
2060 SR Change music and make it loop only if a track is defined
2061 G1 Change music and make it loop only if a track is defined
2062 GR Change music and make it loop only if a track is defined
2063 W1 Change music and make it play only once
2064 WR Change music and make it play only once
2065 S1 Change music and make it play only once
2066 SR Change music and make it play only once
2067 G1 Change music and make it play only once
2068 GR Change music and make it play only once
2087 W1 Change music and make it loop, reset to looping default if no track defined
2088 WR Change music and make it loop, reset to looping default if no track defined
2089 S1 Change music and make it loop, reset to looping default if no track defined
2090 SR Change music and make it loop, reset to looping default if no track defined
2091 G1 Change music and make it loop, reset to looping default if no track defined
2092 GR Change music and make it loop, reset to looping default if no track defined
2093 W1 Change music and make it play only once, reset to looping default if no track defined
2094 WR Change music and make it play only once, reset to looping default if no track defined
2095 S1 Change music and make it play only once, reset to looping default if no track defined
2096 SR Change music and make it play only once, reset to looping default if no track defined
2097 G1 Change music and make it play only once, reset to looping default if no track defined
2098 GR Change music and make it play only once, reset to looping default if no track defined

Reset exits[edit]

Lines are provided that reset the player's inventory after exiting a map. This removes the requirements for death exits to do such things; and also allows a cleaner way of handling such setups as Eviternity's secret maps rewarding the player with not resetting their inventory on entering MAP16 (i.e. place the reset exit on MAP15 and the flow is preserved naturally since the reset happens at map end instead of map start).

ID Usage Description
2069 W1 Exit to the next map and reset inventory
2070 S1 Exit to the next map and reset inventory
2071 G1 Exit to the next map and reset inventory
2072 W1 Exit to the secret map and reset inventory
2073 S1 Exit to the secret map and reset inventory
2074 G1 Exit to the secret map and reset inventory

Sector tinting[edit]

Sectors can now have colormaps applied directly to them without needing to use Boom's property transfer line specials. It is also possible to do this dynamically thanks to interactive line special types. When defining the COLORMAP, you set the upper texture to the wanted lump name of the COLORMAP when using the static special or when activating the line from the front side; and the lower texture when activating from the back side.

If a lump is not found with the provided name, or if the upper/lower textures are not set, the sector's COLORMAP is cleared and it uses the current default COLORMAP (as set with the property transfer zone you are in).

When a sector's COLORMAP is set this way, it entirely overrides the default COLORMAP (including property transfers, excluding powerups).

ID Usage Description
2075 Always Set the target sector's colormap
2076 W1 Set the target sector's colormap
2077 WR Set the target sector's colormap
2078 S1 Set the target sector's colormap
2079 SR Set the target sector's colormap
2080 G1 Set the target sector's colormap
2081 GR Set the target sector's colormap

Scrolling textures[edit]

New special types have been added to scroll both the front and the back sidedefs of a line in the same cardinal direction. The defined direction is relative to the front sidedef of a line.

ID Usage Description
2082 Always Scroll both front and back sidedef's textures according to the line's left direction
2083 Always Scroll both front and back sidedef's textures according to the line's right direction
2084 Always Scroll both front and back sidedef's textures according the target sector's scroll values divided by 8
2085 Always Scroll both front and back sidedef's textures according the target sector's movement divided by 8
2086 Always Scroll both front and back sidedef's textures and accelerate the scroll value by the target sector's movement divided by 8

New things[edit]

Monsters
ID Name Sprite
-28672 Ghoul GHUL
-28671 Banshee BSHE
-28670 Mindweaver CSPI
-28669 Shocktrooper PPOS
-28668 Vassago VASS
-28667 Tyrant CYB2
-28666 Tyrant (Boss 1) CYB2
-28665 Tyrant (Boss 2) CYB2
Decorations
ID Name Sprite
-28663 Large corpse pile POL7A0
-28662 Human BBQ 1 HBBQ
-28661 Human BBQ 2 HBB2
-28660 Hanging victim, both legs GOR6A0
-28659 Hanging victim, both legs (blocking) GOR6A0
-28658 Hanging victim, crucified GOR7A0
-28657 Hanging victim, crucified (blocking) GOR7A0
-28656 Hanging victim, arms bound GOR8A0
-28655 Hanging victim, arms bound (blocking) GOR8A0
-28654 Hanging baron of hell GORAA0
-28653 Hanging baron of hell (blocking) GORAA0
-28652 Hanging victim, chained HDB7A0
-28651 Hanging victim, chained (blocking) HDB7A0
-28650 Hanging torso, chained HDB8A0
-28649 Hanging torso, chained (blocking) HDB8A0
-28648 Skull pole trio POB6A0
-28647 Skull gibs POLAA0
-28646 Bush, short BSH1A0
-28645 Bush, short burned 1 BSH1B0
-28644 Bush, short burned 2 BSH1C0
-28643 Bush, tall BSH2A0
-28642 Bush, tall burned 1 BSH2B0
-28641 Bush, tall burned 2 BSH2C0
Obstacles
ID Name Sprite
-28664 Stalagmite (gray)* SMT2A0
-28640 Cave rock column STMIA0
-28639 Cave stalagmite, large STG1A0
-28638 Cave stalagmite, medium STG2A0
-28637 Cave stalagmite, small STG3A0
-28636 Cave stalactite, large STC1A0
-28635 Cave stalactite, large (blocking) STC1A0
-28634 Cave stalactite, medium STC2A0
-28633 Cave stalactite, medium (blocking) STC2A0
-28632 Cave stalactite, small STC3A0
-28631 Cave stalactite, small (blocking) STC3A0
-28630 Office chair CHR1
* Sprite located in Doom/Doom II IWAD
Light sources
ID Name Sprite
-28629 Office lamp (breakable) LAMP
-28628 Ceiling lamp TLP6A0
-28627 Candelabra (short) CBR2A0
Sounds
ID Name
-28626 Ambient klaxon
-28625 Ambient portal open
-28624 Ambient portal loop
-28623 Ambient portal close
Ammunition
ID Name Sprite
-28622 Fuel can FCPUA0
-28621 Fuel tank FTNKA0
Weapons
ID Name Sprite
-28620 Heatwave generator CBLDA0
-28619 Incinerator INCNA0

Supported ports[edit]

Support for the ID24 specification is implemented in the following source ports:

  • Doom + Doom II
  • GZDoom (partial support as of version 4.13)
  • Helion (partial support as of version 0.9.5.0)
  • Woof (partial support as of version 15.0.0)
  • Odamex (partial support as of version 11.0.0)

Files[edit]

Credits[edit]

The ID24 spec was developed in a collaborative effort with various members of the community. The core team responsible for the spec included the following members:

  • Ethan Watson (GooberMan)
    • Main programmer
  • Xaser
    • State/thing/etc tables, DECOHACK
    • Front+back linedef scrollers, bugfixes, general QA/feedback on the spec wordings

Trivia[edit]

  • ID24 is referenced in WADINFO lump of Legacy of Rust, the first public use of the term.

See also[edit]

External links[edit]

References[edit]

  1. GooberMan (10 August 2024). ID24 - a new feature set standard. Doomworld forums. Retrieved 10 August 2024.
  2. VL2M STUDIO (10 August 2024). FD24 (free replacement for id24res.wad). Doomworld forums. Retrieved 14 August 2024.
  3. https://github.com/freedoom/freedoom/commits/fd24
  4. GooberMan (4 September 2024). ID24 0.99.2 - currently in draft status. Doomworld forums. Retrieved 4 September 2024.