This will be straightforward guide about how to make a map for Red Orchestra 2. The guide will not teach you how to maneuver around the SDK. It assumes you have the SDK installed and you took some steps to learn how to use it.
If you don't know anything at all then you should take a look at this and learn your way around the SDK before continuing. If you are a true adventurer though, please proceed.
I have set up a steam group for everyone who wants to be a map maker. Here you can meet other map makers and ask questions and find help for map making.
If you liked the tutorial please rate it by pressing the thumbs up button! =)
Let's get started.
Setting Up Terrain
When you first open the SDK you will shown a screen similar to this. (1) represents the Content Browser window. This window will be used to place objects into the game. It is basically an index of every object. The first tab contains objects that you will see in-game such as static meshes (3D objects), particles (smoke, fire, snow), and materials (textures). (2) is one of the basic tool bars in the sdk. This one we will be using today and you should familiarize yourself with it.
One of the first things you need to create a map is terrain. Terrain represents the area that players will be standing on and running around on and dying on. You can change the terrain up by using the terrain tool but that will be another tutorial. You will need to find the tools button in the menu bar. Click that and you will see the (3) "New terrain..." button. Click this.
You will be given a window with some numbers. Don''t change anything. Basically the location is where you want the terrain to start in the xyz-coordinates. The patches represents the size of the terrain. For this tutorial, just click next until you terrain shows up. It should look like this (4).
Right now it looks plain because you didn't add a terrain layer. Terrain layer represents a layer of terrain material that you can paint on. Terrain materials are basically the textures such as grass, snow, or dirt.
Setting Up Spawns and Objectives
Now you want to add ROPlayerStart actors. These guys represent the individual player spawn. You will want to place one for each player spawning. If your spawn supports 32 players, then you will need 32 ROPlayerStart actors.
So click on the button next to (5). This opens the content browser which I discussed before. Change the tab to the (6) Actor Classes tab. This is an index of the actors you can place in-game. Actors represent objects that you can not see in the game but they have important functions to game play such as spawning, light, and cover. Find (7) ROPlayerStart and select it.
Now you want to go back to the 3D viewport and right click (8) somewhere on your terrain actor. This area will be where you want either the Axis or Allies to spawn. Click on the button (9) Add "ROPlayerStart Here". You will see an actor appear (8) that looks kind of like a jacks[www.shindigz.com].
I placed down 16 ROPlayerStart Actors for the (10) Allies spawn and 16 for the (11) Axis spawn.
Now we will add a ROVolumePlayerStartGroup. This is a volume or box that encompasses the ROPlayerStart actors. It allows you to tell the game that inside this box is a spawn point. We can designate which team the spawn point belongs to later in the Kismet.
Select one of your (12) ROPlayerStart actors. We do this so we can build the volume in this area. Next look for the (13) Cube button. A cube is the easiest volume to encompass all the ROPlayerStart actors. Right click on the (13) Cube button and you will see a (14) window appear. This is the Brush Builder window. You will see some (15) numbers. The default values for xyz are 256. That is a little too small so lets change it to 512 for each x, y, and z. Next click on (16) build.
You will now see a (17) volume that surrounds your ROPlayerStart actors. This is the builder brush and you use this brush like a paintbrush. Instead of paint, you will use volumes such as the ROVolumePlayerStartGroup that I mentioned earlier. So find the (18) Add Volume button and right click it.
You will see a list of volumes you can add but the one we want is (19) ROVolumePlayerStartGroup. Click on (19) that. You will want to follow the same steps to make a ROVolumePlayerStartGroup on your other spawn as well.
You should get something like this.
Next we will want to add an objective. Lets open up the (22) Content Browser again. Then select the (23) Actor Classes tab. Find (24) ROObjective. Now lets place the objective in the middle of your terrain so right click somewhere in the middle of your terrain and select (25) Add ROObjective Here.
Now we will need a objective volume. Basically this is the area that the game engine will use as the cap zone. Select your (26) ROObjective Actor. We do this so when we build our objective area it will center around the ROObjective actor. Next right click on the (27) Cube button and you will see the familiar (28) Brush Builder window. Change your x, y, and z to 512 and press build.
Next right click (30) Add Volume and find (31) ROPlaceableVolume and select that.
Now we want to tell the game that the ROPlaceableVolume that we just created belongs to the ROObjective actor that we created earlier. To do so, first open up your (32) Content Browser. Select the (33) Scene tab. The scene tab is an index of all the actors and content in the game level. Right now you probably don't have much. In the (34) Filter Text box, type in ROPlaceeableVolume. You will see that you have (35) one. Select (35) this.
Now select your (36) ROObjective Actor in your 3D viewport and press F4. This opens up the properties window.
You will want to search for (38) volume. Then select your (39) ROPlaceableVolume. It is important that you find the (40) Obj Volume because this is where you tell the game how to link up the volumes to the objective actor.
Now press the (41) arrow. This is the button for "Use selected object in Content Browser." You will see that you have successfully linked the (42) volume to the objective actor.
Now you should have something that looks like this.
Time to work with the kismet. The kismet is basically the algorithm or scripts that tells the game how to set up the objectives and spawns. It is important that you get this correctly.
Press the (43) Kismet button and you will see the (44) Kismet window.
Right click in the Kismet window and find (45) Level Loaded and click on it.
You will now see a (46) Level Loaded object. We will be using this as event to start up the game. Next you want to enable your spawns so right click and select (47) Enable PlayerStartGroup. You will need three of these.
(48) As you can see I added three of them. Next we will want to enable objectives so right click and select (49) Enable Objective.
Now we will activate objective. Right click and select (50) Activate Objective. Now you are wondering why do we need Enable and Activate for Objectives? Enabling the objectives tells the game that this objective will be used for this level. Activating the objective tells the game that this objective is the current ACTIVE objective that people will be defending or attacking.
Let's start linking up the spawns. Select one of your (51) ROVolumePlayerStartGroup in the 3D viewport. Then go back to your kismet window and right click underneath the first Enable PlayerStartGroup and select (52) New Object Var Using..... You will need to do the same for your other ROVolumePlayerStartGroup.
Now that you know how to add objects inside the kismet, you should try to get your kismet looking similar to mine. To add the objective actor into the kismet, it is the same steps as you followed earlier. Just select it in the 3D viewport and right click and add it as an object. Please try to set it up similar to the picture.
Now we will start to link up the objects to tell the game how to set up the Initial Spawn. You select the nodes and basically connect them. Take a look at (54). I connected Level Reset to Disable. This means that at every start of the game these spawns will be disabled. Why would we want that? Well this first step you want to disable ALL the spawns in your map. For this example, we only have two spawns. But in stock and custom maps, there are well over 10 to 15 spawns. You will need to disable all of them at the beginning of the game. We do this so they do not accidentally activate at the start of the game. That would be very bad!
Next we choose our Axis spawn and our Allies spawn. As you can see I chose (55) ROVolumePlayerStartGroup_0 as my Axis spawn and (56) ROVolumePlayerStartGroup_1 as my Allies spawn.
Next link up the remaining objects (57).
Almost there! Now we need to tell the game what to do when an objective is captured. Right click on your kismet window and select (58) Objective Captured.
You will see (59) a new Objective Captured event. Next you want to select (60) Objective Status.
Then link it up with your objective. (61) What does this mean? Basically it is saying once an objective is captured, check the status of the objective. Right now we don't really know what should happen after this because we didn't specify if it was attack/defend or a neutral game. Lets make it a attack/defend and have Allies be the defender. \
Select your (62) ROObjective Actor and press F4. Then search for (63) state. Change the (64) Initial Obj State to OBJ_Allies. This means this objective belongs to the Allies.
Now we can designate what happens when the Axis capture the objective. Right now we can (65) disable the spawns and deactivate the objective. If there were more spawns and more objectives, this is where we would enable and activate them.
Lights, Bots, and other stuff
4. Light, Bots, and other stuff
So you probably can't tell right now but there is actually no light in your game. The reason you see light is because you are in unlit mode. So lets add a light! Open up the (66) Content Browser and go to the (67) Actors Classes tab and find (68) DominantDirectionalLight and select it. There are many other light actors but we will be using this one. Then right click on your terrain and select (69) Add DominantDirecationalLight Here...
Now we need bots. Hopefully you didn't close the Content Browser but even if you did, I am sure you are an expert at opening it up by now. So take a look at the (70) content browser again and find (71) pylon and select it. Right click on the terrain and select (72) Add Pylon Here. A pylon is basically an actor that creates navigation meshes in an area. Navigation meshes are areas that Bots are allowed to traverse.
Now we need to create the Bot paths. At the top of the window find the (73) Build Paths button and click it. You will see a (74) Building Map window. Just let it run and you will have bot paths. Remember, our map is really small so we only needed one pylon. When you have a larger map, you will need many pylons. You also need to make sure the pylons overlap each other slightly because this is how you link them and allow Bots to go from Pylon to Pylon.
After you finish building paths, you will see a map check window (75). Looks like we need to build light and set our KillZ. Let's build light first.
Click on the (76) Build Light button and you see the (77) Lighting Build Options. Uncheck (78) Use Lightmass. You won't need that for now because this is just a test. But later when you build your own map, you will need to use the lightmass. Then click okay to build light!
So you get the (79) mapcheck window again and it tells you to set the KillZ. So click on View in your menu bar and find (80) World Properties and click on it.
You will open a new (81) window for World Properties. Search for (82) kill. Then type in a number like -2000 in the (83) Kill Z box.
You will want to set your game type. Hopefully you still have the World Properties window opened. Search for (84) game. Then change the type to (85) territories.
No animals were hurt in the making of this tutorial but one human was very tired.
Set up your mapinfo[wiki.tripwireinteractive.com] and role setup[wiki.tripwireinteractive.com]. Then you will be able to play by right clicking on the terrain (86) and clicking play here!