DarkRadiant User Guide (2025)

Navigating the 2D view

The game world is a three-dimensional vector space with a central origin,rendered in the 2D editing window as a grid. The unit of measurement is anarbitrary game unit which does not directly correspond to any real-worldmeasurement system — in The Dark Mod, a typical human stands around 80 - 90game units high, making a game unit about 2 cm.

Each 2D window shows which axes it is representing with an icon in the top-leftcorner, as well as an identical icon at the <0,0,0> origin position, ifvisible within the view.

DarkRadiant User Guide (1)

Figure 1. Components of the 2D view

The 2D view also shows the current position of the camera (used for renderingthe separate 3D camera view window), and its view direction.

The following commands are available within the 2D view:

Right drag

Scroll the view horizontally or vertically

Mouse wheel

Zoom the view

Shift + Right drag

Zoom the view (alternative binding)

Ctrl + Middle click

Move the camera directly to the clicked position

Middle click

Rotate the camera to look directly at the clicked point

Ctrl + TAB

Change view axis (XY, XZ, YZ)

Ctrl + Shift + TAB

Center 2D view on current camera position

Adjusting the grid

The grid shown in the 2D view is used to snap the position and size of brushesand patches, as well as the centerpoints of entities. The size of the grid canbe configured, in powers of 2, from 0.125 up to 256, using the 1-9 keys on themain keyboard (not the numeric keypad), or the equivalent options in the Gridmenu.

The 0 key on the main keyboard can be used to toggle the display of the grid.Note that objects will still be snapped to the grid even if the grid is notvisible; this is purely a visual toggle.

DarkRadiant User Guide (2)Level geometry built from brushes and patches should always besnapped to the grid to avoid problems such as rendering glitches and map leaks.Static meshes and animated AI can be positioned more freely, however gridsnapping is a useful tool for ensuring that models are appropriately alignedwith the level geometry.

Customising the grid appearance

The appearance of the grid can be customised using the options in the Grid tab of the Edit→ Preferences dialog. Separate styles can be chosen for major and minor grid lines.

DarkRadiant User Guide (3)
Lines

DarkRadiant User Guide (4)
Dotted Lines

DarkRadiant User Guide (5)
More Dotted Lines

DarkRadiant User Guide (6)
Squares

DarkRadiant User Guide (7)
Dots

DarkRadiant User Guide (8)
Big Dots

Adding a background image

The 2D view is capable of showing a background image, which may be useful to show imagereferences, or sketched 2D maps to guide the placement of level geometry.

To show a background image, choose View → Background image…​ which will show thebackground image configuration dialog.

Use background image

Master toggle to show or hide the background image.

Image file

Click on the widget to show a file chooser which allows you to find and*select the background image to show.

Opacity

Drag the slider to control the opacity of the image, from fully transparent*(invisible) to fully opaque.

Scale

Adjusts the size of the image.

Horiz. offset

Adjusts the position of the image from left to right.

Vert. offset

Adjusts the position of the image from top to bottom.

Keep aspect

If checked, the image will always be displayed at its native aspect ratio.If unchecked, the image will have the same aspect ratio as the containing 2D view.

Zoom with viewport

If checked, the image will change size as the 2D view is zoomed in orout. If unchecked, the image will always have the same size regardless of the 2D windowzoom.

Pan with viewport

If checked, the image will be anchored in 2D space, and will stay inthe same position relative to the world as the 2D view is panned. If unchecked, the imagewill always have the same position relative to the window, and the world geometry will panaround it.

Using the 3D camera view

The 3D camera view provides an approximate rendering of the map in threedimensions, in several different render modes: wireframe, flat shaded, textured,and fully lit by in-game light sources. While the 2D view is the main interfacefor creating and aligning level geometry, the 3D view is a vital tool for taskssuch as texturing, or configuring light parameters.

DarkRadiant User Guide (9)The fully lit rendering mode in DarkRadiant is not identical to whatthe game engine will ultimately render. Certain advanced rendering features suchas reflections and fog lights are not currently supported.

The 3D camera view provides its own toolbar which can be used to configurevarious display settings.

Render modes

DarkRadiant User Guide (10)

Render in wireframe mode

Render objects as wire meshes.

DarkRadiant User Guide (11)

Render in flat-shaded mode

Render objects as coloured solids, without textures or lighting.

DarkRadiant User Guide (12)

Render in fullbright textured mode

Render objects as preview textures, with no lighting or material effects such astransparency.

DarkRadiant User Guide (13)

Render in lighting preview mode

Render all available lighting and texture effects.

DarkRadiant User Guide (14)

Toggle shadow rendering

Enable the rendering of shadows when in lighting preview mode.

Animation rendering

DarkRadiant User Guide (15)

Start render time

Begin rendering animated effects.

DarkRadiant User Guide (16)

Stop render time

Stop rendering animated effects.

Far clip options

DarkRadiant User Guide (17)

Toggle far clip

Enable or disable the far clip plane.

The far clip plane is a performance optimisation which avoids rendering geometrymore than a certain distance away from the camera.

DarkRadiant User Guide (18)

Clip plane in

Move the far clip plane closer to the camera.

DarkRadiant User Guide (19)

Clip plane out

Move the far clip plane further away from the camera.

The 3D view always renders the scene from a particular camera position, which isshown in the 2D view as a blue diamond. This camera position can be set directlyfrom the 2D view with Ctrl + Middle click, and the camera view direction canbe set with Middle click. There are also various options within the 3D viewitself to adjust the camera position.

Right click

Enter or leave free camera mode. In this mode, moving the mousearound updates the camera view direction in real-time, and moving the mousearound while holding Ctrl causes the camera to move up/down/left/rightaccording to the camera motion.

Default mode (not free camera)

Left/Right arrow

Pan the camera left or right

Up/Down arrow

Move the camera forwards or backwards on the horizontal plane,without changing its height on the Z axis.

Free camera mode

Left/Right arrow

Move ("truck") camera left or right, leaving view directionthe same.

Up/Down arrow

Move ("dolly") the camera forwards or backwards along its viewaxis

Manipulating objects

Every object in a map can be selected and moved within the 2D view. Some objects — including brushes, patches and lights — can also be resized.

For more advanced ways to select objects, seebrush-based selection.

Shift + Left click

Select or deselect the object at the clicked position. Any existing selected objects will remain selected. If the clicked position overlaps more than one object, the closest one (according to the current 2D view axis) will be affected.

Alt + Shift + Left click

Select the object at the clicked position, and deselect any existing selected objects. If the clicked position overlaps more than one object, each click will cycle through the overlapping objects.

Shift + Left drag

Draw a selection rectangle, which will select any objects contained (fully or partially) within it.

ESC

Deselect all objects

Left drag (inside object)

Move the selected object(s)

Left drag (outside object)

Resize the selected object(s) (if available)

Space

Duplicate the selected object(s)

Backspace

Delete the selected object(s)

DarkRadiant User Guide (20)Like other editors in the Radiant family, DarkRadiant offers a ratherunusual system for resizing objects. Rather than clicking exactly on the edge,or on a dedicated resizing handle, you can click and drag anywhere outside anedge to move that edge inwards or outwards. Dragging outside a corner allows youto move two edges at once.

Flipping and rotating

DarkRadiant provides six buttons to quickly flip or rotate objects (in 90 degreeincrements) around each of the three world axes. These are available on theleft-hand vertical toolbar.

DarkRadiant User Guide (21)

Flip along the X axis

DarkRadiant User Guide (22)

Rotate around the X axis

DarkRadiant User Guide (23)

Flip along the Y axis

DarkRadiant User Guide (24)

Rotate around the Y axis

DarkRadiant User Guide (25)

Flip along the Z axis

DarkRadiant User Guide (26)

Rotate around the Z axis

Manipulator modes

For more precise control over object motion, there are three manipulator modeswhich can be selected with buttons on the left-hand vertical toolbar.

DarkRadiant User Guide (27)

Translate mode

A manipulator widget with axis-aligned arrows will be displayed at the selectedobject’s center. Click and drag one of the arrows to move the object along thataxis, or drag inside the manipulator box to move the object in two dimensions.This mode may be useful for moving brushes around without accidentally resizingthem.

DarkRadiant User Guide (28)

Rotate mode

A widget with three axis-aligned rings will be displayed at the selectedobject’s center. Drag a ring to rotate the object by any arbitrary amount aroundthat ring’s axis.

DarkRadiant User Guide (29)

Resize mode

This is the default Radiant drag mode (hence the "QE" icon referring to theoriginal QERadiant) which allows you to move objects by dragging inside them andresize by dragging outside the boundary edges.

Working with brushes

Brushes are the basic building blocks of all maps. Typically they are used forcoarse-grained level geometry such as walls, ceiling and floors. Brushes alsohave a vital role in sealing a map from the void: even a map built entirely frompatches and static meshes must still be surrounded by brushes in order to avoidleaking.

Additive versus subtractive geometry

If you are used to mapping for the legacy Thief games using Dromed or T3Edit,the system used by DarkRadiant may seem somewhat back-to-front. In previousgames, the world starts out as an infinite solid, in which you "carve out" roomsusing subtractive brushes. In DarkRadiant, the world starts out as an infinitevoid, and all brushes are solid. The space in which the mission happens must befully enclosed by solid brushes, otherwise the map will "leak" and fail tocompile.

The need to deal with map leaks may at first seem like a burden, however theexclusive use of solid brushes frees the engine from needing to worry about"brush ordering", and allows an important performance optimisation: by "floodfilling" the map interior, the map compiler can efficiently discard geometrythat never needs to be rendered.

Creating a brush

To create a simple rectangular brush, ensure that nothing is selected (ESC),then Left drag in the 2D view. A new brush will be created and sized accordingto the dragged area, with its dimensions snapped to the current grid level. Toadjust the third dimension of the brush (perpendicular to the view direction),used Ctrl + TAB to switch the 2D view axis, and Left drag outside the brushboundary to adjust the size.

DarkRadiant User Guide (30)Whenever you drag to create a new brush, the third dimension will match thesize of the most recently selected brush. This makes it easy to draw a seriesof brushes with the same height, such as when you need to create a series offloors or walls in succession. To match the height of an existing brush, simplyselect (Shift + Left click) and deselect it (ESC) before drawing the newbrush.

More complex brush shapes

Although each brush starts out as a six-sided cuboid, it doesn’t have to staythat way. DarkRadiant offers several options for creating multi-sided brushes inmore complex shapes. To create one of these shapes, first define a regularcuboid brush covering the volume you want the new shape to occupy, then choosethe appropriate option from the Brush menu:

DarkRadiant User Guide (31)

Prism

An n-sided approximation of a cylinder, with the axis of the cylinder aligned with the current 2D view.

DarkRadiant User Guide (32)

Cone

A tapered n-sided cone, which always points upwards regardless of the2D view axis.

DarkRadiant User Guide (33)

Sphere

A rotationally symmetric n-sided approximation of a sphere, with theaxis of rotation pointing upwards.

While these shapes can be useful for certain architectural modelling, rememberthat brushes are always flat-shaded and are not generally a good substitute forspheres or cones created with patches or static meshes.

Creating a room

Although it is not too difficult to create a hollow room by creating floor,ceiling and wall brushes manually, this is a common enough operation thatDarkRadiant provides a couple of shortcuts. These options can be found on thevertical toolbar at the far left of the main window.

DarkRadiant User Guide (34)

DarkRadiant User Guide (35) Create Room

Create a room whose interior size matches the size of the currently-selectedbrush. The wall thickness will be equal to the current grid size.

DarkRadiant User Guide (36)

DarkRadiant User Guide (37) Hollow

Hollow out the selected brush, leaving the exterior dimensions the same. Thewall thickness will be equal to the current grid size, but the wall brushes willoverlap at the corners, rather than just touching each other as with CreateRoom.

This is legacy tool from GtkRadiant, and generally inferior to Create Room.The overlapping wall brushes make it more difficult to precisely align interiortextures, since part of the inner face is obscured (and therefore removed duringmap compilation). However, there may be occasional situations in which Hollowis useful, so it is retained in DarkRadiant.

The room creation tools do not require the initial brush to be rectangular — you can quite happily Create Room with a triangular or trapezoidal brush, or abrush with sloping sides. However, with a more complex brush shape, thecomplexity of the resulting wall geometry increases considerably, so attemptingto hollow out a 7-sided sphere is probably ill-advised.

Splitting brushes

Sometimes it is necessary to divide a brush into two or more pieces, perhaps tocreate a doorway or other opening. The Clipper tool, accessed with the Xkey, is used for this purpose.

DarkRadiant User Guide (38)

Figure 2. Splitting a brush into two parts

  1. Select the brush to be split (the Clipper can be activated with nothingselected, but it will not do anything useful).

  2. Press X to activate the Clipper, or click on the respective icon on theleft-hand editing toolbar.

  3. Click in the 2D window at two different positions, to define the plane alongwhich the brush will be split. The proposed split plane will be highlighted inblue; feel free to change 2D view axis with Ctrl + TAB or use the 3D camera viewto better visualise the split plane.

  4. Once the split plane is defined, press Shift + Enter to execute the split andkeep both halves of the brush; press Enter to execute the split and keeponly one half. The part of the brush that is kept with Enter depends on theorder in which you define the clip points: the points (marked 0 and 1) willappear clockwise on the brush edge according to the current 2D view. If indoubt, just use Shift + Enter to keep both parts, and delete the unwanted oneafterwards.

  5. Repeat the process to perform additional splits on the selected brush, ordisable the Clipper with the X key. The Clipper is a toggled tool and willremain active until disabled.

DarkRadiant User Guide (39)It is possible to create three split points before executing the split,which will define a split plane in three dimensions. Defining a three-pointsplit plane which is actually useful, however, may be challenging.

Reshaping brush edges

All brush edges can be moved independently, which gives you the ability toquickly create shapes like triangles or trapeziums. This functionality isaccessed via the Select Edges tool on the upper toolbar, or with the E key.

DarkRadiant User Guide (40)

Figure 3. Creating a trapezium using edge editing

  1. Select a brush.

  2. Activate Select Edges with the toolbar button or E key. DarkRadiant willplace a green control point at the center of each brush edge.

  3. In either the 2D or the 3D view, click and drag on a control point to move itsedge. The control point will turn blue and move along with the cursor. In the 2Dview, dragging corners is generally easiest, since the resulting shape changecan more easily be seen.

  4. To reduce the number of brush sides, such as changing a rectangle into atriangle, simply drag one corner directly on top of another. The two edges willbe merged.

Brush-based selection

As well as using brushes to define map geometry, you can also use them to selectobjects. There are three commands on the top toolbar which convert the selectedbrush(es) into a temporary selection volume:

DarkRadiant User Guide (41)

Select complete tall

Select all objects that are completely contained within the two-dimensionaloutline of the selected brush(es) in the current 2D view window, ignoring theirposition on the third axis (perpendicular to the screen).

DarkRadiant User Guide (42)

Select inside

Select all objects that are completely contained within the selected brushvolume(s) in all three dimensions.

DarkRadiant User Guide (43)

Select touching

Select all objects that are touching the selected brushes. Unlike the previoustwo commands, this one does not remove the selected brushes, since it isdesigned to allow you to quickly select objects that are adjacent to real mapgeometry.

Working with patches

Patches are smooth-shaded Bezier surfaces that can be created and manipulated inthe editor (unlike models), and used to represent a variety of curved shapessuch as vaulted ceilings, arches or pillars. Patches are single-sided surfaces,not solid like brushes, and cannot be used to seal a map from the void — anypatch work on the boundary of a map will need solid brushes behind it to preventthe map from leaking.

Creating a simple patch

A simple patch starts off as a flat rectangle, which can then be manipulatedwith vertex editing to produce a curved surface, if desired.

To create a simple patch:

  1. Set the 2D view axes (Ctrl + TAB) to define the orientation of the patch.The patch will be created facing directly towards the screen, so to create ahorizontal (ceiling or floor) patch, the 2D view should be in XY (Top)orientation.

  2. Create a rectangular brush to define the width and height ofthe patch in the current 2D view (the third dimension is not important, sincethe patch will be infinitely thin once created).

  3. With the brush selected, choose Create Simple Patch Mesh from the Patchmenu.

  4. In the dialog, choose the number of control points to define the shape of thepatch along its width and height. A patch can have between 3 and 15 controlpoints in each dimension; there will always be a control point at the extremeedge, and one in the middle. More control points allow more complex shapes butalso require more manual adjustment — creating a simple arch is much easierwith just three control points.

  5. Click OK to create the patch.

DarkRadiant User Guide (44)

Figure 4. Simple patches with 3, 7 and 15 control points in both dimensions

Manipulating control points

With a patch selected, press V to enter (or leave) vertex editing mode. Thiswill display all of the control vertices, and allow you to select and move them.

  • Left click and drag a vertex to move just that one vertex.

  • Shift + Left click to add a vertex to the current selection set. Whenseveral vertices are selected, dragging any one of the selected vertices willmove all of them together.

  • Shift + Left drag around several vertices to draw a selection rectangle thatwill toggle the selection state of all vertices inside it, selecting them ifunselected and unselecting them if already selected.

DarkRadiant User Guide (45)

Figure 5. Making an arch by raising the central row of vertices in a simple patch

Adding or removing control points

Control points can be added or removed from a patch using the appropriate sub-menus in the Patchmenu.

Insert

Add rows or columns of control points without changing the dimensions of the patch — the controlpoints will become more densely packed.

Extend

Add rows or columns of control points while extending the patch dimensions. The existing controlpoints are left in the same position.

Delete

Remove rows or columns without changing the dimensions of the patch (the opposite of Insert). Thecontrol points will become less densely packed.

DarkRadiant User Guide (46)

Figure 6. Inserting (top), Extending (middle) and Deleting (bottom) control points in a patch

Thickening a patch

When created, every patch has zero thickness and can only be viewed from one side; however, a patchcan be made into an apparently solid object by creating additional patches automatically via theThicken command in the Patch menu.

DarkRadiant User Guide (47)

Figure 7. Thickening a patch (left) with side walls (center) and no side walls (right)

The Thicken dialog presents several options:

Extrude along Vertex Normals

Thicken the patch by extruding the patch surface in the direction it is facing.

Extrude along X/Y/Z Axis

Thicken the patch by extruding the surface along the specified axis, ignoring the face normaldirection.

Thickness (units)

Distance in map units to extrude the patch by.

Create seams ("side walls")

If checked, the extruded patch will be made into a fully solid "object" with an interior volumecompletely enclosed by patches. If unchecked, only the initial patch and its extruded copy will becreated, with the sides left open.

DarkRadiant User Guide (48)Although a thickened patch appears as a solid object, it still consists of individual patcheswhich can be selected and manipulated individually. If you wish it to continue to behave as asolid, you can group the patches together.

More complex patch shapes

Just like with brushes, DarkRadiant offers several default patch shapes beyondthe flat simple patch. These can be created by choosing the corresponding optionin the Patch menu. There is no need to have a brush selected first in order tocreate these shapes, however if a brush is selected, it will be removed andused to define the size of the patch shape.

DarkRadiant User Guide (49)

Sphere

An approximation of a sphere (the quadratic Bezier patch implementation in Doom3 and DarkRadiant does not permit the creation of a perfect sphere).

DarkRadiant User Guide (50)

Cylinder

A hollow cylinder aligned with the direction of the 2D view.

DarkRadiant User Guide (51)

Cone

A tapered cone pointing along the 2D view axis.

DarkRadiant User Guide (52)

End cap

An arch or half-cylinder covering a 180 degree angle, aligned with the 2D viewaxis. The peak of the arch will be at the top if created in front or side views,making this useful for curved ceilings and the like.

DarkRadiant User Guide (53)

Bevel

Portion of an arch covering a 90 degree angle. This may be placed along roomedges to give a curved appearance.

Controlling patch subdivision

Although patches are defined by Bezier curves, they are subdivided into flatpolygons for rendering. By default, the number of polygons to create isdetermined dynamically by the game engine, based on the shape of the patch.However, you can also use the Patch Inspector to explicitly set the level ofsubdivision required, which can be useful when optimising a map by reducingon-screen polygon counts.

DarkRadiant User Guide (54)

Figure 8. Default (automatic) subdivision, 2x2 subdivision, 3x3 subdivision, 3x10 subdivision

To subdivide a patch:

  1. Select Patch Inspector in the View menu to make the inspector widgetvisible.

  2. With the patch selected, enable the Fixed Subdivisions checkbox.

  3. Use the Horizontal and Vertical numeric spinboxes to set the number ofpolygons to divide the patch into. The value can range from 1, making thepatch completely flat regardless of control point positions, up to a maximum of32. Each dimension can have a different subdivision level, if required.

Applying textures

When a brush or patch is created, it will be assigned a default texture. Toapply a new texture, you must first select the brush, face or patch to betextured. There are two different selection commands:

Shift + Left click

Select an entire brush or patch. Any chosen texture will apply to all faces.

Ctrl + Shift + Left click

Select a single brush face for texturing. This command is only available in the3D camera view

Once you have selected the objects or faces to texture, you can use either the Mediaor the Textures tab to perform the texturing operation.

The Media tab

The Media tab shows a tree view which contains all of the textures availablein the game installation. Selecting a texture in the tree will show a smallpreview swatch, along with some metadata about the texture definition.

DarkRadiant User Guide (55)

To apply a texture to the selected brush, simply Double-click on a texturename in the tree. The tree view also offers a context menu with several options:

Load in Textures view

Load all textures contained within the selected folder, making them available onthe Textures tab. This option is not available when a single texture ishighlighted.

Apply to selection

Apply the highlighted texture to the current object. This is identical to theDouble-click operation, and is only available for single textures, notfolders.

Show Shader Definition

Show a syntax-highlighted text window containing the definition of the selectedtexture.

Selected/deselect elements using this shader

Select or deselect objects in the map which the highlighted texture isapplied to. This can be used for organisational purposes, or to identify whethera texture is used or not.

Add to/Remove from favourites

Add or remove the selected texture from the favourites list. The favourites listprovides easy access to a user-chosen group of textures, and can be accessed bychoosing the Show Favourites radio button at the top of the panel.

The Textures tab

The Textures tab provides a scrollable canvas containing preview swatches ofall the textures which are currently loaded in the current map.

DarkRadiant User Guide (56)

When DarkRadiant first starts up no textures are loaded and this panel is empty.New textures can only be loaded via the Media tab (described in theprevious section), either by applying a texture directly to abrush, or by using the Load in Textures view command to explicitly load anentire folder of textures.

Once textures are loaded onto the Textures tab, you can apply them to aselected object by Left clicking on them. By Right clicking on a texture youcan access a context menu with a single command Seek in Media browser, whichwill highlight the clicked texture in the Media tab.

Using the Surface Inspector

Once a texture is applied via the Media or Textures tabs, you will most likelywish to adjust the alignment and scale of the texture on the brush or patchface. DarkRadiant provides the Surface Inspector for this purpose, which canbe toggled with the S key or by choosing the option in the View menu.

DarkRadiant User Guide (57)

The Surface Inspector can be used to adjust textures on a single brush or patchface, or several selected faces/brushes/patches at once. If more than one faceis selected and these faces have different values for text boxes in the dialog,the text box will be greyed out, however it is still possible to use the buttonsto make changes which will be applied uniformly to all selected faces.

Shader

This shows the full name of the texture applied to the selectedface(s). You can use the folder button to bring up a new dialog which allows youto choose a new texture.

Horiz/Vert Shift

These text boxes show the current texture shift (translation)on the horizontal and vertical axes. The associated arrow buttons will increaseor decrease the texture shift by the current Step value.

Horiz/Vert Scale

These show the current texture scale in the horizontal andvertical directions. The arrow buttons will increase or decrease the scale bythe current Step value.

Rotation

Shows the current texture rotation, in degrees. The arrow buttons willrotate the texture clockwise or anticlockwise by the current Step value.

Fit Texture

These controls allow you to fit an exact number of copies of thetexture across the face, so that the texture edges correspond to the face edges.

The numeric spin boxes control how many copies of the texture are tiled on eachaxis. You can enter a value manually (including fractional values above or below1.0) or use the spin buttons to quickly increase or decrease the number oftiles. Using the spin buttons will apply the fit immediately, so you can quicklypreview the results in the camera view.

Toggle the DarkRadiant User Guide (58) button to preserve aspect ratio whenusing the spin buttons to fit the texture on one axis. This automaticallyadjusts the other axis so that the aspect ratio of the texture image ispreserved, ignoring the value in the other axis' spin box. This can be usefulfor textures like wooden planks, where you might want an exact number of plankwidths on a certain brush face but the number of lengths is not important(since the texture is seamless); in this case, avoiding aspect ratio distortionis more useful than fitting an exact number of lengths.

Align Texture

These buttons shift the texture so that the Top/Bottom/Left/Rightedge of the face are aligned with a texture boundary, but otherwise do notmodify the scaling of the texture (unlike the Fit operation).

Flip Texture

Flips (mirrors) the texture along the horizontal or vertical axis.

Natural

This button resets the texture to a default alignment and scale, basedthe location and size of the face.

Texture Lock

If this is enabled, the alignment of the texture will be preservedrelative to the face if the brush or patch is moved in 3D space. If disabled,the texture itself will remain fixed in 3D space as the brush or patch moves,resulting in the alignment changing.

Typically, if you have Fit a particular number of texture tiles across a face,you will want to preserve alignment with Texture Lock. Conversely, if thetexture is applied to a much larger group of brushes with a common texture (thatneeds to align across all of the brushes, regardless of how they are moved orresized), you will want to disable Texture Lock.

Using the shader clipboard

While constructing a map it will frequently be necessary to apply the sametexture to several different surfaces such that they appear seamless in game. Inorder to assist with this, DarkRadiant provides a shader clipboard whichallows shaders to be copied and pasted between primitives, and is independent ofthe main clipboard used for copying and pasting other objects.

Copying a shader

There are two ways to copy a shader to the shader clipboard.

  1. Select a single face (not an entire brush) with Ctrl + Shift + Left clickin the 3D view, then choose Edit → Copy shader.

  2. Directly Middle click the face in the 3D view (there is no need to selectit first).

In both cases, the ShaderClipboard section of the bottom status bar willupdate to show the new value of the shader clipboard. If the Media orTextures tab is visible, their contents will also update to view the selectedshader.

DarkRadiant User Guide (59)Selecting a texture explicitly in the Media or Textures tabs will alsoupdate the shader clipboard with the selected shader.
Pasting a shader

Once a shader is on the shader clipboard, it can be pasted onto another surfacein a number of ways:

  1. Select the destination face with Ctrl + Shift + Left click, then chooseEdit → Paste shader or Edit → Paste shader (natural).

  2. Directly Middle click the destination face while holding down either Ctrl(to paste the shader with projected coordinates) or Shift (to paste the shaderwith natural coordinates).

Natural or projected pasting

The difference between natural and projected coordinates is apparent whenpasting a shader onto a curved patch.

With projected coordinates (Ctrl + Middle click) the texture on the patchwill be aligned identically to the texture on the source face, which mightresult in a stretched texture depending on the angle between the patch and thesource face.

With natural coordinates (Shift + Middle click) the texture will flow overthe curved surface in a more natural manner.

When pasting a shader onto a flat brush face, there may be little or nodifference between the two options.

Working with entities

If brushes are the bricks and mortar of a map (often literally), entities areits fixtures and fittings. Every object in a map which "does something" otherthan form part of the level geometry is an entity: lights, audio speakers,particle emitters, static meshes, animated creatures or machinery. There arealso various functional entity types which provide vital metadata to the gameengine, such as determining where the player should start, or how creaturesshould navigate between locations.

DarkRadiant provides certain common functionality to all entities, such as theability to edit properties using the Entity tab. Particular entity types aresufficiently common, however, that they have their own dedicated creation andediting tools.

Light

Every map requires at least one light source in order to renderanything in game. A light occupies a rectangular volume, which can be createdand resized much like a brush, and has properties to determine its colour,visible shape and falloff pattern in three dimensions. Lights can optionallycast shadows, and can even be animated to flicker or flash.

Model (func_static)

Model entities represent geometry that is not compiledas part of the map itself. The model geometry can either be derived from brushesand patches created inside DarkRadiant, or from an external model file in ASE orLWO format. Model files are the primary mechanism for including fine detail in amap which would be cumbersome to create with brushes and patches.

Speaker

Essentially the audio equivalent of a light, a speaker entityrepresents the point from which an in-game sound source will emanate. It hasproperties to control its size and falloff, and optionally override certainproperties of the sound shader itself, such as volume.

Player start (info_player_start)

This entity tells the game engine where toplace the player when a map is first loaded. A map without such an entity willnot be playable.

Creating lights

To create a light, Right click in the 2D view and choose Create light….The position and size of the light volume depends on the current selection:

  • If nothing is selected, then a light volume will be created at the clickedposition with a default size.

  • If a single brush is selected, the brush will be deleted and the lightvolume will match the size and position of the brush.

  • If several brushes are selected, then all selected brushes will be deletedand the light volume will be sized according to the bounding box of thebrushes (i.e. the smallest box that would contain all of the brushes).

Unselected lights are shown in the 2D view as small boxes, while selected lightsalso show the boundaries of the light volume.

DarkRadiant User Guide (60)

Figure 9. Light entity selected (left) and unselected (right)

A selected light entity can be moved by dragging inside the small center box,and it can be resized by dragging outside the edge of the light volume. Unlikebrushes, light volumes will by default resize symmetrically, so that the centerpoint does not move during the resize.

DarkRadiant User Guide (61)Although light volumes can be resized like brushes, their shape can neverbe changed; every light is an axis-aligned cuboid. This does not, however, meanthat they need to look rectangular in game. See the nextsection for details on how to change the falloff texture using the lightinspector.

There are a couple of options on the top toolbar which control the display andbehaviour of light volumes:

DarkRadiant User Guide (62)

Show all light volumes

If enabled, light volume boundaries will be rendered in the 2D view for alllight entities, not just selected entities. The default behaviour is to showonly the center box for unselected light entities.

DarkRadiant User Guide (63)

Drag-resize entities symmetrically

If enabled (the default), light entities will be resized symmetrically, withoutmoving the center point. If disabled, lights will be resized like brushes:dragging an edge will move only that edge, while the opposite edge remainsfixed.

The light inspector

When initially created, a light is pure white in colour and has an unrealisticrectangular illumination pattern matching its shape. You can change theseproperties using the light inspector, which is accessed with the L key.

DarkRadiant User Guide (64)

DarkRadiant User Guide (65)The light inspector can change the properties of a single light, ormultiple selected lights simultaneously.
Light volume (omni vs projected)

The majority of lights in a map will be thedefault, omnidirectional shape. An omni light is a simple cuboid which emitslight in all directions from its center to its edges.

A projected light is pyramid-shaped, and emits light from the tip of the pyramidtowards the base. Projected lights behave more like spotlights in real-life, andcan be used to highlight particular areas or project images of windows onto thefloor.

Colour

Use the colour selector button to display a standard colour selectiondialog. As well as changing the hue, the light colour also governs the overallbrightness of the light. You can use the slider below the colour button toadjust the brightness of the selected light(s) without changing the hue, withrealtime feedback displayed in the 3D camera view if lighting preview mode isenabled.

Texture

The falloff texture controls the shape of the lit area when renderedin-game; the square texture chosen here will be mapped directly onto therectangular shape of the light volume. Light textures can be simple, such as thegeneric circular gradient of biground1, or much more complex, includingmultiple colours or animation.

Options

There are a few light-propagation options which are mostly used totweak performance. In particular, disabling shadows for any light which doesnot actually need to cast shadows can give a significant boost to renderingspeed.

Creating models

Static models can be used to provide fine details in a map which would bedifficult or impossible to create in the editor with brushes or patches. Modelsare created with an external 3D application such as Blender, Lightwave or Maya,and saved into the game asset tree in LWO or ASE format.

To insert a model, ensure that nothing is selected, then Right click in the 2Dview and choose Create model…. DarkRadiant will show the model selectordialog:

DarkRadiant User Guide (66)

In the top-left of the model selector window is a tree of all available modelsin the game installation. Models may have different skins, which are variantsof the same model with different textures applied. If a model has skinsavailable, these will be listed as children of the model entry in the tree.

Choosing a model or one of its skins will show a preview render in the largewidget on the right-hand side. Various metadata such as the polygon count andthe applied textures are also shown in table at the lower left.

When you have chosen the desired model, click OK to insert it into the map.The model will be inserted at the position where you originally right-clicked toshow the model chooser.

Creating a player start marker

The game requires a special entity (info_player_start) to mark the position atwhich the player should enter the map. Without such an entity the map will beunplayable.

To create this entity, ensure that nothing is selected then Right click in the2D view and choose Create player start here. DarkRadiant will create theplayer start entity at the clicked position.

Since it makes no sense to have more than one player start location, DarkRadiantwill not enable the Create player start here menu option if there is alreadyan info_player_start in the map. Instead, you may choose Move player starthere to move the existing entity to the clicked position.

Creating other entity types

Entity types without a dedicated item in the right-click menu are created usingthe generic Create entity… option, which displays a dialog very similar to themodel selector:

DarkRadiant User Guide (67)

Just like the model selector, the entity selector displays a tree of allavailable entity types in the game installation, and a large preview widgetwhich shows an approximate rendering of the entity, if appropriate. Purelyfunctional entity types such as info_location or info_player_start do nothave any visible appearance and their render preview will be blank.

Some entity types have a short textual description giving information abouttheir usage; if present, this is displayed in the text box underneath the entityclass tree.

After selecting the desired entity type in the tree, click the Add button toinsert an instance of the entity into the map at the right-clicked location. Ifthe selected entity type requires a brush selection and no brush is selected, awarning will be shown at this point.

Editing entity properties

Every entity has a list of key/value pairs known as properties or spawnargs.These properties are displayed on the Entity tab of the editing panel.

DarkRadiant User Guide (68)

The entity panel lists all of the properties of the currently-selected entity,showing each property’s name, its current value, and an icon representing itstype (boolean, vector, text etc) if known. Selecting a property will populatethe two text boxes in the center of the widget with the property name and value,allowing the value to be edited. If the selected property is of a known type,the panel at the bottom will show a custom widget appropriate for editing theparticular property, e.g. three separate numeric spinboxes for a vectorproperty, a colour selector widget for a colour property, and so on.

Changing a property value

To change the value of the selected property,simply enter the new value in the lower text box, then hit Enter or click thegreen tick button. If the property has a type-specific editing widget, you canalso change its value using the controls in this widget.

Adding a new property

There are two different ways to add a new property:

  1. Enter a new property name in the upper text box (which shows the selectedproperty name), and hit Enter. This does not rename the selected property, butadds a new property with the edited name and the current value.

  2. Right click in the list of properties and choose Add property from thecontext menu. This will display a new dialog listing all known properties alongwith their descriptive text (if available). Selecting a property in this dialogand choosing OK will add the property to the entity with a default value of"-", which can then be edited in the entity panel itself.

Deleting a property

To delete the selected property, Right click on theproperty in the list and choose Delete property.

The entity panel provides two options controlling its behaviour:

Show inherited properties

If checked, all properties that apply to theselected entity will be shown, including those which are inherited from theentity type declaration in the game installation. If unchecked, only thoseproperties explicitly set on this particular entity (and stored in the map file)will be shown.

You can change the value of an inherited property by selecting it and entering anew value in the entity panel; this will create a new explicit property on theentity which overrides the inherited default.

Show help

Enables or disables the text widget at the bottom of the panelwhich shows a brief explanation of certain properties. If a property has helptext available, the question mark icon will be shown in the ? column.

Reparenting primitives

Whenever a new brush or patch is created, it will automatically be made a childof the special worldspawn entity, which serves as the default entitycontaining all of the primitives which define the world geometry. However,worldspawn is not the only entity which can contain brushes and patches aschildren.

When you create a model using the model selector, DarkRadiantwill insert a type of entity called a func_static into the map to representthe model geometry. A func_static can contain a model file loaded from disk inLWO or ASE format, but it can also be used as a parent for one or moreprimitives created within DarkRadiant. In either case, the behaviour offunc_static is the same: it represents a static mesh which is rendered ingame but is considered separate from the main world geometry, meaning that itdoes not participate in map compilation, will not seal the map from leaks, andwill not cause intersecting brushes to be subdivided.

It is therefore often useful to make certain brushes and patches — typicallythose which represent "fine detail" rather than entire walls, floors and thelike — into func_static entities to improve in-game performance and reduce thechances for map compilation problems caused by excessively complex worldgeometry.

The func_static entity class is not the only type of entity which can containprimitives: there are several other func_ entities which perform variousfunctions, for example func_rotating which allows geometry to rotatecontinuously. DarkRadiant offers dedicated commands to convert to/from afunc_static since this is a very common operation, however the ability toselect, add and removeindividual primitives behaves the same for all types of primitive-containingentity.

Converting primitives into func_static

To convert one or more existing primitives into a func_static entity, simplyselect all of the primitives, right-click in the 2D window, and choose Convertto func_static.

Manipulating individual child primitives

After converting a primitive, a number of changes are noticeable:

  1. The primitive may be drawn in a different colour.

  2. The primitive will no longer be resizeable by dragging its boundary with themouse.

  3. When the primitive is selected, the Entity Inspector will no longer show theworldspawn entity, but a new entity with a different classname (e.g.func_static). You can set spawnargs on this entity like any other (includinggiving it a custom name).

  4. Selecting any contained primitive will cause a small X/Y/Z axis widget to bedrawn at the entity’s origin position (which may be inside one of theprimitives, or outside all of them, depending on their layout).

  5. If there are multiple primitives contained within a single entity, selectingany individual primitive will cause all of the entity’s primitives to beselected. This allows you to easily move the entire static object by simplydragging any one of its primitives.

However, it is still possible to perform operations on a single primitive, forexample resizing a brush, by selecting it with the TAB key. Each press ofTAB will cause DarkRadiant to select a different primitive contained withinthe entity, after which it will return to selecting the entire entity. With onlya single primitive selected, all of the normal operations are possible on thatprimitive, for example deleting or resizing it.

The entity inspector widget makes it clear whether you haveselected an entity or a primitive within that entity, using the text above thelist of entity properties. If an entire entity is selected, the text will appearsimilar to Entity1, whereas with a primitive selected it will readEntity1,Primitive1.

Adding or removing primitives

Once you have created a func_static or similar entity from a number ofprimitives, you can add or remove primitives without needing to create a newentity from scratch.

Adding a primitive

Select the entity, then expand the selection (i.e. usingShift + Left click) to include one or more existing primitives to add to thisentity. Then choose Edit → Reparent primitives.

Removing a primitive

Use the TAB key to select the individual primitive toremove (you must do this even if there is only one primitive in the entity),then choose Edit → Reparent primitives to worldspawn. The removed primitivewill still exist in the map but it will be a regular worldspawn brush or patch,not parented to any other entity.

Unparenting all primitives

With the entity selected, simply right-click inthe 2D view and choose Revert to worldspawn to turn all of the primitivesback into worldspawn.

Compiling a map

DarkRadiant does not include functionality for compiling a map into the formneeded by the game engine; instead, you must use external tools or the mapcompiler built into the game itself.

For Doom 3 and the Dark Mod, the following commands are used within the in-gameconsole (which can normally be accessed with the key immediately above TAB):

dmap<mymapname.map>

Compile the map called mymapname.map, which must belocated within the maps directory of the mod installation. If there are anyproblems compiling the map (e.g. a leak), the error will be displayed in theconsole output.

map<mymapname.map>

Load the compiled map mymapname.map into the gameengine and start playing it immediately.

DarkRadiant User Guide (69)When compiling and testing maps, it may be helpful to set your game toplay in windowed mode, with a reduced resolution. This will allow both the gameand DarkRadiant to be visible on the screen as separate windows, which you caneasily switch between during the compile and test cycle.

Preventing leaks

A map "leak" occurs when the play area is not fully enclosed with a completeshell of opaque brushes. If the map leaks, compilation will fail and the mapwill not be playable.

In order to minimise the likelihood of a map leak, ensure that your map has allof the following properties:

  • The map interior is completely sealed from the exterior void by brushes (notpatches). It is much easier to achieve this by building up a map carefully,making good use of the grid snapping functionality, rather than haphazardlythrowing brushes together and hoping to seal them later.

  • All of the sealing brushes have an opaque texture. Skybox textures areconsidered opaque and are OK, however semi-transparent or perforated meshtextures are not.

  • The origin point of every entity in the map lies within the sealed mapinterior. It is OK if a large model extends outside of the map, provided thatits origin point is on the inside.

DarkRadiant User Guide (70)Do not be tempted to avoid leaks by enclosing your entire map in asingle huge box. This may seem to solve the problem (the map will indeed notleak), but it completely negates the important performance optimisations thatthe map compiler carries out when it "flood fills" the map interior.

Locating leaks with a pointfile

No matter how hard you try to avoid leaks, occasionally they will happen. Inthis case the pointfile functionality is helpful to identify the location ofthe leak.

After the map compilation has failed with a leak, return to DarkRadiant andchoose Pointfile from the File menu. This will automatically load the pointfile associated with the current map, which contains a series of pointsidentifying the path to the leak. This path will be rendered as a bright redline in both the 2D and 3D views:

DarkRadiant User Guide (71)

Figure 10. A pointfile rendered in both 3D and 3D views

In this example we can clearly see that the map has leaked because the far wallbrush does not join up with the ceiling.

DarkRadiant User Guide (2025)

References

Top Articles
Latest Posts
Recommended Articles
Article information

Author: Carmelo Roob

Last Updated:

Views: 5900

Rating: 4.4 / 5 (65 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Carmelo Roob

Birthday: 1995-01-09

Address: Apt. 915 481 Sipes Cliff, New Gonzalobury, CO 80176

Phone: +6773780339780

Job: Sales Executive

Hobby: Gaming, Jogging, Rugby, Video gaming, Handball, Ice skating, Web surfing

Introduction: My name is Carmelo Roob, I am a modern, handsome, delightful, comfortable, attractive, vast, good person who loves writing and wants to share my knowledge and understanding with you.