Doom Builder

From ZDoom Wiki
Jump to: navigation, search
DoomWiki.org
For more information on this article, visit the DB2 page on the Doom Wiki.
Doom Builder 2 (r1715) displaying a section of MAP14 from Doom 2

Doom Builder is a Doom level editor with full support for ZDoom editing, including the "Game-in-Hexen" and "Game-in-UDMF" map formats. It is being developed by Pascal vd Heiden (alias CodeImp) and is free software, licensed under the terms of the GNU General Public License. Popular features include lots of customizability, prefabs, advanced drawing code, and a 3D mode that lets you browse and edit your levels in real time.

See also the Doom Builder ACS configuration.

The current version of Doom Builder is Doom Builder 2, a total rewrite. The last version of Doom Builder 1 is 1.68.

Doom Builder

The original Doom Builder was written mostly in Visual Basic. It can run on Windows 98, 2000, or XP, but not on newer versions of Windows (Vista, 7 and above). It can be used to create maps in the Doom and Hexen formats; but it is generally outdated and unsupported. It is able to parse DECORATE lumps to find custom actors, and also supports graphics defined in TEXTURES.

Doom Builder 2

A complete rewrite in C#, DB2 (or Doom Builder 2) was the first map editor to support UDMF in addition to the older binary map formats. Doom Builder 2 requires, at minimum, Microsoft Windows XP, but it is crucial to have Microsoft .NET Framework 3.5 installed within the system - regardless of the Microsoft Windows version.

GZDoom Editing Plugin

An alternate version of the 3D visual mode, which was never completed. It shows 3D floors and slopes. It has been replaced by GZDoom Builder, which does not use it.

Doom Builder 64

A fork of DB2 specialized on creating maps for DoomWikiLogoIcon.pngDoom64 EX. It cannot be used to edit maps in the formats supported by ZDoom.

GZDoom Builder

Another fork of DB2 specialized on creating maps for ZDoom and GZDoom. It boasts enhanced support for ZDoom features such as showing slopes, 3D floors, and dynamic lights in visual mode, displaying models, and parsing MAPINFO, GLDEFS and MODELDEF lumps in addition to DECORATE to obtain the data it needs to give an accurate preview of the level in 3D mode.

GZDB-Bugfix

A fork of GZDoom Builder mainly meant to keep the editor up-to-date with the latest GZDoom once author of the original editor left the community.

DECORATE keys

Both versions of Doom Builder include a DECORATE parser used to obtain relevant information (such as editor number, Radius, Height, Scale, and so on) from custom actors. Additional information can be conveyed with keys in the form of special comments inserted within an actor's declaration block:

//$Angled
//$NotAngled
(GZDoom Builder only) (SVN build r2328+ only)
Specifies whether the direction matters (angled) or not. Things that are not angled are represented without a direction arrow.
//$Category <category>
Specifies in which category (Monsters, Weapons, etc.) it should be sorted. By default, a custom actor not identified in a configuration file will be put in the Decorate category. GZDoom Builder r2329+ supports hierarchical subgroups, using the backslash separator. For example, //$Category "Decorations/Tech" will put the actor within the "Tech" subgroup of the "Decorations" group.
//$Sprite <sprite>
Specifies which sprite to use to represent the actor in the editor. By default, a custom actor not identified in a configuration file will use the first suitable sprite it finds in the actor definition, trying first the states in the sequence Idle, See, Inactive, Spawn, and if all these fail, the first defined state. This key is therefore especially useful for stateless actor definitions.
Keep in mind that this sprite name must match an image in the wad (i.e., if the sprite in your wad is named JUNKA0D0, you need to put JUNKA0D0, JUNKA0 won't work).
//$Title <title>
Specifies which name to give to the actor. By default, a custom actor not identified in a configuration file will use the Tag property, and if not present, will default to the class name.
//$IgnoreRenderstyle
(GZDoom Builder only) (SVN build r2518+ only)
RenderStyle DECORATE property will be ignored by the editor. Helpful when you want to see the sprite of an invisible actor in Visual mode.
//$ClearArgs
(GZDB-Bugfix only) (Git build r2923+ only)
Clears inherited arguments (from either game configuration or parsed ZScript/DECORATE base classes).
//$ArgN <name>
(GZDoom Builder only) (SVN build r2219+ only)
Allows to override default argument names for this actor. N is the argument number, ranging from 0 to 4.
//$Arg0Str [alternate name]
(GZDB-Bugfix only) (Git build r2919+ only)
Allows to mark this actor as supporting arg0str in UDMF format. Alternate name can be specified for when string version is used (in a similar way to "Script number"/"Script name").
//$ArgNDefault <integer>
(GZDoom Builder only) (SVN build r2326+ only)
Allows to set the default value for this argument. This property can only be used in conjunction with "//$ArgN" property. N is the argument number, ranging from 0 to 4.
//$ArgNTooltip <name>
(GZDoom Builder only) (SVN build r2313+ only)
Allows to override tooltip for the argument of this actor. Newline character ("\n") can be used to format the text. This property can only be used in conjunction with "//$ArgN" property. N is the argument number, ranging from 0 to 4.
//$ArgNType <integer>
(GZDoom Builder only) (SVN build r2325+ only)
Allows to specify an argument type for this argument. This property can only be used in conjunction with "//$ArgN" property. N is the argument number, ranging from 0 to 4.
Supported values are:
  • 0 = Integer (default)
  • 4 = Action special
  • 5 = Sector effect
  • 8 = Angle in degrees
  • 10 = XXRRGGBB color
  • 11 = Enum option
  • 12 = Enum bits
  • 13 = Sector tag
  • 14 = Thing tag
  • 15 = Linedef tag
  • 22 = Byte angle
  • 23 = Thing Radius
  • 24 = Thing Height
//$ArgNEnum <string or structure>
(GZDoom Builder only) (SVN build r2325+ only)
Allows to specify an enum for this argument. This can be either a name of an enum defined in the Game Configuration, or an explicit enum definition. This property can only be used in conjunction with "//$ArgN" property. N is the argument number, ranging from 0 to 4.
//$ArgNRenderStyle <style>
(GZDoom Builder only) (SVN build r2674+ only)
Allows to specify visual representation for this argument when event lines are enabled, much like visual radius for dynamic lights.
Supported values are Circle and Rectangle which result in that shape with the argument used for shape's radius.
//$ArgNRenderColor <color>
(GZDoom Builder only) (SVN build r2674+ only)
Allows to specify a custom color for "//$ArgNRenderStyle". The color is specified as RRGGBB hexadecimal value.
//$Color <color index>
(GZDoom Builder only)
Allows to override category color for this actor. Possible values:
Index Config Name System Name   Index Config Name System Name   Index Config Name System Name   Index Config Name System Name
0 ██ Dark Gray DimGray 5 ██ Magenta DarkViolet 10 ██ Light Green LimeGreen 15 ██ White WhiteSmoke
1 ██ Blue RoyalBlue 6 ██ Brown DarkGoldenrod 11 ██ Light Cyan PaleTurquoise 16 ██ Pink LightPink
2 ██ Green ForestGreen 7 ██ Gray Silver 12 ██ Light Red Tomato 17 ██ Light Orange DarkOrange
3 ██ Cyan LightSeaGreen 8 ██ Light Gray Gray 13 ██ Light Magenta Violet 18 ██ Light Brown (default) DarkKhaki
4 ██ Red Firebrick 9 ██ Light Blue DeepSkyBlue 14 ██ Yellow Yellow 19 ██ Orange Goldenrod
//$Obsolete <reason>
(GZDoom Builder only) (SVN build r2412+ only)
Marks the thing as obsolete. It will be detected by "Check obsolete things" Map Analysis Mode check and will be marked in the Thing Properties Window and the Thing Info panel.


Additionaly, you can use the following special comments in the global block:

//$GZDB_SKIP
(GZDoom Builder only) (SVN build r2245+ only)
DECORATE parser will stop parsing a file after encountering this comment. This can be used to speed up the parsing process by skipping files which do not contain placeable actor definitions.

Example

Note: It is a good idea to include the Doom Editor Number after the actor definition if you want it to show in Doom Builder, even if it is replacing a standard Doom actor.

ACTOR ChexShield : ResistanceRune replaces ResistanceRune 5104
{
  //$Category "Pickups/Chex Powerups"
  //$Sprite ARMXA0
  //$IgnoreRenderstyle
  //$Title "Chex Shield"
  //$Color 12
  //$NotAngled
  //$Obsolete "That's a strange powerup. Consider replacing it with something else..."

  //$Arg0 "Respawn Delay"
  //$Arg0ToolTip "Positive values specify delay in tics.\nNegative - in seconds."

  //$Arg1 "Enum Example 1"
  //$Arg1ToolTip "Config enum example"
  //$Arg1Type 11
  //$Arg1Enum "keys"

  //$Arg2 "Enum Example 2"
  //$Arg2ToolTip "Explicit enum example"
  //$Arg2Type 11
  //$Arg2Enum { 1 = "First option"; 2 = "Second option"; 667 = "Option 667"; }

  //$Arg3 "Radius"
  //$Arg3Type 23
  //$Arg3Default 32

  //$Arg4 "Height"
  //$Arg4Type 24
  //$Arg4Default 64

  Height 44
  Radius 26
  RenderStyle None
  Inventory.PickupMessage "Picked up the energized Chex armor!"
  States
  {
  Spawn:
    ARMX A 1
    Loop
  }
}

//$GZDB_SKIP
ACTOR SuperGiantImpBall : DoomImpBall
{
  Scale 4.0
  Damage 30
}

Forum links

External links