Visplane overflow

The visplane overflow (often abbreviated to VPO) is a fatal error that occurs in vanilla Doom when there are more than 128 unique floor and ceiling surfaces (visplanes) on the screen simultaneously.

Laying out a floor in a checkerboard pattern of alternating floor textures is the simplest way of triggering a visplane overflow. The demonstration level from April 1994 contains the earliest documented example of this (along with correspondence with id reporting the problem), although in earlier versions of the engine a hall of mirrors effect was triggered instead of a crash.

BSP v2.2 added features to detect and prevent visplane overflows, by changing how subsectors are laid out. It used a heuristic which was based on guesses about the true causes of visplanes, and which was tested against actual WADs, in some cases positively identifying the exact location the player would need to be to cause a visplane overflow. When the exact cause of visplane overflows was found and fixed -- after the release of the Doom source code -- BSP v3.0 removed the code which attempted to guess about them, and left only the code which helped prevent them from affecting earlier versions of Doom.

Hexen raised the visplane limit to 160; and Strife to 200. Boom removed the restriction altogether by replacing the visplane array with a hash of 128 linked lists of visplanes. Removal of the visplane limit is a standard feature of almost all modern source ports. For technical information about visplanes, see Doom rendering engine.

In the Classic Doom port which accompanies Doom 3: BFG Edition, the visplane limit is raised to 384 so as to accommodate No Rest for the Living.