Noclip bug

From DoomWiki.org

The noclip bug can result in a linedef skip (or line skip), where a special action fails to trigger when the player crosses the linedef at a very high speed. The player can thus bypass (accidentally or intentionally) a teleporter, door/lift trigger, or other action that would normally occur. Faster player speeds make it more likely, and thus techniques such as straferunning, rocket jumping, and/or wallrunning will increase the chance of it occurring.

This anomaly is occasionally exploited in speedruns as a time-saving or sequence breaking tactic.

Cause[edit]

Within the Doom engine, player movement occurs in increments, as discrete changes in X and Y position, from one gametic to the next. Provided all clipping checks pass, the player object is moved instantaneously, from their old position, to their new position, with the distance moved dependent on their speed.

After each such movement increment, the engine then checks which linedefs should be triggered. It first looks for linedefs which overlap the player's bounding box at the new position. It then determines which (if any) of those lines would be crossed during movement from their old position, and triggers the corresponding actions.

If the player's speed is such that their bounding box moves completely past a linedef in a single gametic, then the linedef is never considered for the would-have-crossed check: the line is skipped.

Interactions[edit]

Doom aligns bounding boxes orthogonally. Regardless of rotation (the angle the object is facing), the bounding box is aligned to the cardinal grid. As such, the bug is more likely to affect orthogonal linedefs. Mappers can reduce the chances of the bug happening by using non-orthogonal trigger lines.

Mappers can also repeat important triggers, such that even if one is skipped, the player will trigger the next.

A bug in the P_SlideMove function means it only checks for collisions for positive movements—movement to the north or east. Movement to the south or west is not checked. As such, it is easier to perform a line skip when moving west or south. Specifically, skipping past an orthogonal linedef in the negative directions (west or south) requires only a speed above 16 units per gametic, achievable through SR40. However, a skip in a positive direction (north or east) requires a speed above 32 units per gametic, which is not easily attainable, as even SR50 combined with a rocket jump does not achieve these speeds.

Wallrunning makes skips in the positive directions require a minimum of speed 16 units per gametic too, which notably makes it possible to grab the normally unobtainable BFG9000 on Scythe MAP31.

Unrelated behaviors[edit]

Despite the name noclip bug, it is not actually associated with clipping. Clipping is the process of checking if an object's bounding box will intersect with an object that would block movement (such as a wall or other object). Linedef triggers are considered in a separate process from clipping. It is likewise unrelated to the no-clipping cheat codes.

Other behaviors with some similar effect but separate cause include:

Sources[edit]

See also[edit]

External links[edit]