All-ghosts effect

From DoomWiki.org

The intercept overflow blockmap corruption bug, also known as the all-ghosts effect or (in deathmatch) as the DM no-clipping bug, is a flaw in Doom's hitscan intercept enumeration algorithm. It was named after the ghost monsters bug with which it shares some similarities, even though its underlying causes are different.

In extremely rare cases, a memory overflow can occur which causes all things, including players and monsters, to become ghosts. One such way to cause this is when a hitscan attack, or a BFG tracer crosses over more than 128 linedefs/things at once, causing an intercept overflow. Such an overflow can be produced, somewhat awkwardly but quite reliably, for example, by shooting a hitscan weapon over a large amount of corpses and pickups all lined-up in a row. The all-ghosts effect happens when a hitscan attack encounters at least 147 intercepts. With every intercept beyond 128, the game will start overwriting memory addresses that have nothing to do with intercepts. At 147 intercepts, the game overwrites memory addresses for the blockmap data. Overwriting these addresses causes all further collision checks to fail, resulting in the all-ghosts effect. Intercept overflow can also occur due to a rounding error in fixed point arithmetic, in which case the algorithm may end up enumerating the same intercepts repeatedly.

After the bug has been triggered, neither hitscan nor projectile attacks have any effect, and linedef effects (switches, walk-over triggers, teleporters, and even walls) no longer work; however, sector effects (secrets, damaging floors) remain functional. This allows the bug to be exploited in speedruns of some maps with a death-exit floor (sector type 11); it is otherwise of little utility. Although triggering the bug allows the player to pass through walls, floor-height checks remain in place, so the effects of the bug do not subsume the noclip cheat.

This bug can happen in all Doom engine games except Strife, where a fix was implemented to stop progression of tracers when the intercepts array is full. In versions of Doom up to 1.2, and in Heretic and Hexen, it is also possible for line-of-sight checks to trigger the glitch, as a tracer-like algorithm is used for line-of-sight checking in those games which utilizes the same intercept array.

External links[edit]