PrBoom+

PrBoom+ (also PrBoom-plus) is a source port based on PrBoom. GLBoom+ is a common name for a build of PrBoom+ compiled with OpenGL support. It is developed by Andrey Budko (entryway).

PrBoom+ is based on the PrBoom 2.5.x line of development. It can currently be compiled in POSIX, Windows and Mac OS X environments. The current version is, released on. The project saw its first developments in 2004, starting off as an unnamed PrBoom modification, but after gaining numerous additions over PrBoom it eventually adopted the separate PrBoom+ title in 2005.

PrBoom+ features
In addition to all PrBoom features, PrBoom+ offers
 * Chasecam for demo playbacks
 * Changing the speed of the game in-game (for demo playback, recoding TAS demos, and for just playing at different speed)
 * Automatic loading of WADs necessary for playback, chosen by demo name or by information present in demo file (if recorded with PrBoom+)
 * Accurate Doom v1.2 emulation if needed during demo playback or requested by user
 * Support for DeePBSP and ZDBSP extended nodes
 * Support for the MUSINFO lump shared with Risen3D, ZDoom and GZDoom
 * OPL emulation
 * Speed optimisations for very large levels, compared to PrBoom
 * Customizable HUD with the -PRBHUD- lump

OpenGL mode features
In addition to all aforementioned PrBoom+ features, in OpenGL mode PrBoom+ can also use:
 * ZDoom-style high-resolution textures/flats/sprites (replacements located between HI_START and HI_END markers).
 * GZDoom-style skyboxes through the GLDEFS lump (or its alias GLBDEFS)
 * Optional animation blending for animated flats and textures, similar to ZDoomGL
 * Optional free look (though aiming is not affected and autoaim behaves as if the line of sight remained horizontal)
 * Details textures (also defined in GLDEFS lump)

Detail texture definition
A detail texture is defined in a GLDEFS text lump. The syntax is as follows: detail {  (walls | flats) [default_detail_name [width [height [offset_x [offset_y]]]]] {    texture_name [detail_name [width [height [offset_x [offset_y]]]]] } }

Where detail_name is a bmp/png/tga/jpg/pcx/gif lump between the HI_START/HI_END markers. You don't need to add the texture to TEXTURES1. Default values are (width:16 height:16 offset_x:0 offset_y:0)

Example:

detail {  walls smooth01 32.0 //default detail for walls (width = 32, height = 16, offset_x/y = 0) {    brick7  detstone 64.0 64 10.532 brick8 detail02 // detail02 16 16 0 0 water1 // do not apply default detail to water water2 water3 water4 }  flats // no default detail for flats {    grass1 Grass01 32 32 NUKAGE1 detslime 16 16 0 0 // different offsets for animated flats make sense NUKAGE2 detslime 16 16 4 4 NUKAGE3 detslime 16 16 8 8 } }