Z-clipping

From DoomWiki.org

Z-clipping refers to the behaviors of the Doom engine's physics with respect to interactions between objects at different vertical positions.

In the original implementation as utilized in Doom itself, solid objects may not overlap on the x-y plane even if they would not visibly or tangibly overlap given their stated heights and positions on the z axis. Doom features a limited z-clipping that is only designed for projectiles and hitscan attacks, and for allowing moving solid objects, like monsters, to be able to enter a sector depending on its floor and ceiling heights. Aside from that, a given thing's height or z-coordinates are largely ignored by the engine, causing actors to have apparently infinite height.

As a result, a player may stand on a ledge of 640 floor height, and a blocking decoration or monster standing just in front, on a floor of height 0, will completely block the player from jumping. In the case of monsters, and for a different reason, they are additionally able to perform their melee attack on the player successfully. Blast radius attacks, such as rocket explosions, also have an infinite vertical extent, the amount of damage they do being based only on horizontal distance.

Heretic and Hexen[edit]

Improved z-clipping was implemented in Heretic, and subsequently used in Hexen. In these games, the heights and z coordinates of solid objects are mostly obeyed when they move with respect to one another. This allows the player to move underneath flying monsters and walk over solid decorations.

This is used for example in E5M3 of Heretic where, to access a secret area, the player needs to jump down from a balcony to a row of barrels, and run along the barrels to pass through a window too high to otherwise reach. The Wings of Wrath artifact makes this extension especially important.

Raven Software's implementation was not without its own issues. One common problem is that flying monsters are occasionally able to lower themselves down into the heads of other monsters or even the player, causing the two to become stuck together. When this occurs with Gargoyles, the player will quickly die from the monster's melee attacks without activating cheats.

Strife[edit]

Strife independently implemented z-clipping as well, and its implementation is notoriously flawed. In addition to the various problems of Raven's implementation, the player is additionally unable to stand steadily on top of solid objects, since the game believes the player should be falling and is therefore constantly trying to pull his or her body to the ground via gravity. This creates an erratic "sliding" effect that causes the player to fall off. The game seems to use this limitation to its advantage, however, as it prevents using many objects as vertical shortcuts.

Due to their vertical hovering behavior, Sentinels often become glued to each other. Stalkers, which drop onto the player's head from above, may also become stuck and, like with Heretic's Gargoyles, they have a potent melee attack which can be performed at deadly speed which will kill the player within seconds.

Source ports[edit]

A largely flawless implementation of z-clipping first appeared in the ZDoom source port. It had been a goal during the implementation of Boom, but was aborted, with all of the code for it being removed just before the first v2.00 release of that port. The Eternity Engine initially experimented with the Raven code and with various independent implementations, but eventually abandoned them in favor of adapting the same code used by ZDoom.