Back to tutorial index page

Basic Room Tutorial


For the purpose of these tutorials I have used GTKRadiant 1.4


OK let’s start with a few fundamentals. As mappers or level designers we are attempting to create visually interesting 3d worlds that are also fun to play in!

It is important to be aware of some issues relating to the Q3 game engine that will impact upon your building. The 3d world is rendered as triangles (or tris) by Q3. If the number of triangles drawn at any one time starts to get very high, the game will slow down. Although more powerful computers can cope with higher tris numbers it is still advisable to try to keep tris at around 8000 at any one time. More about tris and how to control what is being rendered later. The other important point to consider at the moment is the prevention of ‘leaks’. Leaks are when your world has a hole in it through to the void outside. Your level must be completely contained and sealed off from the outside otherwise you will create problems for your self later on. Good brushwork will help prevent leak spots in the first place, but GTK also has a handy feature called pointfile which can be found under the file menu. If during compile it is reported that your map has a leak you can click on pointfile. This draws a red line that shows you where the whole in the outside of the map can be found, making fixing the problem much easier.


Right, let’s do some building! Firstly open up the editor. Then you will need to select a texture to draw with. It is good practice to draw objects in the caulk texture. Caulk is invisible in game, but also solid so it has the effect of not adding to what Quake 3 has to draw on the screen at any one time and also preventing the inside of your world leaking through to the void outside.


If your common texture folder doesn’t have all the textures I have in mine, don’t worry. Place your mouse pointer over the pink caulk texture and left click. A red border should appear around the texture:


Now we’re ready. In the 2d window, the large black one in my set up, we are going to create a ‘brush’. Brushes are the blocks from which the worlds we create a made.

You will notice the 2d window is covered in grid lines. The grid is your friend. Brushes are measured in ‘units’. You can alter grid size by pressing the number keys on your keyboard. 1 equals grid size 1, 4 equals grid size 4, I’m sure you get the idea. The grid size dictates the number of units a brush is drawn out by with each move. As a general rule it’s best to keep the grid size as large as possible. For the purpose of this tutorial we are going to use 4, so hit the number 4. To give an idea of scale a player in Q3 is 56 units high.

On the 2d window place your mouse pointer and left click drag the pointer across the work area whilst holding the left mouse button down. A brush should have now been created! If you use the arrow keys you can fly around the 3d window (above the texture window) and inspect your creation! By placing your mouse pointer against the side of the shape and pressing and holding the left mouse button you will see how you can stretch out or shrink the brush. To deselect the brush hit Esc, to select it again place the mouse pointer on it press shift and left click.

To change views in the 2d window press Ctrl and Tab together. The window will cycle through top/down, front/back and left/right views. Try moving the selected brush in all views and watching how it alters in the 3d window.

Right, let’s make a first room:



Notice the blue thick grid lines? That’s a block. Don’t worry too much about what it’s for just now but it is worth pointing out that it is good practice to keep areas aligned to blocks. You can see the blocks from the view menu. Go to view, show, show blocks.


Draw out a brush in the top down (yx) view 1088 by 1088 units. That’s going to be our floor. In the zx or zy view adjust the thickness of the floor to about 24 units.


Now for some walls:


In the top down view draw out a brush that fits exactly along the edge of the floor area. Make sure the brushes are right up againt each other. Use your mouse wheel or insert and delete to zoom in and out and right click and drag in the 2d window to move your work area around. This way you can inspect what you’re doing very closely. In the side or front view pull up the wall brush to 192 units. Make sure the bottom edge of the wall sits against the top edge of the floor, no overlapping it at all.

With the brush selected, come back to the top down view and hit the space bar. This clones the brush. At the top of the screen there will be some buttons. Starting from the left move your mouse slowly along until you come to the one that says z axis rotate, now press that one. The selected brush will rotate 90 degrees clockwise. Place your mouse over the centre of the brush and hold the left mouse button. Now move the brush into the position shown above. Note how the corners of the wall do not overlap. Point and press shift left click at the first wall brush and then holding shift point and left click at the second. Both brushes will now be selected. Clone both, rotate as we did before and move into position.


Now for the ceiling.


In zx or zy view select the floor brush then clone it. Move it into position over the floor brush. Now we can use the handy z-window, the thin window on the left. Place your mouse pointer in the middle of the selected brush and drag upwards. Stop when the ceiling is in place. Deselect. Flip through all views to make sure everything is aligned….then we’re almost done!


As I said before the caulk texture is invisible in the game. Not a lot of point in creating a room we can’t see, so the next step is to paint or texture the insides of the area. As rule of thumb, only texture what will be seen by the players in game. This way we can save valuable tris.


Instead of shift and left click to select sides of a brush press Ctrl shift and left click. Often this is more easily done in the 3d window. To select multiple sides press shift Ctrl Alt and left click. You will discover you can drag your mouse across several brush faces and select them all very quickly.


Having selected the face we want, lets add a texture

From the texture menu load up gothic_floor. Select the face of our floor brush then click on the largerblock3b4 texture. The caulk will change and the brush will now be textured. Now load the gothic_block textures and texture the inside faces with the killblock texture. Now open the skies texture folder. See how some of the textures have white borders. That means these textures have shader scripts. In game these textures will have a special effect (in this case they are skies). Select the inside face of the ceiling brush then texture it with hellskybright. A useful texturing technique is after you have textured one face use Ctrl shift middle click to apply the texture with the same alignment to other faces.


Nearly there!



We need to add a player starting point for the game. Right click in the 2d window. A menu will appear, scroll down to info and select info_player_deathmatch.

A pink box will appear. Flip to top view and move the start point to the middle of our room, then flip to side view and move it so that it sits just resting on the floor.


With the start point still selected hit n.


Press the 90 on the little box of squares. This rotates the starting point so that the player begins facing toward that direction. It’s not really a problem in a large room but you don’t want to spawn in game facing into a wall!


Time to save the map.

Go to file, then save as and enter a name.



Now to compile, go to bsp and select Q3Map2(test) BSP –meta –vis –light –fast –filter.


Exit and fire up Q3. Drop the console by pressing the key above Tab and type:

/sv_pure 0

(sv_pure 0 turns off pure server, else your level will not run)

/devmap yourmapname

where yourmapname is the name of your map without the .map extention