ZenNode is a project I started a few years back while playing around with DOOM by id Software. There were quite a few programs that would allow you to edit and create your own levels, but most of them seemed to have problems generating the correct data structures for the game to play them properly. I found a few that would do the job correctly, but they were way too slow. So, I decided to write a program that would generate the structures correctly and quickly. After all, if you're developing levels for DOOM, you don't want to spend a lot of time running tools, you want to play!

It's been a while since I first released ZenNode, but I will continue to support it for as long as I can. There is still a surprisingly large DOOM fan base out there and lots of DOOM variants since id released the source code to DOOM.

What's New

*NEW* 28-Aug-2004

New Mac OS X support! While I've been busy making mars a safer place for mankind ;), Christian Peppermueller has been busy getting ZenNode working on the Macintosh platform. He has built a native version of Zennode for Mac OS X and created a Drag&Drop GUI for invoking ZenNode. For more information, the documentation can be found here and the complete package can be found here.

Disclaimer: I take no responsibility for any contributed files. All files in the contributions directory are supplied as-is. If you have any problems/questions about a contributed package, please contact the author of the package.


ZenNode v1.2.1 - Well, it was out for 1 day before the first bug report came in (thanks Jive). It appears that there has been a bug in ZenNode since the very beginning that only appears on very large maps. Because of the 16-bit design of the .wad file data structures, there are some limitations placed on the overall size and complexity of maps that can be created for DOOM. Because of it's design, the BLOCKMAP is particularly sensitive to large area maps. It appears that most editors (and at least one Node builder) don't detect this condition and produce an invalid BLOCKMAP. Starting with this release, Zennode will no longer generate a BLOCKMAP for any map that is too big to be handled properly. Further, it will no longer crash when building the REJECT table for such a map (although, without a proper BLOCKMAP, this may be a moot point). So, if you're making maps, be sure to check the BLOCKMAP with ZenNode before you get too far along and have to move or delete large sections of your map.

Note: ZenNode will continue to build a BSP tree and REJECT map even though it is unable to create a valid BLOCKMAP. It will leave the existing BLOCKMAP (if it exists) untouched. If ZenNode displays a warning about the BLOCKMAP and you experience problems while playing the level, you're on your own. As a general guideline, if your BLOCKMAP is approaching 128K in size, you've reached the upper limit for the size of your map.


ZenNode v1.2.0 - Well, it's been a while since the last release. There haven't been too many bug reports, so I haven't spent too much time working on ZenNode. Since there may not be too many more releases coming, I thought I'ld release the things that I had been playing around with. First, as you may have heard, ZenNode now accepts RMB option files. This is not a complete implementation of RMB, but it does provide a useful subset. The other significant change is in the REJECT builder. The new REJECT builder makes much better use of graphs than the previous versions (Note: See the README file for possible problems using graphs). Other improvements are minor bug fixes, x86-64 support, and a slightly revamped NODES builder.


ZenNode v1.1.0 - ZenNode's got minor version update! There are finally enough changes since v1.0 to warrant the change (it probably should have been bumped back around v1.0.6/v1.0.7 but hey...).

ZenNode has switched to using floating point math in the BSP builder. This means ZenNode is slower than it has been (sorry), but it also means that it is more accurate. This change was necessary to avoid problems with newer OpenGL ports of DOOM that use floating point internally.

This release fixes most causes of holes in ceiling/floor textures in OpenGL games. It should also handle .wad files with Fragglescripts properly.


  • All the source code is included under the GPL.
  • 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.
    • Add special effects using an RMB option file.
  • Extract maps to a new PWAD file.
  • Merge multiple maps into a single .WAD file.
  • Supports even the largest mega-levels.
  • Automatic detection of special effects in the REJECT structure. If special effects are found, the REJECT structure will not be rebuilt unless explicitly requested.


  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 (4.0, 2000, or XP)
    • A Macintosh running Mac OS X
    • No longer supported: DOS
    • No longer supported: Any 16-bit Windows platform (Windows 3.x or Windows for Workroups)
    • No longer supported: OS/2
  3. A .WAD file