Difference between revisions of "(0,0) respawning bug"

From DoomWiki.org

[unchecked revision][checked revision]
("set to zero" is precisely the opposite of an unitialised variable)
 
(14 intermediate revisions by 11 users not shown)
Line 1: Line 1:
[[Image:zerozerobug1.png|thumb|Monsters in the void on Doom II MAP30.]]
+
[[Image:zerozerobug1.png|thumb|Monsters in the void on the final level of Doom II.]]
  
The '''(0, 0) respawning bug''' was a bug that existed in all official releases of the [[Doom]] engine. When a [[monster]] is spawned during play rather than at level start, it has no corresponding mapthing, so the mapthing fields inside it are all set to zero. When the code that performs [[Nightmare]] or <code>-respawn</code> monster respawning considers such a monster, it will be respawned at the point (0, 0) regardless of that point's nature.
+
The '''(0, 0) respawning bug''' was a bug that existed in all official releases of the [[Doom engine]]. When a [[monster]] is [[Wikipedia:Spawning (computer gaming)|spawned]] during play rather than at [[level]] start, it has no corresponding mapthing, so the mapthing fields inside it are all set to zero. When the code that performs "Nightmare!" [[Skill level|skill]] or <tt>[[Parameter#-respawn|-respawn]]</tt> monster respawning considers such a monster, it will be respawned at the point (0, 0) regardless of that point's nature.
  
This bug was first widely noticed on Doom II's [[MAP30: Icon of Sin]], where if the player remains in the level for a long enough time, huge numbers of monsters will appear in the void to the left of the valid map area. In addition, when played under the Doom95 source port, if the player remains in the level for an even longer time (without killing large amounts of monsters), Doom95 freezes up and quits the game. Upon exiting the game, an "application error" message can be seen.
+
This bug was first widely noticed on [[Doom II]]'s [[MAP30: Icon of Sin]], where if the player remains in the level for a long enough time, huge numbers of monsters will appear in the void to the left of the valid map area.
  
This bug was first repaired in the [[Eternity Engine]] by [[James "Quasar" Haley]] by allowing such monsters to respawn at the point they died rather than (0, 0). This fix was later adopted by several other source ports, including [[PrBoom]].
+
== In source ports ==
  
[[Category:Errors and bugs|0]]
+
This bug is repaired in various recent [[source port]] versions. The first to include such a fix was the [[Eternity Engine]] by [[Team Eternity]], by allowing such monsters to respawn at the point they died instead of the (0, 0) location. Fixes were later adopted by several other source ports, including [[PrBoom]], which adopted the method used for the Eternity Engine and [[ZDaemon]]. In the case of ZDaemon, the issue was resolved by giving all dynamically-spawned monsters the "dropped" flag, the same as used on dropped weapons, to prevent them from respawning.
[[Category:Monsters|0]]
+
 
 +
{{DEFAULTSORT:0 0 respawning bug}}
 +
[[Category:Errors and bugs]]
 +
[[Category:Monsters]]

Latest revision as of 15:59, 9 April 2022

Monsters in the void on the final level of Doom II.

The (0, 0) respawning bug was a bug that existed in all official releases of the Doom engine. When a monster is spawned during play rather than at level start, it has no corresponding mapthing, so the mapthing fields inside it are all set to zero. When the code that performs "Nightmare!" skill or -respawn monster respawning considers such a monster, it will be respawned at the point (0, 0) regardless of that point's nature.

This bug was first widely noticed on Doom II's MAP30: Icon of Sin, where if the player remains in the level for a long enough time, huge numbers of monsters will appear in the void to the left of the valid map area.

In source ports[edit]

This bug is repaired in various recent source port versions. The first to include such a fix was the Eternity Engine by Team Eternity, by allowing such monsters to respawn at the point they died instead of the (0, 0) location. Fixes were later adopted by several other source ports, including PrBoom, which adopted the method used for the Eternity Engine and ZDaemon. In the case of ZDaemon, the issue was resolved by giving all dynamically-spawned monsters the "dropped" flag, the same as used on dropped weapons, to prevent them from respawning.