MAP Entities in Blender (Radiant Proxy Objects)

Link, Like, Share.


In this exercise we take a look at making game entities in Blender for export using the Blender MAP Export script. When designing a game level in Blender, the simplest solution for game entity placement is to use appropriately shaped meshes. These are however, exported as brush volumes like other mesh objects. Instead Empty objects can be used, which can be resized to act as visual proxies for game specific entities they will be replaced by in Radiant.

Duration: total c. 15 mins (00:15:00).
Info: 1080p.
Suitability: Beginner+.
Source: KatsBits – MAP Entity Test (c. 200 KB | *.blend, *.map).
Product ID: n/a.

Design note: additional considerations to keep in mind when using Blender to make game levels for export to Radiant;

Entity Object

Entity objects do not have dimensions like mesh objects because they are basically little more than a positional marker, a visual aid that indicates a set of XYZ coordinates in space. While there are different designs available [1], for level editing in Blender the Cube is optimal because its shape can be changed to reflect Radiants linear, blocky, editing environment.

Important: be sure to set up Blenders Units to match Radiant.

Empty object types
Accessed from Object Data Properties, Empty’s can be shown as different types of marker selecting an option from the Display As [1] list. For brush-based content creation Cube is preferred as it matches Radiants environment.

Entity Scale

When initially dropped into the scene, Empty objects are the same size as the default Cube mesh, that is 2 x 2 x 2 Units (or Meters). As they do not have Dimensions but do have Scale their size can be adjusting using a simple calculation; as their default size is known – 2 x 2 x 2 units, and the size of the game-entity the Empty is a proxy for is known, i.e. 16 x 16 x 16 units for an info_null, this means the Empty’s scaling just needs to be multiplied by 8; 2 x 8 = 16.

Radiant Entity / 2 = [n]
Blender Empty x [n] = [y]

For example;

weapon_shotgun is 32 x 32 x 32 / 2 = 16
Blender Empty is 2 x 16 = 32

To do this, in either the Sidebar (N) or Object Properties, click the Scale inputs for X, Y, and Z, changing them to 8X: 8.000, Y: 8.000, Z: 8.000. This updates the object to 16 x 16 x 16 overall, the same size as the entity in Radiant. For a classic info_player_start entity, scaling would be X: 16.000, Y: 16.000 Z: 32.000.

Important: there is no need to use Apply Transforms on Empty objects as the MAP export script recognises the object type and will automatically convert what it finds into the corresponding game entity counterpart.

Changing Empty scaling
As Empty objects have fixed Dimensions – 2 x 2 x 2 units, to change their size Scale [2] has to be used.

Entity Duplication

So long as Empty objects are correctly labelled in Blender to reflect their Radiant counterparts, i.e. info_notnull, func_static, target_relay, trigger_kill etc., the MAP export script will instance them correctly relative to the exported *.map file. In other words, Blenders propensity to numerically append duplications, i.e. info_notnull.001, info_notnull.010, info_notnull.100 etc., makes no difference to the script or the resulting *.map. To manually rename an Empty, either select the object in the 3D Viewport and then rename in the Name input field at the top of Object Properties [3], or double-click the appropriate entry in the Outliner [4] and rename.

Naming an Empty
To rename an Empty, in Object Properties [3] click-type a new label in the Name input field, or double-click and type an entry in the Outliner [4].


Times are approximate;
– 00:00 : Overview & Empty
– 02:00 : Scaling & Label
– 06:30 : Lights
– 08:00 : MAP Export
– 10:00 : Radiant Import

Link, Like, Share.