# ZenNode - Possibly the fastest DOOM™ BSP builder yet.

by Marc Rousseau

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

ZenNode supports a customization file to allow more flexibility in the BSP generating process. This file allows you to specify:

- LINEDEFS that should be ignored when creating the initial SEGS lists.
- Whether or not a specific SECTORS must be unique within a SSECTORS.
- LINEDEFS/SECTORS that should not be split (can't be guaranteed).

NOTE: The last item currently will only work when using the minimum-depth algorithm (-n2). The default & fast algorithms (-n1 & -n3) don't check these flags. The other two entries work with all algorithms. (If you find yourself using the no-split options frequently, you may want to create a ZenNode.cfg file with the -n2 option set as your default.)

The information in this file will overide any options that have already been specified. For example, if -nu- is being used, the customization file may overide this and require all sectors be unique. The file is a simple ASCII file, similar to a MS-Windows™ .INI file. The format is as follows:

>     [MAPxx] <- or [ExMx]
>     [ignore-linedefs]
>     xxx
>     [dont-split-linedefs]
>     xxx
>     [dont-split-sectors]
>     xxx
>     [unique-sectors]
>     xxx

The name of the customization file should match the name of the .wad file it applies to. Each file may contain multiple [MAPxx] sections. Any section that is not needed does not need to have an entry in the file. The current directory is searched, then the directory containing the .wad file.

Each line in a particular entry is one or more of the following:

- all - all objects in the wad will be affected.
- x - the specified object is affected (indices start at 0).
- y-z - applies to all objects starting at y up to and including z.

Any line may be preceded by a '!' to indicate that the appropriate effect is NOT to be applied to the indicated objects. Multiple entries can be placed on one line seperated by a comma. (i.e.: 5-9,15,20,300-310).

USES:

Special Effects - Some special effects can not normally be mixed in a .wad file. One example is the 'deep-water-effect' and the 'invisible-door' effect. ZenNode's default settings usually allow the 'deep-water-effect' to work correctly, but the 'invisible-door' messes up. Conversely, if you get the 'invisible-door' to work, the 'deep-water-effect' messes up. Now you can get both to work in the same .wad file.

How it works: the 'deep-water-effect' requires the -nu switch, while the 'invisible-door' requires the -nu- switch. By defaulting to the -nu switch and using the customization file to specify the specific sectors that do not need to be unique (the two sectors on the inside of the door), you can get them both to work in the same wad. For example, if you had a .wad file named pooldoor.wad, the following file (pooldoor.zen) would solve the problem (assuming that the sector referenced inside the 'invisible-door' were 95 & 97).

>     <begin pooldoor.zen>
>     [MAP01]
>     [unique-sectors]
>     !95
>     !97
>     <end pooldoor.zen>

******** THIS SECTION IS UNDER CONSTRUCTION ********

2) PolyObjects in Hexen - There are two ways to use this file for the PolyObjects in Hexen. The first is to use the [ignore-linedefs] section to exclude the linedefs that initially contain the polyObjs (NOT the polyObjs themselves!). This will reduce the size and complexity of the BSP tree and make it build faster too!

The second is to make sure the region where a polyObj is going to be placed/move is not divided by the NODES builder. By creating a non-convex sector on the map and listing that sector in the [dont-split-sectors] section (or listing each linedef in the [dont-split-linedefs] section). This is a request that sectors and/or linedefs marked this way not be split. This may not be possible, given previous choices of partition lines. However, ZenNode will attempt to avoid splitting them whenever possible. Ensuring that the sectors specified are non-convex should improve the odds of this happening.

******** END OF CONSTRUCTION *********

3) ????

These are a few of the obvious uses for these options. Others might include trying to effect the BSP tree directly by requiring selected linedefs not be split. Others will probably be discovered by trial and error. So, try it out and see what happens.

Two sample .zen files have been included as a guideline for creating your own.