Aftershock Wiki


Gtk Radiant startup screen

Mapping - what you need to get started.

How to start[]

After installing radiant you should put a copy of your game version into your mapping folder, so you have one game version fo mapping. Then extract all the .pk3 in basoa (change the extension to ZIP, then extract) so you can access the folders.

Now your ready to start radiant. The programm will ask for the game you want to map for.


  • adjust the view to the 3rd option (camera on top left, top view on upper right, front and side view on the bottom
  • adjust the number of undo levels to your liking.(recommended at least 64)

Basic Controls[]

  • left-click and draw a square to create a brush.
  • you can select a brush by holding SHIFT + click
  • CTRL + SHIFT + left-click to select only one surface of a brush
  • Resize a brush: Q
  • Clipper: X
  • Clipper: invert cutting side (blue side gets deleted): STRG + ENTER
  • Clipper: cut through, without deleting one side: SHIFT + ENTER
  • ESC deselect
  • Texture Browser: T
  • Surface Inspector: S
  • Patch Surface Inspector: SHIFT + S
  • Invert Patch orientation: CTRL +
  • Invert Selection: I
  • Entity Menu: N
  • Entity List: L (very helpfull to find hidden stuff)
  • Map Info: M
  • Console view: O
  • Cap Selector: SHFIT + C
  • Select Edges: E
  • Copy / paste texture and allignment: mark surface, STRG + C, STRG + V
  • Adjust the grid with numbers 1-9, 0 toggles the grid on and off


  • use common/caulk texture for all textures that are not visible to the player.
  • use common/clip to create invisble brushes the block the player (for example to not get stuck in detailed brushes)
  • use vis blocking brushes for rooms and detail brushes for room interieur
  • always deselect (ESC) before you create new brushes, deselect the ones you just made


  • Hallways - CPM1,3 type - 128 units wide. 192 units is also common (hallways you will need even larger)
  • Distance between Levels / Floors - Average seems to be about 256 units.
  • Atrium size - 1024 units for smaller/tighter maps
  • Wall thickness - 64 units
  • Player has 32x32x64 as a reference


  • use q3map2 meta build, if you don't have lights in your map yet
  • very high quality: -light -fast -patchshadows -bounce 3 -gamma 1.4 -dirty -dirtdepth 32 -dirtscale 3 -filter -samplesize 8
  • non plus ultra: -light -patchshadows -bounce 3 -gamma 1.2 -dirty -dirtdepth 32 -dirtscale 3 -filter -samplesize 8
  • add -flat for comic style (cellshading like / high picmip)

you can also create a .bat file, edit it:

"C:\path\to\q3map2.exe" -meta -v "C:\path\to\"
"C:\path\to\q3map2.exe" -vis -v "C:\path\to\"
"C:\path\to\q3map2.exe" -light -fast -patchshadows -samples 3 -bounce 8 -gamma 2 -compensate 4 -dirty -v "C:\path\to\"


if you only want to test your .bsp you have to type

/sv_pure 0
/devmap <mapname>

Common erros[]

cm_loadmap: SV_Brushmodell NULL (0)

this happens if you have phantom brushes, that are not visible in radiant. To solve it,

  • use the brush cleanup tool in the menu
  • and / or: hold shift, draw a box arround all your map -> save selected (to a new map file)

Open the new mapfile, compile it. now it should work.

hit per-surface style limit <4>

not an error, only a warning.

but you should check your lights, make lights that are close to each other have the same settings (color, brightness)

(to be completed...)

Mapping: Tools[]

.pk3 map files - content overview[]

a standard .pk3 mapfile consists of

  • <mapname>.pk3
    • maps
      • <mapname>.bsp ( = the map itself)
      • <mapname>.aas (= the bot file)
    • models
      • mapobjects
        • <mapname_folder>
    • textures
      • <mapname_folder> ( = the textures)
    • scripts
      • <mapname>.shader ( = the shader, lightmap)
      • <mapname>.arena ( = needed for the Skirmish menu)
    • levelshots
      • <mapname>.tga /.jpg
    • Readme.txt

files in bold are required.

(to be completed...)

example for an .arena file[]

  • needed to be able to select the map from the menu (skirmish menu
map         "<mapname>"
longname    "my great map"
type        "ffa tourney ctf team"
bots        "Bones Grunt Daemia"
fraglimit   20
timelimit   15

example for an. shader file[]

01 textures/base_support/x_support2
02 {
03          surfaceparm metalsteps    
04          surfaceparm trans    
05          surfaceparm alphashadow
06          surfaceparm playerclip
07          surfaceparm nonsolid
08          surfaceparm nomarks    
09          cull none
10          nopicmip
11       {
12          map textures/base_support/x_support2.tga
13          blendFunc GL_ONE GL_ZERO
14          alphaFunc GE128
15          depthWrite
16          rgbGen identity
17       }
18       {
19          map $lightmap
20          rgbGen identity
21          blendFunc GL_DST_COLOR GL_ZERO
22          depthFunc equal
23       }
24 }

decompiling a .map file into a .bsp[]

q3map2 -game [game abbreviation] -convert -format map [name of the bsp file].bsp

see also[]

External links[]