ZenNode - Possibly the fastest DOOM(tm) BSP builder yet.

by Marc Rousseau

NOTE: This page is designed to use CSS styles - you may want to upgrade your browser.


Background

After playing around with a few level editors for DOOM, I noticed that most of them took a long time to build the NODES structure.  Even worse, some of them built NODES that didn't work!  So, I decided I'd try writing a NODES builder that 1) built valid NODES and 2) built them FAST.  Well, after a month or two of fooling around, ZenNode is here.  I believe both objectives have been reached.  I've compared it to several other NODES builders out there and it blows them all away!  It's written entirely in C/C++.  It could probably be sped up with a little assembly code (or a better optimizing compiler).

The .zip file contains a fully functional BLOCKMAP, NODES, and REJECT builder for DOOM .WAD files.  ZenNode will rebuild either a single level or all the levels in a .WAD file.  ZenNode will accept either DOOM, DOOM II, Heretic, and/or HEXEN .WADs.  Try it out. Let me know what you think.

Description

ZenNode will read the level description from a .WAD file and create either a new BLOCKMAP resource, REJECT resource, and/or NODES/SEGS/SSECTOR resources.  Levels in a .WAD may be specified on the command line, or, if none are specified, all of the maps in a .WAD will be rebuilt.

As it completes a resource, ZenNode will print information indicating the results.  When a BLOCKMAP is completed, it will display the new/old size of the block map and a percentage of the block map that is actually used by the map.  After it rebuilds the BSP tree, it will display the number of new/old NODES and SEGS that it created along with the original numbers.  For the REJECT resource, it displays the new and old efficiencies (higher numbers mean less work for the game engine at run time).

Features
  • Rebuild the BLOCKMAP resource - compressed or uncompressed.
  • Fast, customizable BSP tree generator.
    • Select from 3 different partitioning algorithms.
    • Control the parameters the algorithms use to select the partitions.
    • Indicate which LINEDEFs should be ignored by the BSP tree.
    • Select LINEDEFs/SECTORs that should not be split.
    • Specify whether or not a specific SECTORs must remain unique.
  • Rebuild the REJECT resource.
    • Insert a zero-filled resource.
    • Do a complete line-of-sight test for every sector.
  • Extract maps to a new PWAD file.
  • Merge multiple maps into a single .WAD file.
Requirements
  1. A machine capable of running DOOM - 386 or better with a few Megs of RAM
  2. A supported operating system:
    • Linux (or any other *nix platform that supports the g++ compiler)
    • Any PC-based Win32 platform (Windows 9x, Windows ME, Windows NT, or Windows 2000)
    • No longer supported: DOS (v?.?? or higher - tested with 5.0 & 6.22)
    • No longer supported: a 16-bit Windows platform (Windows 3.x or Windows for Workroups)
    • No longer supported: OS/2 v2.0 or higher
  3. A .WAD file
Acknowledgments

DOOM & DOOM II are trademarks of id Software, inc.,(C)1994.
Heretic & HEXEN were developed by Raven Software for id Software.

  • Thanks to the guys at id Software for creating DOOM.
  • Thanks to Raven Software for putting out Heretic & Hexen.
  • Matt Fell and everyone who helped put together the unofficial DOOM specs.  This program was written entirely from the descriptions in this file and wouldn't have been possible without it.
  • Jens Hykkelbjerg for permission to include spcial2b.wad and for creating RMB - the only other REJECT builder I'm aware of that can generate a 'perfect' REJECT resource.
  • Everyone that has sent me bug reports or pointed out problems with ZenNode.  Special thanks to:
    • Jens Hykkelbjerg - helping me verify the REJECT builder
    • Jean-Yves "Jive" Delpech - too many wads and mega-wads to mention
    • and many more... (sorry if I forgot to include you)
Disclaimer

I've tested the .WADs generated by ZenNode and haven't found any fatal or HOM (Hall-of-mirrors) side effects from any level I've tested.  However, by using this program you assume all responsibility for lost/damaged files resulting from the use of a .WAD generated by ZenNode.  If you find a level that causes either an error in ZenNode, HOMs, or any other problem inside DOOM, DOOM II, Heretic, or Hexen please let me know.  (Please indicate which ZenNode version you are using and what OS & version - i.e.: v0.97 running on OS/2 v3.0).