How To Build an SOF Map
First you’ll need Soldier of Fortune and the SOF SDK and INTRUDER’s SOF Map Tutorial. WHY well the SDK has the editor and the game is needed for loading your maps and last but not least my Tutorial, which will tell you exactly how to install the SDK and then setup the editor and example files for you to look at and see how I do things with the editor and also it contains a screen shot of my prefernces screen, so you can see how to set yours up.
Let’s Get to It
Start SofRadient (double click your SofRadient.exe in the base folder or your desktop shortcut if you have made one.) and you will be presented with a screen that at which. You can change the colors in Radiant by just going over to the ‘Misc’ menu and into Colors Themes. Now go to the ‘Edit’ menu and select preferences to something to look like my prefernces screenshot jpg. Most of the options you can set as you like, however, it may be a good idea to set just a couple the way I suggest to make the following this easier. First up is the ‘Optimise Interface’ dropdown menu. Select ‘Quake2’ from this. In the ‘Mouse’ section, select the number of buttons as that are appropriate. In the ‘Views/Rendering# section, select the one on the far left. Make sure ‘Mouse Chaser’ and ‘Paint Sizing Info’ are selected from the ‘New Functionality’ section. Finally, set the ‘Auto Save’ to ‘Every 5 minutes’ because you never know what might happen, and you wont lose you work. Now looking at the editor screen. You will see on your screen has 4 views or windows they could be called, at the far left is the 2D frontview, which is a grid representation, where you will see the positioning of your brush that is selected. Top right is the “YZ” 3D Camera Frontview of the map itself. Bottom right is the Texture view window that shows what textures you have loaded up and ready for selection, using its scroll bar you can see all the textures in the texture set that you loaded into the editor and this is also the place that you select a texture to be applied to a brush. And last but not least that big view window in the center of the editor is your 2D view workroom or building area and its views can be changed at the view button by clicking it and scrolling down to layout and selecting “XY(Top) will give you a top view, looking down at your work and by selecting “YZ” at the View/Layout button, you will see your work from its sideview and selecting “XZ” at the view/layout button will give you a frontview of your building area. How these views are used is really up to you, but always check your brush work from the top and side views to make sure its correct, before deselecting it and moving on to your next brush.. These windows can also be resized by dragging their borders. You might find that making 3D view a bit smaller helps. You can pan the 2D views around by right clicking and moving the mouse. Zooming in and out is achieved with the Delete and Insert keys respectively. The 3D view is more involved, but fairly intuitive. Use up and down cursor keys to move forward and backward left and right cursers to rotate left and right, and also Comma. And the A and Z keys will look up and down while the D and C keys will strafe up and down. It is very important that an empty level is not a huge expanse of void, but should be thought of as a solid block. You add walls, floors and ceilings to this to create empty rooms, corridors and so on. This geometry system the editor uses, is why most first-person shooters are based indoors, as rendering large outdoor areas eats up CPU cycles. A Brush in context level design is any solid or semi-solid object that is part of the level, such as walls, floors, ceilings, tables and water. We’ll also be referring to “Entities” later, which can be thought of as anything in the level that’s not part of the architecture. This would include weapons, ammo, player start positions, triggers, and so forth.
Your First room
All maps start with a room, and creating one is really simple. First of all, draw out a floor plan of your room on paper, so you have an idea of what your going to build with the editor, because a builder wouldn’t even think of building a structure without blueprints or some sort of plans.. Ok lets set the grid size to something manageable. First go to the “Grid” button in the top button row and click it and make sure the “Grid8 &4” is checked and then press the 4 key on the top row of the keyboard to set the grid size to 4 units. Ok now go to the View button and click it and scroll down to “Layout” and click on XY(Top).. Ok lets now load up a set of textures by going to the “textures” button, click it and scroll down to the set you want to load and then click on it and it will load that set up and after the hourglass dissappears, then simply click and drag a box anywhere on the grid. This is called making a brush. Looking at the YZ Side and XZ Front views, you may notice that a brush is too low or high, you can use the c key to go up with the camera view and the d key to move down your camera’s view and by using the blue camera icon as a guide. You can change the height in these views by left-clicking for a second time on or just above the relevant brush edge, and dragging. Also you’ll find a Z size of it, in the “YZ” view, placing a your ceiling at about 192 units should give a nice comfortable ceiling height, at 128 its alittle lower, but a normal height for a small room. Remember also that your players size is 9 units high by 4 units wide by 4 units thick, so doorways should be at least 10 units high and 6 wide, but I make mine 6 to 8 units wide for easy access. Ok back to your brush, you can stretch it out to make a floor or a wall out of it, by placing the cursor arrow on the small thin line thats on the right side of the red highlighted brush, now left click and hold and drag that to the right and make it whatever size ya like. Ok enought playing, lets make a real floor, use the XY(top) view at the view/layout button, to be able to view it from above and make it 128 units wide by 128 units long, now go to the view/layout button and select “YZ” and then you will see your floor from its side view and now you want to make it 2 units thick and make sure that it touches the left grid sides zero line, look at the left of your grid and you will see numbers like 0, 64, 128 and so on and looking lower below them, you’ll see they start to get minus postitions like -64, -128, -192 and so on, These are your grid postitions and its always best to start your map around the zero cordinates and build out, up and down. This allows alot of leaway for building. Ok now that your floor is the sized, now go to your texture view box and find a texture that will look good as a floor, there are floor textures in every texture set, but you don’t always just have to use a floor texture and can use anything you like as long as it will look good as a floor. Ok so you found the one you like, now just place the cursor arrow on its center and left click twice and it will apply the texture to your brush. Ok now while that floor brush is still selected and your looking at its side view, go to the “Selection” button up top and click, then scroll to “Clone” and click on it and it will make an exact copy of your floor and deselect the 1st floor brush at the same time, now move that new brush up so its 128 units or 192 units above the 1st floor brush and line it up so its corners are all in line with the 1st floor brush below and then go back to the texture box and find a ceiling texture for it and click on it and it will apply your ceiling texture to the new ceiling brush, now hit the Esc key and it will deselect it and your done with your floor and ceiling. Cool huh, you now have one third of your room made, now for the walls. Go to the view/layout button again and select XY(top) and then put your cursor arrow on the grid and hold the left mouse button down and drag a new brush out and make it 2 units thick and as wide as your floor and then let go of the mouse button and put your cursor arrow in its center and drag it to the side of your floor, so its just touching the floors side, now go to the view/layout button and select “YZ” Now you will see your wall from its side and here you want to drag it up to your ceiling, so its just touching it and then stretch it out so it meets your floor down below and then apply a wall texture to it from the texture window, like we did for the floor and ceiling. Now go back to the view/layout button and select “XY(top)” and then go to the “Selection” button and select “clone” and take the new wall and move it to the oppsite side from the one that you just cloned from, so its directly across from the other wall. Now lets see if you can make the last 2 walls by yourself, do it just as we just did, the first 2..
As you can see from your Camera view window, everything that has been constructed by you, also has textures that were applied to by you also. But lets just say that you don’t like the looks of one of the textures now and so you want to chnage it to something else. Ok just go to the “Textures” Button at the top of the screen and click and then select “armory” and it will load that set. Scroll down the texture list until you find the a wall texture. In the Camera view, ctrl-shift-click on one of the walls to select a surface, then click on the “texture” to apply it. Repeat this for all the walls as shown below.You can press the “Esc” key in the Camera view to deselect surfaces at any time. It can be difficult to find a texture by name in the Console Texture list, so now is the ideal time to introduce the Surface Inspector. To get to the Surface Inspector go to “Textures Surface Inspector” or just hit the s key. This is just a useful tool for manually manipulating surfaces. So lets just say that we know that the texture we want is ‘water2’, and we know it’s in the ‘uganda’ group, and this allows us to specify it directly in the ‘Texture’ field in the Surface Inspector as ‘uganda\water2’, Clicking ‘Apply’ and it will paint it on the surface of the brush that you have that is selected at the time. As in practice then, using the Surface Inspector, you can apply the larger block textures from the ‘armory’ group to the floor, and the larger ceiling textures (but small ones will work also) from the ‘armory’ group to the ceiling. When you apply a ceiling texture, you mite notice that it doesn’t look just right and that means it may be unevenly aligned with the ceiling. There are a number of ways to align it, the ‘Horizontal Shift’ and ‘Vertical Shift’ values in the Surface Inspector being one. Another way being easier and less accurate, is to Ctrl-Shift-Click on the surface in the camera view. Once selected, holding down ‘Alt’ and moving the mouse will slide the texture around and position it. By going to the “textures” button you can select to have the “Move Texture Lock” checked or unchecked, checked the brush and texture can be moved around anywhere and the texture will not change its position on your brush, unchecked it will allow you to slide your brush around so you can properly align the texture on your brush. What I usually do is to uncheck the “Move Texture Lock” and slide my brush entill the texture face is correctly lined up on my brush and the n I check the “Move Texture Lock” so its locked and slide the brush back to where it goes, so its back to its original postition in my map, but now the texture is properlly aligned and looks good as it should.
Ok Let’s look at your map
I bet your just dying to look at your map, well why not, lets see what you have come up with. Before you do view the map we have to add a number of entities to actually view the map. First thing tho we need some light in it. Although it may look very nice on the camera view, thats not what you see in the game its self, unless you add lights to it. When you run the map, you will be inside a level alright, but you wont be see anything because its pitch black in there. So lets make light. Select the ‘XY Top’ view and right click to bring up the bar entity menu, from there scroll down and select ‘light’. use the 2D view and drag the light into the room. If you deselect it by accident, press ‘Esc’ key to clear all selections and then ‘Shift-Click’ on it to pick it up again. Ok now that your light is posititioned, hit the “k key” and select the color of the light that you want it to be. Once done with that hit the “k key” again and then hit the “n key” and this brings up your entities properties menu, here you will see towards the bottom the word “Key” followed by a box and then below it is the word “Value” followed by a box, at the word “Key” type in its box ‘light’ <without quotes> now hit the tab key and the cursor will move to the ‘Value’ box, there type a number from 5 to 1000 and that will be the amount of light that your light gives off in the map, its default value is 300 which is pretty bright. Now another thing we need to add is the spawn point. Go back into the ‘XY Top’ view, right-click, and go to “Info” and select ‘info_player_start’. Position this larger entity so that’s its just resting on the floor, not going into it. Use the camera to check it. Also add some info_player_deathmatch spawns if you plan on having your map played online in deathmatch. You will also notice that the player spawn entity is a large red block, and the light is represented with a white diamond. You’ll have to learn this otherwise you’ll never get the hang of it. The last step is to allow SOF MAP to compile, vis and light your level. Save your level – it will go to the ‘Maps’ subdirectory within your sof base folder by default. Now head over for the ‘Bsp’ menu at the top of the screen and choose ‘bsp_fastvis’. The editor will then go into a DOS window and run sofarghrad.exe, dumping a finished .BSP file in your maps directory. It could crash at this point and that means something is wrong and you have to correct its error. To actually run your map, you need to be in SOF. So exit the editor and go to your base\maps folder and find the name of the map you just made, it will look something like “mapsname.bsp” mapsname being the name that you gave the map when you saved it, now right click on it and cut it and then go to your “user\maps\dm folder and paste it in there and exit and start SOF, once the activision screen comes up , hit your Esc key and the console will come down and then type “map dm/mapsname” <without quotes> hit enter and SOF will load your map and you can walk around in it and check it out.
Using other lighting sources
Well you have gone this far why not make another light, but this time, lets make a flourescent ceiling light for example. We’ll create a simple one by just making a flat brush. The first step is to create a flat Brush. Zoom in closely in the ‘XY (top)’ view with the Insert and Delete keys. Draw out a square Builder Brush of 3 grid units wide by 6 grid units long. Make sure its 1 grid unit thick in the “YZ” side view. Now move it so its aligned on your ceiling and just touching it. Check the XY Top view also to make sure it looks aligned within the room from above. Becareful because having overlapping brushes is a very bad practice indeed. With the brush still selected, apply the “light_flourescent” texture from the “subway” texture set. If the whole brush is selected the texture will be applied to all faces. Now for the actual light. We need to add two flat, thin, rectangular brushes. Draw one in the ‘XY Top’. You might need to lower the grid size to line it up. Apply the ‘Common nodraw’ texture to the whole brush. this texture is one of a number of special ones within the game. It appears pink and nasty in the camera view, but is actually transparent and totally ignored within the game. Then create another brush, exactly the same at a right angle of the first. Its really quite simple! In the camera view, deselect everything, then ‘Ctrl-Shift-Click’ on the outward facing surface of the first brush to select that surface only. then using the ‘Surface Inspector’ apply the “light_flourescent” texture, and then check the light box and at the value box, type 200 and center it. Within the Surface Inspector you may need to specify the ‘Vertical Stretch’ as 0.5 to shrink the texture vertically. Do the same to both faces of the second right angled brush and then click on apply and the ok. Then save, BSP, and test your level. You’ll notice that the right angled structure is fairly obvious up close. this is why lights like this are much smaller in professional levels, and way up to the ceiling so you’re always looking up on them. The light textures actually radiate light, so you don’t need a separatelight entity when you use them. The earlier tutorial explains how to get a new room. Create you room as described in the your first room tutorial and at one end make a brush which is half the height of your room and enough room for the player to stand on. a depth of about 128 units should be fine. The red outlined brush is our ledge Load up the ‘uganda’ texture set and locate the texture called “1_grassdirt” Now in the area where the ledge is not located create another brush but this time make it so the height of it is 16 units lower than the ledge (Like a swimming pool!) and use the “water2 texture for it. Once you are done compile the map and go for a swim. You can also use lava, slime and any other liquid texture to get this effect, but just remember, use the same idea. Rather then redo all of step 4 to create other lights, you can make an exact copy of it, so you don’t have to struggle to totally redo the light or any other object. In the camera view, get up close to the light. Then ‘Shift-Click’ on each individual element. the rectangle, and the two lighting brushes. Then just choose ‘Selection Clone’ from the menu and a selection copy will appear right next to the original light. then you can just move it to another part of your map. But if you want to place it on a wall you have to use ‘Flip X, Y or Z’ Forexample if you use ‘Flip X’ the light will change its self around to be able to be placed on the wall. Ok, we have gone this far, and I know you are getting bored of one room so lets make another room to our previous room. Lets do a hallway. Create it just in the same way as the first one, but make it longer and higher. Ok, we are nearly there, now, the second step is to knock a hole through the wall so we can actually join the two rooms together. So create a small rectangular brush, as big as the wall, and position it, where you want to cut thru at. When positioned use the ‘CGS Subtract’ tool on the toolbar to create the brush. Now this is very important, use the ‘Delete’ key not ‘Esc’ to delete the brush, as you will notice this should leave a gap through the wall! You have to make sure that the textures match as your first room, otherwise you will get texture clashing. Clone one of the lights, put it on the new ceiling. Compile it and have a look your self. Nice. But a quick note you might by accident delete a wall which you want. To change this just restart the whole thing by selecting “Undo (no really;)” at the edit button.
Weapons And Pickups
Now these are the easiest of all to add to a map. First just right click anywhere on the grid and then when the menu comes up scroll to “item” and when the next menu opens scroll to the item you want to add to your map and click on it and it will appear on your map and then you just place it where you like, but look at the top and side views of it, to make sure its lined up and not going into a wall, ceiling, floor or anything else for that matter and also move your camera view so you can see where you placed it within your map, that way you’ll get an idea of if its going to look ok being where you put it. Anyways when the posititioning of it is done just hit the Esc key and thats it, all done or if you like before you hit Esc, you can clone it and place the new one somewhwere else, this saves a little time, especially when placing grenades and C4.
Ok lets use an entity now and make it a func brush
First off make a brush for what your doing be it a wall or floor or what ever, then apply a texture to it, now with it still selected right click anywhere on your grid and a bar menu will come up and there you scroll to “func” and another bar menu comes up and you scroll to “func_breakable_brush” and left click on it and now the brush you just made is a breakable brush, which is an “Entity” and which can be shot or knife slashed and destroyed, but wait we’re not done yet, now hit the n key while the func_breakable_brush is still selected and a new menu will pop up, here you set the properties of your entity brush, in the scroll window of this menu is the properties that you can add to this entity, but for times sake you can check that out later and play with it. Anyways type at the word “Key” in the box type
and then hit the tab key and it will move the cursor to the “Value” box and there type
hit enter and now at the word “Key” type
hit the tab key and at “Value” type
hit enter and then heres the rest of what you need to add to it
and then check the “PAINCHUNKS” box, then hit the Esc key to deselect your entity brush and your done. Save your work and it will be there and working in your compiled map, when you run it.. Now look at the menus scroll box to see what I just set you up with for the properties of your func_breakable_brush.. Now this practice of making a func brush works for just all the func entities except some which you will find about that its not needed for.