Zone Builder is a map editor designed specifically for SRB2. It's based on GZDoom Builder, itself a comprehensive update of Doom Builder 2.
The source code can be found at https://git.do.srb2.org/STJr/ZoneBuilder.
If you've found a problem with Zone Builder, or want to make a feature request, please submit an issue to the repository if possible, or post a reply in the Discussion thread.
If you'd like to contribute to Zone Builder, please open a merge request on the repository.
Installing Zone Builder
Download the installer and run it. It will take care of all the necessary dependencies. On the off chance that something goes wrong, here's what you need:
- Microsoft Visual C++ 2008 SP1 Redistributable Package (x86) (required only by the Nodes Viewer plugin)
- Microsoft .Net Framework 3.5
- DirectX 9.0 Runtime
Using Zone Builder
If you have trouble mapping with this editor, you can check out SeventhSentinel's tutorial videos:
So you've tried the wiki's level design tutorial and your eyes are glossing over, and you don't know what to do. Well, fear not! I've got a playlist of videos that can help you learn the basics. Learn everything from how to draw your first...
09/04/2021 - v2.12 - Some improvements to Visual Mode and Thing editing
- Added feature: Several new actions for Visual Mode.
- Raise and lower Floor/Ceiling/Thing by the current grid size, bound to Alt+Shift+ScrollUp and Alt+Shift+ScrollDown by default.
- Toggle Peg Midtexture and Repeat Midtexture flags, bound to P and R by default.
- Added feature: Several actions from regular editing modes now also work in Visual Mode.
- Paint selection, bound to the middle mouse button by default. (Backported from Ultimate Doom Builder)
- Selecting only single- or double-sided linedefs.
- Added feature: Flag, angle and parameter labels can now be changed in custom object definitions, using the fields
- Added feature: Linedef and thing flags with changed labels/text are now highlighted, making it easier to see flags with special behavior for specific linedef actions or thing types.
- Added feature: The parameter value of a Thing is now easier to edit, and displays label changes outside of the Edit Thing window.
- Added feature: The flags value of a Thing is now visible outside of the Edit Thing window.
- Changed behavior: Things that use their Angle value for other uses, like slope vertices and polyobject anchors/spawnpoints, now keep the same value after being rotated. Make sure you have the latest version of the 2.2 configuration for this feature.
- Bugfix: Slope vertices with absolute heights (using parameter and flags value fields) now display properly in Visual Mode.
- Bugfix: Selecting middle textures in Visual Mode while holding Shift no longer wraps around to the opposite side. (Backported from Ultimate Doom Builder)
14/03/2021 - v2.11 - Flat alignment in 2D, toggle backside slopes, two bugfixes
- Added feature: Flat alignment now displays in classic (2D) editing modes.
- Added feature: Added Toggle Slope (Back) to allow sloping backside sectors in Visual Mode, bound to Ctrl+Alt+S by default.
- Bugfix: Fixed a regression with repeating midtextures in Visual Mode.
- Bugfix: Fixed some incorrect prefixes in the 2.2 config.
04/03/2021 - v2.10 - Some new features, some bugfixes, some config updates
- Added feature: Added the configuration file for 2.2, which has been updated as well. It's enabled by default in new installations, but if you updated an existing installation, you have to enable it manually under Tools -> Game Configurations (F6).
- Added feature: Comparison operators (>, >=, <, <=, ! or !=) can now be used when searching for numeric fields in Find and Replace Mode (F3). These operators and the texture name wildcards (* and ?) now have tooltips to explain their usage.
- Added feature: Zoom tube waypoint paths are now drawn on the map, which can be toggled alongside NiGHTS paths. They will display their sequence ID on the first waypoint, and any duplicate waypoints will be marked.
- Bugfix: Flat alignment now renders correctly in Visual Mode, thanks to Justburner's work on the ZBU fork.
- Bugfix: Testing from current mouse position now spawns the player at the correct height.
- Bugfix: Testing from current camera position in Visual Mode now works when there are multiple Player 1 starts.
- Changed behavior: Updated the SRB2Kart 1.x configuration file, again with thanks to Justburner.
- Changed behavior: The 2.1 and Top Down configuration files have been disabled by default.
- Changed behavior: A few default settings have been changed, to make more sense for SRB2 mapping and for general ease of use. Consider changing these manually:
- Visual Mode now uses the blockmap by default, trading a negligible loss of accuracy for a significant increase in speed and usability.
- Selections made in normal editing modes now sync with Visual Mode, and vice versa.
- Sound Propagation and Environment modes are now disabled by default, because they're useless for SRB2.
- Changed behavior: Checks for missing, unknown and unused textures in Map Analysis Mode (F4) are now unchecked by default, as they don't account for slopes or certain linedef actions properly.
16/12/2018 - v2.9 - SRB2Kart config and improved PK3 support
- Added feature: Added the configuration file for SRB2Kart. It's enabled by default in new installations, but if you updated an existing installation, you have to enable it manually under Tools -> Game Configurations.
- Changed behavior: The PK3 reader now looks for SOCs in the "SOC" folder rather than "SOCs", just like SRB2.
- Added feature: Added an option to draw Things at a fixed size in the 2D view, rather than scaling them with the zoom level.
- Added feature: Some additions to the config.
03/12/2017 - v2.8 - Two bugfixes
- Bugfix: Linedef flag settings are no longer lost when copypasting linedefs.
- Bugfix: Fixed a crash in the Tag Statistics window if you remove a tag label.
03/11/2017 - v2.7 - A bunch of stuff that has been sitting around for way too long
- Added feature: Added texture filters for SRB2's default textures (thanks a bunch to TehRealSalt!).
- Added feature: Colormaps and FOFs with tag 65535 (global) are now displayed in Visual Mode.
- Added feature: PK3s are now supported as resource files (but not as map files). ZB looks for patches in the directories "patches", "textures", "flats", "sprites" and "graphics". It also reads custom Thing definitions from SOCs (in the "socs" directory) and Lua scripts (in the "lua" directory). Right now PK3 support is irrelevant for you, dear v2.1 user, but come v2.2 this will be quite useful.
- Added feature: You can now specify a category for custom Things with the $Category keyword. It works just like $Name and $Sprite.
- Changed behavior: The custom Thing definition parser no longer throws an error when it can't read a single value. Instead, it throws a warning and continues parsing the rest of the file.
- Added feature: The custom Thing definition parser can now read addition in a very limited manner, so stuff like "16*FRACUNIT + 32768" will no longer throw an error.
- Added feature: The custom Thing definition parser now recognizes -- comments in Lua files.
- Added feature: The custom Thing definition parser now recognizes the flags MF_SOLID and MF_SPAWNCEILING. In particular, this means that Things with the MF_SPAWNCEILING flag are now displayed properly in 3D mode.
- Added feature: Added a nodebuilder configuration for normal ZenNode without REJECT. This might be useful for test builds on very large and complex maps, where ZenNode's fast setting produces errors.
- Bugfix: ZWADs are now rejected with an error message instead of crashing the program.
- Added feature: Added an option to disable the crosshair in 2D view.
- Bugfix: Fixed a bunch of typos in the config.
- Changed behavior: Changed the names of a few specials in the config that were bothering me. For example, monitors are now listed under "Monitors" instead of "Item boxes".
28/01/2017 - v2.6 - SRB2 Top Down config and bugfixes
- Added feature: Added the configuration file for SRB2 Top Down. It's enabled by default in new installations, but if you updated an existing installation, you have to enable it manually under Tools -> Game Configurations.
- Bugfix: When changing the offsets of a linedef with a repeating middle texture (either manually or with the auto-alignment tool), the multiples of 4096 that control how often the texture is repeated are no longer cut off.
- Bugfix: ZB no longer crashes if the loaded files contain multiple SOC/Lua lumps with the same name - it simply ignores all duplicates and prints a warning in the console.
- Bugfix: "Slope backside" linedef types with the No Knuckles flag now use the offsets of the back sidedef as they should, instead of the front sidedef.
- Bugfix: Thing angles outside of 0-359 are now recognized in Find/Replace mode.
- Bugfix: The ROIH and ROII versions of the Bustable Block Sprite Parameter sector types are no longer mixed up.
17/09/2016 - v2.5 - Updates for 2.1.16 and bugfixes
- Added feature: Various minor updates for 2.1.16, such as updating the Lua syntax highlighting and adding new slope-related linedef types and flags to the config.
- Changed behavior: Adapted the pegging behavior for lower textures with the Lower Unpegged flag, which was changed in 2.1.15.
- Bugfix: Fixed two issues with the Lua parser's $Name parameter: Spaces are now accepted in the name and there's no longer a ] at the end of every name.
- Bugfix: Fixed some issues with the skewing of upper textures on slopes.
- Bugfix: Colormap is now applied correctly to flipped Things.
- Bugfix: Indefinitely tiled middle textures with a vertical offset are now displayed correctly in 3D mode.
- Bugfix: Fixed a crash when creating a custom FOF with an invalid back upper texture.
- Bugfix: Fixed a crash when opening the edit window for a linedef with action 402 (aka the weirdest bug ever).
- Bugfix: Fixed some description errors with linedef type 414 in the config.
- Bugfix: Fixed several crashes in the Choose Thing Type window that happened when pressing certain keys while no Thing is selected.
- Bugfix: Thing angles outside of 0-359 are now preserved when copypasting or placing new Things.
- Bugfix: The BLOCKMAP and REJECT lumps are now deleted before nodebuilding to prevent outdated data from being loaded in-game and messing everything up.
24/05/2016 - v2.4 - Updates for 2.1.15
- Added feature: Various minor updates for 2.1.15, such as updating the Lua/SOC syntax highlighting and removing the "+ Slopes" from the config name
- Added feature: Colormap rendering can now be disabled in Visual Mode by pressing Alt+C.
- Added feature: You can now supply a name to be displayed in the editor for custom Things. This is done with the $Name parameter; the syntax is the same as for $Sprite.
- Added feature: Updated the codebase to revision 2501 of GZDoom Builder, so now I'm only 135 revisions behind instead of 144. :X
06/04/2016 - v2.3 - Lua and SOC support in the script editor, custom Things supports
- Added feature: The script editor now supports Lua and SOC scripts, with syntax highlighting and autocompletion. It will automatically open tabs for all SOC_ and LUA_ lumps in the currently loaded file, as well as for the MAINCFG and OBJCTCFG lumps (even if they don't exist yet). You can also create and edit standalone SOC and Lua files, but you can't add new script lumps to existing WADs (except for MAINCFG and OBJCTCFG in the currently loaded file), because Zone Builder isn't a lump editor and I don't plan for it to become one.
- Added feature: Zone Builder now automatically searches all Lua and SOC scripts in the currently loaded files for custom Thing definitions. These custom Things are then recognized by the editor and added to the list of Things. You can set the sprite that the editor displays for a custom Thing with a special comment; look here for an explanation.
- Added feature: You can now assign shortcuts for increasing/decreasing the number of Things and the radius in Insert Things Radially Mode. If you're updating from a previous version, you may have to set the shortcuts yourself, otherwise the default values are Ctrl+ScrollUp/ScrollDown for Increase/Decrease Number of Things and Shift+ScrollUp/ScrollDown for Increase/Decrease Radius.
- Bugfix: When testing a map, the temp file that contains potentially unsaved changes is no longer loaded if it's identical to an already loaded file. This was changed because SRB2 is stupid and refuses to start if it loads two identical files.
- Bugfix: Fixed a bug that caused offsets to be incorrectly applied to middle textures.
01/03/2016 - v2.2 - Texture skewing, Parameter, Insert Things Radially
- Added feature: Added support for texture skewing in 3D mode. If you're asking yourself "What's texture skewing?", see https://wiki.srb2.org/wiki/Slope#Texture_skewing for an explanation.
- Added feature: The Parameter property of Thing types is now recognized and can be edited in the Thing edit form. Things with the same type but a different parameter value are now recognized as having the same type.
- Added feature: Added Insert Things Radially Mode, which allows you to place a circle of Things in the map (useful for NiGHTS mapping).
- Changed behavior: When testing a map with unsaved changes, the game now loads the unsaved changes as well. If you have already set up a testing configuration, you will have to edit it for this to work: In the Testing tab of the Game Configurations window, check the "Customize parameters" box. In the Parameters field, add "%F" (with quotes) after -file "%AP".
- Changed behavior: Disabled the Visplane Explorer by default since it's useless for SRB2 and prone to crashes. You can re-enable it under Game Configurations -> Modes if you like crashes.
01/02/2016 - v2.1 - Bugfixes
- Bugfix: Creating and copypasting certain FOF control linedefs no longer crashes the editor.
- Bugfix: The nodebuilder is no longer invoked twice when entering 3D mode.
- Bugfix: Due to an oversight, the nodebuilder was called with the "Save" settings rather than the "Test" settings when entering 3D mode, which took much longer. This is now fixed.
- Bugfix: Entering 3D mode in a map with invalid nodebuilder data (for example a map with only one sector) no longer crashes the editor.
30/01/2016 - v2.0 - Skies, NiGHTS path, customizable Thing/linedef field descriptions, and lots more
- Added feature: Added an option to extend the crosshair in classic modes to the map boundaries.
- Added feature: The NiGHTS path (i.e. axis transfer lines and circles around axes) is now drawn on the map.
- Each mare is drawn in a different color; the colors are configurable under Preferences.
- There's a toolbar button for toggling NiGHTS path drawing, which you can bind to a key if you want.
- The precision with which the circles are drawn is configurable under Preferences.
- Each mare is drawn in a different color; the colors are configurable under Preferences.
- Added feature: Special Z position handling for NiGHTS item circles, axes and hoops in 3D mode.
- Added feature: The Flags value field for Things is now directly writeable (instead of having to manipulate flags and height seperately).
- Added feature: The game configuration now handles many game-dependent things, including the following:
- Marking slope/FOF linedef types and setting their properties.
- FOFs that change their properties when certain flags are checked are now always displayed correctly.
- The descriptions for linedef/Thing flags are renamed for linedef/Thing types where they have special significance. For example, the "Ambush" flag is renamed to "Float" for rings.
- For Things, the flags value and Angle description are also renamed where they have a special significance. For example, the Angle box is renamed to "Tag" for the slope vertex Thing.
- Thing types that float when given the Ambush flag are marked in the config and displayed as such in 3D mode.
- Thing types that ignore the Flip flag are marked in the config and displayed as such in 3D mode.
- Marking slope/FOF linedef types and setting their properties.
- Added feature: FOFs in 3D mode now support rendering planes and sides seperately.
- Added feature: Skies are now rendered in 3D mode, which can be toggled on and off.
- Added feature: The "Peg Midtextures" flag (see changed behaviour) is now recognised in 3D mode.
- Added feature: In the Testing tab of the Game Configurations menu, the skill level option has been replaced with skin and gametype option for SRB2 configurations.
- Added feature: Updated the codebase to revision 2492 of GZDoom Builder. Besides skies, the most notable addition on the GZDB side is that Find/Replace mode now allows you to search for floor and ceiling flats.
- Changed behaviour: The minimum segment length for the Draw Curve tool is now 1.
- Changed behaviour: Changed the "About Zone Builder" icon.
- Changed behaviour: Changed the uninstaller icon.
- Changed behaviour: Visplane Explorer is now available for SRB2 maps.
- Changed behaviour: "Copy Properties" tool is now available for SRB2 maps.
- Changed behaviour: The default texture for SRB2 maps is now "GFZROCK", the default flats are "GFZFLR01" and "F_SKY1".
- Changed behaviour: Updated the default flag names for Effects 1-5 to reflect their usage in the Public Next SRB2 repository.
- Bugfix: Prevented negative Thing heights for SRB2 maps (rollover led to them being extremely far off the ground in-game despite rendering properly in the editor).
- Bugfix: Raised maximum number of segs from 32767 (signed 16-bit) to 65535 (unsigned 16-bit), like it is in SRB2 (as a result, large maps no longer crash Visual Mode).
- Bugfix: Lumps in the same WAD file are not autocapitalised when saving a map (for those of you who want to recreate 1.09.4 and bundle terrible characters with your level packs).
- Bugfix: Now handles patch offsets properly (they are signed 16 bit integers, not 32 bit - someone messed up when defining the ACZ sky...).
- Bugfix: Removed the updater from new installs (my apologies to those who were curious and clicked on it - ending up with the latest version of GZDoom Builder instead of Zone Builder)
10/01/2016 - v1.1 - Mostly bugfixes and minor changes
- Added feature: .srb files are shown directly in the assets file picker, so you don't have to change the filter anymore to see them.
- Added feature: Added an "All Files" filter to the level and assets file pickers.
- Added feature: The number of maximum backup files is now configurable under Preferences -> Interface.
- Changed behavior: Slope vertices are now rendered so that their center intersects with the slope, rather than the bottom.
- Changed behavior: The selection isn't automatically cleared anymore in Visual Mode by default. You can re-enable this setting under Preferences -> Editing.
- Changed behavior: Linedef angles are now displayed like in SRB2 (0 degrees means the linedef goes from west to east).
- Bugfix: Vertex slopes are now always displayed correctly in Visual Mode. Unfortunately, this means that the nodebuilder is now run every time you enter Visual Mode with unsaved changes. It normally shouldn't take more than a few seconds even on large maps, but if you have issues with it, go to Preferences -> Editing and check "Use blockmap instead of nodes in Visual Mode". Note that this may cause some vertex-based slopes to be displayed incorrectly.
- Bugfix: Fixed an issue with repeating middle textures sometimes being displayed incorrectly.
- Bugfix: The orientation of rotated flats is now displayed correctly.
05/01/2016 - v1.0 - Initial release