BSP HQ Logo by Chainsaw
BSP Headquarters Logo by Chainsaw

Return to Quake Tutorial List                    Go to next lesson

Lesson 1 - Drawing a Simple Room and
Moving the Camera Around


First things first. If you haven't installed BSP yet, go here for instructions on how to get it set up. Once you get it installed, fire it up, click on the File Menu and select New. A blank map will be created. Now, before we actually draw anything, let's get acquainted with all the windows. Depending on your screen resolution, some windows may be off the screen, so you may need to use the scroll bars to see them.

Here are the windows you should see:

  • Top X/Y View - a view of your map from above
  • Front X/Z View - view from the front
  • Right Y/Z View - view from the side
  • Texture browser - a graphical listing of all the textures in the texture wad you're using. Animated textures (ie. buttons, slipgate textures, etc.) appear animated in the browser. You can shut this option off if you need to, though.
  • Entities - a list of monsters and other items you can put in your map
  • 3D View - a 3D wireframe representation of your map - can be flat shaded or texture mapped with the click of a button
  • Groups - a list of groups you have created

You can size these windows and position them anywhere you want. I use 800 x 600 resolution, so my personal preference is to make them all fill the screen and move them all on top of each other. Then I can cycle through them with Ctrl-Tab and Ctrl-Shift-Tab. You can also select a window by clicking it on the 'Window' menu. Once you get the windows where you want them, you can save that arrangement as the default by selecting the File menu and clicking on "Save Window Arrangement". Another method is to click the 'Save Window' button on the toolbar. When you do this, you are prompted to enter a value from 1-4. This allows you to have 4 different window setups. I have only used 1, so I'm not sure why you would want more than that, but if you do, the option's there.

Save Window The Save Window Button

Okay, we've got our windows where we want them. Let's select the 'Top X/Y view'. You should see a plain black window with a tiny red box in the middle. This red box is camera position 1. There are five different camera positions you can set up. You can change the active camera by right-clicking on the title bar of a 2D window and selecting which camera to display from the context menu. (I'll explain more about moving the camera positions later.) I also find it helpful to have the grid turned on sometimes. If you don't like it that's up to you. The grid can be toggled on and off by clicking on the grid button.

grid The Grid Button

You'll also notice a button labeled '16' in the top left corner of the 2-D windows. This is the current grid size. The default in BSP is 16, but you can change it by clicking on the button and selecting a new size. I find 8 is a better default, so change your grid size to 8 before we start. I use 8 as the default size throughout the tutorial, so you might want to set your default to this under 'Preferences' on the File Menu.

In order to edit a map in Quake, you have to understand what a 'brush' is. In Quake, everything you make will be composed of brushes. You can think of brushes as building blocks of solid material which can be stacked, stretched or cut to make all manner of interesting shapes. For now, just remember that a brush is solid (with the exception of water and lava textures, but we'll get into that later)

Let's draw a room. First make sure the coordinates (0,0) are visible. If the grid is turned on, you can see the X coordinates listed across the bottom of the window and the Y coordinates listed down the left side. If 0 is not visible on each axis, you need to move the camera position. Whenever you are in a 2D window (X/Y, Y/Z, or X/Z), you can move the camera position by right-clicking the mouse. Wherever you right click in the window, that spot becomes the camera location and the view window is re-centered at that location. Play around with it a little and see what I mean, but when you are done, put (0,0) back in the center of the screen.

Okay, now click with your mouse at (-256,128) and drag to (256,-128). The mouse position is shown in the bar at the top of the viewing window. Don't worry if you don't get your mouse exactly on those coordinates. BSP is set to snap to grid by default. As long as you're close it should end up on the right spot. When you release the mouse button a red rectangle appears. One side of this rectangle will be yellow. Don't worry about that, it just means that side is the currently selected side. We'll get into what that means later. If you have trouble seeing your brush, remember you can toggle the grid on/off to help visibility.

So we have a room that's 512 wide and 256 deep. But how tall is it? Let's find out. Now here's another one my personal preferences. You can look at the Front View and Right View by selecting the appropriate window or you can do what I do. Stay in the Top View window and click the 'Switch Map View' button.

Toggle Windows The Switch Map View button

Whichever method you prefer, switch to the 'Right View' now. You're looking at the same rectangle you just drew, but now from the side rather than the top. If your BSP is configured the same as mine, your box is 80 units high. That's the default in BSP.

The Quake player is about 48 units tall and most monsters are taller than that, so 80 is a pretty short room. Let's make it taller. Position your mouse pointer above the box. Click and drag the mouse towards the top of the screen and the rectangle should stretch in that direction. Drag the top edge of your rectangle up to 128. That's a nice size room to start with. Actually we don't have a room yet - we have a brush (that's an important distinction). We'll make it into a room after we texture it.

One thing you might be interested to know is that whenever you draw a brush, you are dragging it in two dimensions. BSP gets the 3rd dimension from whatever that dimension was on the last brush you drew. In this case, if we were to draw another brush in the X/Y view, the height will be set automatically to 128, since that was the Z dimension of the last brush we manipulated. This also works if you draw a brush in the X/Z view or the Y/Z view. Whatever dimension you can't see is set to that same dimension on the last brush you changed/drew. That's a handy feature if you are drawing a lot of brushes and want them all to be the same height. I just put that in here in case you were wondering where that 'unknown' dimension comes from. Whenever you are in a 2D view, the current 'Height' of the 3rd dimension is displayed in the status bar, along with where the 'base' of that brush will appear in the 3rd dimension.

Switch over to the texture browser window now and select a texture you want to appear on the walls of your room.

Screenshot of Texture Browser Window
Texture browser (click to enlarge)

You can select a texture by clicking on the drop down box in the texture window or by scrolling down the texture browser with the scroll bar. Click on a texture you want on the walls and a red box will appear around the texture to indicate it is selected. I picked 'Tech11_1' but you can use whatever you want.

Once you've picked the texture you want, hit ALT-B to apply it to your brush. The other alternative is to select Edit | Set Texture | Set Brush Texture from the menu, but as you can see, ALT-B is easiest.

If you are used to Doom editing, then you might think you just created a room, but remember what I said earlier about brushes? What you've actually created is a solid block (a brush). Now, it's kind of hard to walk around inside a solid brush, so it's time to make it into a room. Switch back to the 'Top X/Y view', if you're not already there. Click on the 'Room (6-sided)' button. You should see a dialog box asking for a wall thickness. Enter 8 (it should already show this if you have 8 set as your grid size). If you don't want to see this dialog box, clear the 'Query Wall Width' option on your 'Preferences' page and then when you create a room the walls will be set to the thickness equal to the current grid size.

Make Room Room (6-sided) button

You should see that each side of your rectangle has now become a rectangle of its own. Each of these rectangles is a brush and the area enclosed by these brushes is your 'room'. Don't believe me? Switch to the 3-D view window and let's walk around inside.

When you first switch to the 3-D window, you should be looking at a bunch of red lines with blue squares in the center of each line. If you haven't moved your camera around too much, you're actually positioned in the middle of your room and those red lines are the walls. You can move around in the 3-D window by using the following keys:

  • {uparrow} - move forward
  • {dnarrow} - move backward
  • {leftarrow} - turn to the left
  • {rightarrow} - turn to the right
  • {alt-leftarrow} - sidestep left
  • {alt-rightarrow} - sidestep right
  • {shift-uparrow} - move up
  • {shift-dnarrow} - move down

Take your time and move around a while to get comfortable with using these keys. The distance you move with each keypress is customizable under the 'Preferences' selection on the File Menu, so if you want to change it, you can. When you're done experimenting, position yourself back in the center of your room.

By the way, if you're wondering what that little circle/arrow in the top right of the 3-D window is for, I'll tell you. That is the angle you are currently facing in the 3-D preview. Clicking anywhere on the circle will move the arrow to that location and turn the viewport to face that direction. That's handy for quickly turning to look the opposite direction.

This 3-D wireframe is nice, but it doesn't really let you know how your room will look in Quake. For that you need to turn on the texture preview option. This can be done by clicking on one of the three 3-D view buttons or by selecting 'Render' from the Display menu. The buttons are easiest, so that's what I recommend.

3-D rendering buttons 3-D rendering buttons

The first button (currently selected) is the 3-D wireframe you are currently seeing. The second button renders your map in flat-shaded mode. The third button renders your map in full texture preview. That's the coolest of the three modes, but it requires a lot of computing horsepower. Generally, if you can play Quake, your computer can handle the full texture preview mode, so go ahead and click on the third button.

Now move around and look at your room again. You can still move the camera around the same way as you did before, it just is a little slower.

Well, you can see right away that the floor and ceiling are the wrong texture, so let's change them to something else. Currently, all the brushes in your room are outlined in red, meaning they are 'selected'. Any textures you apply will be put on all the selected brushes. We only want to change the ceiling for now, so hit the {esc} key to deselect all brushes. You may notice that there are still outlines around your brushes, but they are a different color. This is because in the Textured Preview, BSP shows you the wireframe edges superimposed on the textured view, just so you can see where the edge of each brush is. If you don't want to see this (like me), click on the Outline button to turn it off.

3-D rendering buttons Outline button

Now move your camera around until you can see the ceiling brush in the 3D window. Click your mouse on that brush. The ceiling brush should become outlined in red - actually it may appear yellow if the currently selected side is facing you. That's okay, it's still selected.

At this point, you could switch back to the texture browser window and pick an appropriate ceiling texture, but there's another way. Look in the toolbar and you should see a drop-down list that shows the currently selected texture (Tech11_1 in this case). Drop this list down and select 'Ceiling5' from the list. Then apply it to your brush with ALT-B.

The floor needs changed too, so either click on the ceiling brush again to deselect it or hit {esc} which deselects all brushes. Select the floor brush by clicking once on it. Let's put the texture 'Floor01_5' on the floor. Do it the same way you changed the ceiling texture. Notice that you are doing all this from within the 3D texture view so you can look at your room as you change it. Cool, huh?

That look's a little better, doesn't it? If you don't like the textures I've chosen, feel free to play around and change them to whatever you want. The only thing I ask is that you don't put any 'sky' textures on the ceiling. We'll be putting a window in there later and we'll use the sky at that time.

Quake Screenshot
Our room so far (click to enlarge)

We're almost ready to compile and test our level, but first we have to add a starting position. Without it, Quake won't run.

Switch back to the Top X/Y view and hit {esc} to deselect all the brushes. If you right-click on the title bar of a 2D window, you can select an option to lock the 3D camera to the current 2D camera, so that as you move the camera around in the 2D windows, the 3D view is updated as well. This is an option I prefer, but some don't, so depending on how your BSP is configured and depending on where you ended up in the 3-D window, you may have to move the camera around in order to make your room show up in the Top X/Y view window. Do that now.

In order to make the starting position, let's draw a box from (192,64) to (224,32). The exact size doesn't really matter, because when we turn it into an entity, it will size itself since the player start entity is a fixed size. Once you've drawn your brush, switch to the 'Entity' Window.

Screenshot of Entity Window
The entity window

Drop down the listbox (it currently says 'Worldspawn') and select 'info_player_start'. Once this is selected, click on the button labeled 'Make Entity' and voila, you've created a player starting position. Easy, huh? You can control the direction your starting position is facing by selecting one of the numbers (0, 45, 90, etc.) in the Entity window. Let's select 180 for now, to make the player face West. You have to do this after you create the entity, not before. If you click the angle button before the entity is created, it won't work.

While we're looking at the entity window, let's talk about how the entities will display in BSP. Starting in version .83, you can display the actual *.mdl file of an entity in the 3-D window, rather than the bounding box. You can display a static image or have it animated and show it wireframe or textured. This is a really cool feature and helps out when you're looking at your map in the 3-D window to see what entities are where. Of course, with all this animation comes a price. You need a powerful computer to handle this. My P100 with 40meg RAM bogs down with both animated fully-textured models and animated textures turned on. If this happens to you and the speed decrease is unbearable, you can turn off animated models by right-clicking on the title bar of the entity window and changing that selection on the context menu. Animated textures can be turned off by right-clicking on the title bar of the texture window.

One other thing we need to check is to make sure our player is standing on the floor. Switch to either the Right or Front view and make sure the bottom edge of your brush is sitting against the top edge of the 'floor' brush. You may have to toggle the grid off to see all the lines. You don't want it to be above the floor because then you'll appear in midair. You also don't want to be 'inside' the floor brush, since you'll be stuck and unable to move when you first spawn. Check the position of your brush and if you need to move the brush up or down, simply position the mouse cursor inside the brush, left-click and drag the brush around until you get it positioned where you want it. In this case we want the bottom edge of the brush to be at 0 on the Z axis.

Got it? Great! Now we're ready to save the map and compile it. Select 'Save As' under the file menu and name your map 'lesson1.map'. Make sure it is saved in the 'C:\QBSP' directory (or wherever you set up your map directory when you installed BSP) and click on 'OK' to save your map.

Fortunately for us, BSP makes it easy to test our map. Simply select 'Full' from the Export menu. BSP will ask you if it's alright to save your map. That's fine for now, go ahead and click 'Yes'. An MS-DOS window will appear and your level will be compiled, lit, and vis-ed. If you want to know in detail what's going on now, check out my notes on compiling your level. Assuming everything is configured properly, your level should compile and Quake should run with your new level loaded (unless you're already running Quake in the background). If something goes wrong, you definitely need to read the troubleshooting notes.

Did it work? If so, you should find yourself standing in your room. At this time, the light level is set at fullbright, because we haven't done any custom lighting yet, so it may not appear quite like you want, but the important thing is you've created a map and are playing it. Cool, huh?

Run around, look up, look down, do whatever you want. It's your map after all. When you're done looking over your map, exit Quake and return to BSP.

Well that wasn't so bad was it? What do you say we take a break? So far we've accomplished quite a bit in learning the basics of BSP, but we've just scratched the surface of what this editor can do. In Lesson 2, we'll get into lighting our map, which is an important aspect of Quake map building.

Return to Quake Tutorial List                    Go to next lesson

|| Back to Main BSP HQ Page || Back to Quake Tutorial Page ||

BSP is the sole creation of Yahn Bernier. I am only a dedicated user, reporting news and making tutorials so Yahn can spend more time enhancing BSP. QUAKE is a registered trademark of Id Software, Inc. QUAKE(r), the stylized reproduction of the QUAKE(r) trademark, including, without limitation, the Q in QUAKE(r), and the images depicted in QUAKE(r) are the copyrighted property of Id Software, Inc. So there :-P

This web page was created and is being maintained by me (DeadMeat). The main logo for this site was made by QuakeGod. Most everything else was made by me.

All content appearing on this site after August 30, 1997 was written by DeadMeat. Also, DeadMeat's BSP Tutorials were created entirely by DeadMeat. All unauthorized use is prohibited. (c) 1997