ZokumBSP

ZokumBSP is an advanced node builder based on ZenNode 1.2.0. The changes are mostly in the blockmap generation code, leaving the other parts unchanged from ZenNode.

The project started out as an experimental fork of ZenNode, attempting to produce smaller blockmaps in order to allow for bigger doom2.exe-compatible maps. The other primary aspect was to update the code to fix bugs and oversights, and make ZokumBSP more robust. Errors when building big maps due to using 32 bit variables in instead of 64 bit variables have made it possible to handle bigger maps as well. Various lint-tools like Valgrind have also been used to fix minor errors in the original code base.

Roadmap
On the roadmap for future releases is further optimizations and convenience-additions. There are planned additions of features not seen in any other similar tools.

Features
As of version 1.0.9 the program supports the following parameters: Usage: zokumbsp {-options} filename[.wad] [level{+level}] {-o|x output[.wad]}

-x+ turn on option  -x- turn off option  * = default

-b[chio=0,1,2,3rsz=0,1,2g=0,1,2] * - Rebuild BLOCKMAP c             *   - Compress BLOCKMAP. h                 - Output BLOCKMAP data as HTML. i                 - Id compatible BLOCKMAP. Sets 'o=1n=2g=0' and 's-r-' o                 - Offset configuration. 0 = ZenNode 0,0 offset BLOCKMAP. 1 = DooMBSP / BSP 8,8 offset BLOCKMAP. *    2 = Best of 36 offset combinations. 3 = Heuristic method to reduce from 65536 offsets. 4 = Best of all 65536 offset combinations. x,y = Specify specific offsets. r             *   - Remove non-collidable lines from BLOCKMAP. s                 - Subset compress BLOCKMAP. z                   - Zero header configuration. 0 = No zero header. *    1 = Conventional zero header. 2 = Zero footer. g                 - Geometry simplification. *    0 = No simplification. 1 = Only if same sector. 2 = Also 1-sided lines in different sectors. b                 - Build big 32bit BLOCKMAP.

-n[a=1,2,3|q|u|i] * - Rebuild NODES a                  - Partition Selection Algorithm *    1 = Minimize splits 2 = Minimize BSP depth 3 = Minimize time q                 - Don't display progress bar u                 - Ensure all sub-sectors contain only 1 sector i                 - Ignore non-visible lineDefs

-r[zfgm]         * - Rebuild REJECT resource z                 - Insert empty REJECT resource f                 - Rebuild even if REJECT effects are detected g             *   - Use graphs to reduce LOS calculations m{b}              - Process RMB option file (.rej)

-t                 - Don't write output file (test mode)

level - ExMy for DOOM/Heretic or MAPxx for DOOM II/HEXEN

For a complete explanation of all the parameters read the project documentation, found on github respository and web site.

Case Studies
On the web page for ZokumBSP one can find a few case studies showing what different parameters and options can do for well-known maps and how this affects the size of the blockmap.