From DoomWiki.org

Organizing information to send to Engine bugs in Heretic and Engine bugs in Hexen.

Heretic[edit]

(intro here)

Note that playing with a source port may, while removing some or even the majority of the bugs listed below, introduce other bugs which are not listed here (although details may be present in the article about the source port in question).

Key[edit]

This table classifies anomalies in a very broad way; see the individual articles for details.

  • Cause — The general category of underlying problem:
    • Most bugs are due to algorithms which fail to account for all possible inputs, apply conditional statements in an illogical sequence, or have unforeseen consequences in particular game situations.
      • A few of these arise from simple typos in the source code.
    • Improperly constructed linedefs, with orphaned tags or incorrectly placed textures, can also induce various strange behaviors.
    • The Doom engine includes few safeguards against overflow conditions.
    • Line-of-sight calculations, rendering algorithms, and the BSP tree are also susceptible to roundoff errors.
    • The engine imposes a number of static limits on Thing placement and map construction, which sometimes fix one problem by creating another.
  • Fatal bugs are those where the engine crashes (often with the Venetian blind effect) or else exits the game in a controlled fashion, usually with an error message. Y* means that termination is possible, but not inevitable. N* means that the program keeps running, but that rendering or character behavior may be sufficiently compromised that meaningful gameplay becomes impossible.
  • A bug is inherited if it is a direct consequence or extension of a bug which occurred in the Doom v1.2 codebase upon which Heretic was built.
  • Fixed in 1.3 — Some bugs appear only in versions of Heretic prior to v1.3.
  • A bug has a workaround if it can be avoided by reasonable compromises in map design, such as when matching every linedef tag to at least one sector, but not when removing invulnerabilities from every level containing a sky texture, or also by convenient precautions and other measures taken by the program user, such as when increasing the mouse sensitivity through the configuration file directly, instead of using the menu. S means that the bug can be avoided only by making one's map smaller or less complex.
  • A bug is a loophole if it can be abused to the player's advantage (especially during speedruns or deathmatches).
Phenomenon Cause Fatal? Inherited? Fixed in
1.3?
Workaround? Loophole?
Firemace randomization bugs N N Y N N
Tomed firemace instant-kills iron liches N N Y N Y
Incorrect terrain effects when straddling sector boundaries N N N N N
Invulnerability colormap bug Algorithm N Y N N N
Invulnerability and shadowsphere visual effect conflict N N N N N
Heretic and Hexen sky seam bug N N N N N
Falling gargoyle can explode multiple times N N N N N
Flying enemies stick to other monsters Algorithm N N N N N
Monsters can see through walls N Y? N Y N
Landing on solid objects causes erroneous air control and friction Algorithm N N N N Y
Vertical cutoff of partially invisible sprites Static limit N Y N N N
Barrel suicide (with exploding pods) Algorithm N Y N N Y
Choppy player movement when suffering lava damage Algorithm N N N N N
Blank field

Hexen[edit]

(intro here)

Note that playing with a source port may, while removing some or even the majority of the bugs listed below, introduce other bugs which are not listed here (although details may be present in the article about the source port in question).

Key[edit]

This table classifies anomalies in a very broad way; see the individual articles for details.

  • Cause — The general category of underlying problem:
    • Most bugs are due to algorithms which fail to account for all possible inputs, apply conditional statements in an illogical sequence, or have unforeseen consequences in particular game situations.
      • A few of these arise from simple typos in the source code.
    • Improperly constructed linedefs, with orphaned tags or incorrectly placed textures, can also induce various strange behaviors.
    • The Doom engine includes few safeguards against overflow conditions.
    • Line-of-sight calculations, rendering algorithms, and the BSP tree are also susceptible to roundoff errors.
    • The engine imposes a number of static limits on Thing placement and map construction, which sometimes fix one problem by creating another.
  • Fatal bugs are those where the engine crashes (often with the Venetian blind effect) or else exits the game in a controlled fashion, usually with an error message. Y* means that termination is possible, but not inevitable. N* means that the program keeps running, but that rendering or character behavior may be sufficiently compromised that meaningful gameplay becomes impossible.
  • A bug is inherited if it is a direct consequence or extension of a bug which occurred in the Heretic codebase upon which Hexen was built.
  • Fixed in 1.1 — Some bugs appear only in versions of Hexen prior to v1.1.
  • A bug has a workaround if it can be avoided by reasonable compromises in map design, such as when matching every linedef tag to at least one sector, but not when removing invulnerabilities from every level containing a sky texture, or also by convenient precautions and other measures taken by the program user, such as when increasing the mouse sensitivity through the configuration file directly, instead of using the menu. S means that the bug can be avoided only by making one's map smaller or less complex.
  • A bug is a loophole if it can be abused to the player's advantage (especially during speedruns or deathmatches).
Phenomenon Cause Fatal? Inherited? Fixed in
1.1?
Workaround? Loophole?
Chaos Device and Disc of Repulsion names reversed Typo N N Y N N
Heretic and Hexen sky seam bug N Y N N N
Heresiarch casting speed increases over time N N N N N
Reduced effectiveness of Mystic Ambit Incant Algorithm N N N N N
Barrel suicide when monsters burn trees Algorithm N Y N N Y
Flying enemies stick to other monsters Algorithm N Y N N N
Blank field