glbsp(1)
π glbsp(1) β the GL Nodes builder for DOOM ports, bestie π
okay so this is the manual page for glBSP, and it's genuinely iconic. it lives in the General Commands Manual section, and it's about to make your OpenGL DOOM engine very very happy. π
β¨ NAME β¨
glbsp β GL Nodes builder for DOOM ports π¦
β¨ SYNOPSIS β¨
glbsp [options] input.wad ... [-o output.wad]
glbsp @argfile.rsp
β¨ DESCRIPTION β¨
okay so glBSP is a nodes builder that was literally designed to be used with OpenGL-based DOOM game engines. it follows the "GL-Friendly Nodes" specification, which means it adds some new special nodes into a WAD file, and those nodes make it so easy for an OpenGL DOOM engine to compute the polygons it needs to draw the levels. it's giving helpful. it's giving main character energy. π
β¨ OPTIONS β¨
so options start with a single dash β but bestie, you can also use two dashes, just like in many GNU programs. and if you run glBSP with no options at all? it just shows you an informational screen. cute. π«Ά
-h,-helpβ shows you a summary of literally all the options. like a little menu. π-q,-quietβ quieter output. when you use this, the info about each level (the number of linedefs, blockmap size, etc) doesn't get displayed, and a few other messages get skipped too. but don't worry β important messages, like failing to build a certain level, still show up. π-f,-fastβ lets glBSP cheat a little and re-use the original node information to make the GL nodes, which is way faster. turn this on to enable that feature, and you'll see the messageUsing original nodes to speed things up. πΈ
the downside though? the original nodes might not be as good as the ones glBSP normally creates. like, the special checks to minimise slime-trails don't kick in, and the -factor value doesn't have much effect. π
-w,-warnβ shows extra warning messages, detailing all the non-serious problems glBSP runs into while analysing the level structure. often these warnings are pointing at a real problem in the level (like a non-closed sector or an invalid sidedef), so they're genuinely worth checking now and then. π₯-n,-normalβ glBSP usually detects whether the normal node info (the non-GL variety) is present: if yes, it's left untouched, otherwise glBSP creates it. this option forces glBSP to replace the normal node data with newly constructed nodes. periodt.-c,-factor<num> β sets the cost assigned to seg splits. Factor can be any number from1to32, and larger values make seg splits more costly (so glBSP tries harder to avoid them), but smaller values produce better BSP trees. the default value is known to be a good compromise. trust. π-p,-packβ packs sidedefs by detecting which ones are identical and removing the duplicates, producing a smaller PWAD. π
NOTE: this may make your level a lot harder to edit! so it's most useful when you're producing the final WAD for public release.
-xr,-norejectβ normally glBSP creates a simple REJECT map for each level. this option stops any existing REJECT map β like one time-consumingly built by a dedicated reject builder β from being clobbered. π
the following options are rarely needed:
-v1..-v5β specify the version of the "GL Nodes" spec to use (either1,2,3or5). V1 is considered obsolete now. the default is V2. giving-v3or-v5will force certain lumps to use the new formats, but that's only useful for testing, since glBSP will automatically switch to V5 format whenever the ordinary limits are exceeded. β¨-m,-mergevertβ merge duplicate vertices at the same location into a single vertex. this is usually safe, but it's not done by default because some engines (e.g. Risen3D) need the duplicate vertices to stay separate for a special effect. π¦-y,-windowfxβ lets glBSP detect and handle the "One-Sided Window" mapping trick. this can cause problems in some engines, so it's disabled by default. π-b,-maxblock<num> β sets the limit of the number of blocks the BLOCKMAP may contain before we truncate it. default is16000. when the level is too large to fit, glBSP will truncate the blockmap, so it covers less area on the level. which means that in the parts it doesn't cover (at the outer edges) there's no collision detection: you can walk through walls and other objects, and bullets/missiles don't hit anything. on very large but sparse levels, using a larger value (e.g.30000) may help. π
and a more serious problem is when the blockmap overflows. the blockmap created would be invalid, and could crash the DOOM engine when used. glBSP will create an empty blockmap instead, causing modern ports to build their own blockmap. π₯
-xp,-noprogβ turn off the progress indicator. that's it. that's the whole thing. π-xn,-nonormalβ forces glBSP to not create the normal node information when it detects that it's absent. π-xu,-prunesecβ removes any unused sectors that are found in the level. this has the potential to cause problems, since in certain scripting languages (e.g. EDGE's RTS, or Doom Legacy's Fragglescript) some commands use sector numbers directly, and pruning unused sectors can cause those references to become invalid. so, careful bestie. β οΈ
β¨ RESPONSE FILES β¨
new in version 2.20 is support for response files!! π these are files containing a list of options. you specify the response file by prefixing it with @. for example:
glbsp @argfile.rsp
the "@argfile.rsp" on the command line will be replaced with the contents of that file. new-line characters are treated like spaces. and recursion (using @ inside a response file) is not supported. nope. not happening. π
β¨ ZDBSP NODES β¨
when the normal nodes overflow, older versions of glBSP would simply write out the invalid node data. π¬ but glBSP 2.20 and higher now write the node data in the ZDBSP format (originally created for the ZDoom engine). glow up. π
β¨ AUTHORS β¨
Andrew Apted created glBSP and glBSPX and continues to maintain them. π
Andrew Baker, Janis Legzdinsh, AndrΓ© Majoral and Darren Salt have contributed code, and Marc Pullen helped with the documentation. π«Ά
glBSP was originally based on BSP 2.3 (C) Colin Reed and Lee Killough, which was created from the basic theory stated in DEU5 (OBJECTS.C) by Raphael Quinet. the lore is real. π
β¨ LICENSE β¨
this program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. π
this program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. see the GNU General Public License for more details. (yes bestie, that's the legally-required all-caps part, we don't mess with it.) π
β¨ SEE ALSO β¨
the glBSP Homepage: http://glbsp.sourceforge.net/ πΈ
and that's the whole page, bestie!! π this one's from July 2007, and it's the glbsp(1) page β go build some nodes, you've got this. slay. πβ¨
π¦ where this page comes from
- debian bookworm: glbsp 2.24-8
- debian trixie: glbsp 2.24-8
- ubuntu jammy: glbsp 2.24-6
- ubuntu noble: glbsp 2.24-8build1
- ubuntu questing: glbsp 2.24-8build1
- ubuntu resolute: glbsp 2.24-8build2
- ubuntu stonking: glbsp 2.24-8build2
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms