RvS Mapping Tutorials
Odds & Ends
Navigation

RvS Game Types and Mission Objectives
-by Beckett, last updated April 21, 2003

This tutorial will teach you how to setup the necessary insertion zones, actors, and mission objectives for all 12 Raven Shield game modes.

This tutorial assumes that you are already familiar with UnrealED and know how to perform basic functions in the editor and how to load a simple custom map into Raven Shield. If this is not the case, take a look at my earlier tutorial,
Building Your First Raven Shield Map, and then come back to this one.

Note: If you're working on a multiplayer-only map and don't care about single player or coop mission objectives, I recommend you read the first section of this tutorial--where we build the basic geometry of our sample map--then skip down to Part III. which covers Adversarial game types. (But keep in mind that everyone has a different game type that they love, so if you choose not to support certain game types, you will alienate players would have otherwise downloaded and enjoyed your map.)

Let's get started. Create a builder brush cube sized Height=640,Width=2048,Breadth=2048. With this cube, subtract a total of six rooms, each spaced 512 units apart, and each with a different texture. Then, subtract a hallway sized Height=320,Width=320,Breadth=14848 which connects all six rooms (make sure you align the floor of the hallway with the floor of the rooms). Your map should look roughly like this:




Now we're going to designate a name and purpose to each room; this may seem silly at first, but I promise it will help us to keep the rooms straight throughout this tutorial, and it will help you to keep track of each of the insertions and objectives that we setup for each of the 12 game types. In the static mesh browser, open "Garage_SM.usx", choose "Cars", and select "PoliceVan". Right click anywhere in the first room and choose "Add Static Mesh: 'Garage_SM.Cars.PoliceVan'". I'll refer to this room as the Front Street. In the static mesh browser, choose the "Bureau" category and select the "Bureau" model. Right click anywhere in the second room and choose "Add Static Mesh: 'Garage_SM.Bureau.Bureau'". This room will be the Mayor's Office. In the third room, place the 'Garage_SM.Trees.plante_02' static mesh. This will be the Courtyard. In the fourth room, place the 'Garage_SM.cafeteria.Snak_Machine' static mesh. This room will be the Cafeteria. In the fifth room, place the 'Garage_SM.Bureau.BossTable' static mesh. This will be the Conference Room. Open the Actor Classes browser, expand "Emitter | R6SFX", and select "R6SmokeExtraction". Right click anywhere in the sixth room and choose "Add R6SmokeExtraction Here". I'll refer to this room as the Back Alley. Adjust the positioning of the static meshes as necessary, making sure especially that each one is aligned with the floor.

In the Actor Classes browser, expand "Info" and select "ZoneInfo". Right click somewhere in the hallway and choose "Add ZoneInfo Here". Make sure the ZoneInfo isn't embedded into the floor. Open the ZoneInfo Properties, expand "ZoneLight", and set AmbientBrightness to "150". Hold [Ctrl] and left click to select the hallway floor and the floor of each room together. Right click and choose "Surface Properties (7 selected)". Set Main Floor and Sec. Floor to "100" and select the "Walkable" checkbox. Click the "Apply" button and close the Surface Properties window. Right click in the first room and choose "Add Path Node Here". Place path nodes throughout the map, ideally at least six in each room and 20 spaced throughout the hallway (remember that if your path nodes are spaced over 1000 units apart you will see a warning message when you rebuild the map). Rebuild and save the map.



Part I. - Single Player


Single Player Story Mission

Let's add our first insertion zone. Open the Actor Classes browser, expand "NavigationPoint | SmallNavigationPoint | PlayerStart | R6AbstractInsertionZone", and select "R6InsertionZone". Right click in the middle of the Front Street and choose "Add R6InsertionZone Here". Double-click on the insertion zone (represented as a yellow square) to open the properties window, and expand "Display". Change m_bOutlinedInPlanning to "False". Change DrawType to "DT_StaticMesh". Scroll down and select "StaticMesh". Click the "..." button, and browse to "Garage_SM.Deployement_Zone.Deployement_Zone_01". Then go back to the properties window and click the "Use" button. In the 3d view, the yellow square will change to a larger square with the word "plan" plastered over it. Reposition and rotate the insertion zone as necessary so that it does not overlap any walls or the police van. Vertically, this insertion zone should sit slightly above the floor. Back in the properties window, expand "R6Planning". Change m_iPlanningFloor_0 to "100" and change m_iPlanningFloor_1 to "100". Select m_PlanningColor, click the "..." button, select the dark red color in the fourth row, first column, and click the "OK" button. Expand R6Availability. Set every game type to "MFO_NotAvailable" except for m_eStoryMode (after the first one, press [DOWN ARROW], then the "m" key, [DOWN ARROW], then the "m" key, etc. to do this quickly). Note that 'StoryMode' refers to the single player practice mission while 'MissionMode' refers to the Coop mission game type

Let's create four evil terrorists for our mission. Open the Actor Classes browser, expand "R6DeploymentZone", and select "R6ZonePoint". Right click in the Mayer's Office and choose "Add R6ZonePoint Here". Open the properties for this terrorist and expand "R6ZoneTerrorist". Expand "m_Template", expand "[0]", and change m_szName to "Oil-1". Set m_eEngageReaction to "EREACT_AimedFire". Expand "R6Availability" and set every game type to "MFO_NotAvailable" except for m_eStoryMode. Close the properties window. With this terrorist still selected, press [CTRL]+w three times to create duplicates of the R6ZonePoint. Drag one into the Courtyard, one into the Cafeteria, and one into the Conference Room, leaving the fourth in the Mayor's Office.

We're going to make this a pretty complex mission, so that I can demonstrate different types of mission objectives. First we're going to place a hostage, then a bomb, then a mission-critical laptop computer. Select the terrorist in the Cafeteria and press [CTRL]+w. Open the properties for the new copy; we're going to change him into a hostage. Expand "R6ZoneTerrorist" and set m_iMaxTerrorist and m_iMinTerrorist to "0". Expand "R6ZoneHostage" and set m_iMaxHostage and m_iMinHostage to "1". Expand "m_HostageTemplates", expand "[0]", and change m_szName to "Suit2-1". Move this hostage partway across the room from the terrorist.

Let's add an extraction zone so that we can rescue this hostage without having to neutralize all of the terrorists. Open the Actor Classes browser, expand "NavigationPoint | R6AbstractExtractionZone", and select "R6ExtractionZone". Right click in the middle of the Back Alley and choose "Add R6ExtractionZone Here". Double-click on the extraction zone (represented as a yellow square) to open the properties window, and expand "Display". Change m_bOutlinedInPlanning to "False". Change DrawType to "DT_StaticMesh". Scroll down and select "StaticMesh". Click the "..." button, and browse to "Garage_SM.Deployement_Zone.Deployement_Zone_01". Then go back to the properties window and click the "Use" button. Change DrawScale to "1.5" to resize the extraction zone. Expand "R6Planning". Change m_iPlanningFloor_0 and m_iPlanningFloor_1 to "100". Select m_PlanningColor, click the "..." button, and select the solid green color in the fourth row, third column, and click the "OK" button. Expand R6Availability. Set every game type to "MFO_NotAvailable" except for m_eStoryMode.

Next, we're going to place a bomb. Open the Actor Classes browser, expand "R6InteractiveObject | R6IActionObject | R6IOObject", and select "R6IOBomb". Right click in the Conference Room and choose "Add R6IOBomb Here". We could change the static mesh of the bomb if we wanted to, or we could hide the bomb actor and place it right on top of a visible static mesh to represent to bomb, but I think the default model will work fine here. Open the properties for the bomb and expand "R6ActionObject". Set m_blsActivated to "True" to arm the bomb. Expand "R6Availability". Set every game type to "MFO_NotAvailable" except for m_eStoryMode.

Now we'll place the laptop computer. Return to the Actor Classes browser, expand "R6InteractiveObject | R6IActionObject | R6IOObject", and select "R6IODevice". Right click on the desk in the Mayor's Office and choose "Add R6IODevice Here". Open the properties for the device and expand "Display". Select StaticMesh and then click the "..." button. Open "Island_SM.usx", choose "BreakableObject", and select "LapTop". Return to the properties window and click the "Use" button. Expand "R6ActionObject". Set m_bRainbowCanInteract to "True" and m_eAnimToPlay to "BA_Keyboard". Expand "R6Availability" and set every game type to "MFO_NotAvailable" except for m_eStoryMode. Reposition the laptop to sit nicely on the desk, so that the Rainbow operatives will be able to reach it.

Let's place some mission intelligence icons to indicate the location of our three objectives on the map. Open the Actor Classes browser, expand "R6ReferenceIcons", and select "R6HostageIcon". Right click near the hostage in the Cafeteria and choose "Add R6HostgeIcon Here". Open the properties window, expand "R6Availability" and set every game type to "MFO_NotAvailable" except for m_eStoryMode. Expand "R6Planning". Set m_iPlanningFloor_0 and m_iPlanningFloor_1 to "100". Drag this icon directly over the hostage. Return to the Actor Classes browser, expand "R6ReferenceIcons", and select "R6ObjectiveIcon". Right click near the bomb in the Conference Room and choose "Add R6ObjectiveIcon Here". Open the properties window, expand "R6Availability" and set every game type to "MFO_NotAvailable" except for m_eStoryMode. Expand "R6Planning". Set m_iPlanningFloor_0 to "100" and m_iPlanningFloor_1 to "100". Drag this icon directly over the bomb. Press [CTRL]+w to make one copy of the R6ObjectiveIcon. Hold [SHIFT], drag the copy into the Mayor's Office, and place it directly over the laptop computer (you may want to raise it a bit off the floor). Note that in single player games, objective icons appear in both the planning stage map and the in-game map, whereas hostage icons only appear in the planning stage map.

Next, let's assign terrorists to interact with each of these actors. Select the R6DZonePoint terrorist in the Cafeteria and open his properties. Expand "R6DZoneTerrorist" and set m_HostageShootChance to "80". Select m_HostageZoneToCheck and click the "Add" button. With [0] selected, click the "Pick" button, then carefully left click the eyedropper on the hostage in that same room. Now there is a high probability that the terrorist guarding the Cafeteria will try to kill the hostage when he realizes he's in danger.

Enabling terrorists to toggle (interact with) bombs and IODevices is a little more complicated; we need to use InteractiveObjects to tell them what to do. Open the Actor Classes browser, and select "R6InteractiveObject". Right click next to the bomb in the Conference Room and choose "Add R6InteractiveObject Here". Then, open it's properties. Expand "Advanced" and set bDirectional to "True" and bHidden to "True". Expand "Collision" and set bBlockActors, bBlockPlayers, and bCollideActors all to "False". And before we forget, expand "R6Availability" and set every game type to "MFO_NotAvailable" except for m_eStoryMode. Expand "R6Action" and select m_ActionList. Click the "Add" button. Select New, choose "R6InteractiveObjectActionGoto", and then click the "New" button. Expand "Goto", select m_Target, click the "Pick" button, and then click the eyedropper on the InteractiveObject actor (not the bomb). Select m_ActionList again. Click the "Add" button. Select New, choose "R6InteractiveObjectActionPlayAnim", and then click the "New" button. Expand "PlayAnim" and set m_vAnimName to "RelaxValve_b". Select m_ActionList once more. Click the "Add" button. Select New, choose "R6InteractiveObjectActionToggleDevice", and then click the "New" button. Expand "ToggleDevice". Select m_aIOBombs and click the "Add" button. With [0] selected, click the "Pick" button and left click the eyedropper on the bomb.

Now reposition the InteractiveObject actor so that it sits a foot or two above the floor, exactly where you want the terrorist to stand when he sets off the bomb, and make sure the red arrow points right at the keypad on the bomb so that he'll face in the proper direction. Now, Select the R6DZonePoint terrorist in the Conference Room, open his properties, and expand "R6DZoneTerrorist". Select m_InteractiveObject, click the "Pick" button, and then left click the eyedropper on the InteractiveObject actor we just created (not on the bomb). That's it! Now, at the first sign of trouble, the terrorist in the Conference Room will run to the bomb and fiddle with the mechanics to immediately detonate it. He won't waste any time, so I recommend placing him a good distance from the bomb. If you needed to slow him down, you could add additional animations to the ActionList and increase the m_fActionInterval value.

If we wanted to, we could order the terrorist in the Mayor's Office to run to and toggle the laptop in a similar manner, but we're actually going to make that laptop a victory condition, rather than a failure condition of the mission. In other words, I'm going to require the Rainbow team to place a bug in the laptop as part of their mission. (Of course this doesn't make much sense outside of a recon mission, but I want you to see how it's done since we won't be creating a recon mission in this tutorial.)

Let's go setup all the victory and failure conditions now. Open the "View" menu in the editor, choose "Level Properties", and expand "R6MissionObjectives". Select m_aMissionObjectives and click the "Add" button. Select New, choose "R6MObjObjectInteraction", and click the "New" button. Expand "R6MissionObjectiveBase". Change m_bIfCompletedMissionIsSuccessfull to "False". (Because this is not the only mission objective, we don't want the mission to automatically end as soon as the bug is planted.) Set m_szDescriptionInMenu to "PlaceBugInTheComputer" and m_szFeedbackOnCompletion to "TheComputerHasBeenBugged". (Both of these settings pull text from a localization file which I'll mention in more detail later). Expand "R6MObjObjectInteraction" and set m_bIfDeviceIsDeactivatedObjectiveIsCompleted to "True". Select m_r6IOObject, click the "Pick" button, and left click the eyedropper on the laptop. If we were to test the map at this point, the mission would end successfully as soon as you or one of your operatives bug the computer, regardless of whether the terrorists are still alive, and regardless of whether the bomb has detonated.


Don't close the Level Properties window yet. We're going to create our hostage rescue mission objective. Select m_aMissionObjectives again and click the "Add" button. Select New, choose "R6MObjGroupMission", and click the "New" button. The 'GroupMission' objective allows you to group multiple objectives together for situations where an objective can be accomplished through more than one avenue. For example, hostages can be rescued by escorting them to an extraction zone, or by neutralizing all terrorists. Expand "R6MissionObjectiveBase". Set m_szDescriptionFailure to "HostageWasKilled" and m_szDescriptionInMenu to "RescueTheHostageToExtractionZone". Expand "R6MObjGroupMission". Select m_aSubMIssionObjectives and click the "Add" button. Select New, choose "R6MObjRescueHostage", and click the "New" button. Expand "R6MissionObjectiveBase" and set m_szFeedbackOnCompletion to "AllHostagesHaveBeenRescued". Select m_aSubMissionObjectives again and click the "Add" button. Select New, choose "R6MObjNeutralizeTerrorist", and click the "New" button. Expand "R6MissionObjectiveBase" and set m_szFeedbackOnCompletion to "AllTerroristHaveBeenNeutralized". Note that m_iMinSuccessRequired is set to "1", so that if either of our two sub-objectives are accomplished, this "GroupMission" objective will be accepted as complete.

Finally, let's create our disarm bomb mission objective. Scroll up, select m_aMissionObjectives once more, and click the "Add" button. Select New, choose "R6MObjGroupMission", and click the "New" button. Because there is only one terrorist with orders to detonate the bomb, we can prevent detonation either by disarming the bomb or by killing that terrorist. Expand "R6MissionObjectiveBase" and set m_bIfFailedMissionIsAborted to "True". This will cause the mission to end immediately if the bomb detonates. Set m_szDescriptionInMenu to "PreventOneBombDetonation". Set m_szFeedbackOnCompletion to "BombDetonationPrevented". Expand "R6MObjGroupMission". Select m_aSubMissionObjectives and click the "Add" button. Select New, choose "R6MObjPreventBombDetonation", and click the "New" button. Expand "R6MObjObjectInteraction". Select "m_r6IOObject", click the "Pick" button, and left click the eyedropper on the bomb in the Conference Room. Select m_aSubMissionObjectives again and click the "Add" button. Select New, choose "R6MObjNeutralizeTerrorist", and click the "New" button. Expand "R6MObjNeutralizeTerrorist". Select "m_depZone", click the "Pick" button, and left click the eyedropper on the terrorist in the Conference Room.

Before we close the level properties window, take a look at the m_szMissionObjLocalization setting. This setting references a localization file in the "\Ravenshield\system\" directory named "R6MissionObjectives". (For most of you, the file will have an .INT extension.) All of the menu descriptions and success and failure messages we specified are being pulled from this file. In this sample mission, we were fine using the standard mission objective descriptions and messages, but for a very unique or specific custom mission (prevent the release of SmallPox, prevent the assassination of George Bush, etc.), you'll probably want to create your own localization file. Overall, the Mission Objectives settings are pretty flexible and should allow for some very creative custom missions.

It is important to note that the victory and failure conditions we specified in this part of the tutorial only apply to the single player and coop "Mission" game types. All other game types will automatically inherit the correct mission objectives as long as you setup the proper insertion zones, extraction zones, hostages, and devices.

If you made it this far, you'll coast through the rest of this tutorial. Let's test out our new single player mission. Make sure you load the map as a "Practice Mission" since we haven't setup any other single player game types yet. Important Note: If you still have the map open in the editor, do NOT launch Raven Shield from the Joystick button in UnrealED; launch it from a desktop icon instead. If you launch RvS from the Joystick button, your mission objectives won't show up in-game. I don't know why this occurs but it had me puzzled for hours, and I want to save you my pain. Press [ESCAPE] occasionally while playing to monitor your objectives and pay close attention to what triggers completion of each mission objective.


Single Player Terrorist Hunt

For our Terrorist Hunt, we could use the exact same insertion zone that we created for the single player mission. All we'd need to do is set R6Availability.m_eTerroristHunt to "MFO_Available". But what fun would that be? After all, the point of a game type like tango hunt is to extend the value of the map, to mix it up a bit. So let's start the player in a different area. Select the insertion zone we created in the Front Street and press [CTRL]+w to create a copy of it. Hold [SHIFT] and drag the new insertion zone all the way into the Cafeteria. Expand R6Availability. Change m_eStoryMode to "MFO_NotAvailable" and set m_eTerroristHunt to "MFO_Available".

Now, let's add some random terrorist insertions points. Note that while you can use RandomPoints, ZonePoints, and ZonePaths in StoryMode, you only use RandomPoints in the TerroristHunt, LoneWolf, and Hostage Rescue game types. Open the Actor Classes browser, expand "R6DeploymentZone", and select "R6ZoneRandomPoints". Right click in the Courtyard and choose "Add R6ZoneRandomPoints Here". (Please note that you should only ever have one 'R6DZoneRandomPoints' actor in your entire map.) Open the properties of the actor that was just created (the larger blue man). Expand "R6ZoneTerrorist". Expand "m_Template", expand "[0]", and change m_szName to "Garage-1". Expand "R6Availability" and set every game type to "MFO_NotAvailable" except for m_eTerroristHunt. Expand "Object" and set Group to "RandomTangos". Expand "R6DZone". Select m_aNode and click the "New" button to create a new node (represented by the smaller blue man). Each RandomPointNode provides another random spot where a terrorist could spawn. Select m_aNode and click the "New" button eight more times so that we have a total of ten RandomPointNodes created. Select all ten RandomPointNodes, open the properties window, expand "R6Availability" and set every game type to "MFO_NotAvailable" except for m_eTerroristHunt. Expand "Object" and set Group to "RandomTangos". Now, drag each RandomPointNode to a different area of the map (but don't place any in the Cafeteria, unless you want a dangerous insertion).

That's all there is to setting up a terrorist hunt. However, on a full size map, you should place at least 50 RandomPointNodes, and I recommend placing closer to 200 so that it seems like terrorists are never in the same place twice. Load up the map in game, and try a terrorist hunt with 5 terrorists. (Note that if you set the game to 10 terrorists or more, all 10 of our RandomPointNodes will be utilized and there won't be anything random about it.) When you're done testing, go back to the editor.

Now is a good time to show you one nice feature of the editor. Open the "Visibility" menu and choose "Story Mode (Campaign)". Notice that all of the actors we just placed have become hidden. Open the "Visibility" menu again and choose "Terrorist Hunt". Now, the RandomPointNodes appear, but the hostage, bomb, and laptop computer are all hidden. Open the "Visibility" menu once more, and choose "All Mode" to display all actors again.

Single Player Lone Wolf

For our lone wolf game, let's start the player in the back alley and then force him/her to cross the entire map to reach the Police Van. Select the insertion zone we created in the Cafeteria and press [CTRL]+w to create a copy of it. Hold [SHIFT] and drag the new insertion zone into the Back Alley. Expand R6Availability. Change m_eTerroristHunt to "MFO_NotAvailable" and set m_eLoneWolf to "MFO_Available". If this insertion zone is too large for your tastes, expand "Display", and change the DrawScale setting (this only affects how large the zone will appear in the planning stage). Next, select the extraction zone in the Back Alley and press [CTRL]+w to create a copy of it. Hold [SHIFT] and drag the new insertion zone all the way into the Front Street. Expand "R6Availability". Change m_eStoryMode to "MFO_NotAvailable" and set m_eLoneWolf to "MFO_Available".

Since we already have random Terrorist Hunt deployments placed throughout the map, it makes sense to reuse them for Lone Wolf mode. Search out and select all ten RandomPointNodes and the R6DZoneRandomPoint (the larger blue man) that we placed in the Courtyard. (It's not the end of the world if you miss a RandomPointNode or two, but it's important you you get the R6DZoneRandomPoint.) Since we added these all of these to the same Group, the easiest way to reselect them all is to first make sure you don't have any actors selected, then open the Groups browser, click the "Refresh Group List" button, select "RandomTangos", open the "Edit" menu, and choose "Select Actors". Once all 11 actors are selected, open the properties window, expand "R6Availability", and set m_eLoneWolf to "MFO_Available".

Single Player Hostage Rescue

For our hostage rescue game, let's use our Lone Wolf Back Alley insertion zone, plus let's reuse both extraction zones we created earlier, so that the player can choose to escort hostages to the Front Street or the Back Alley. Select the Extraction Zone in the Front Street and the Insertion and Extraction Zones in the Back Alley together. Open the properties window, expand "R6Availability", and set m_eHostageRescue to "MFO_Available". Be careful not to touch any other settings, or we'll screw up the other game types.

We could use the same hostage from the single player mission, but I think it would be more fun to create two new hostages in different rooms. Select the hostage in the Cafeteria and press [CTRL]+w to make a copy. Hold [SHIFT] and drag the new hostage into the Conference Room. Open the properties window and expand "R6ZoneHostage". Expand "m_Template", expand "[0]", and change m_szName to "CasualWoman2-1". Expand "R6Availability". Change m_eStoryMode to "MFO_NotAvailable" and set m_eHostageRescue to "MFO_Available". With the new hostage still selected, press [CTRL]+w to make one more copy. Hold [SHIFT] and drag one of these new hostages into the Courtyard.

Let's also place two mission intelligence icons to indicate the location of our two hostages. Select the R6HostageIcon in the Cafeteria and press [CTRL]+w to make a copy. Hold [SHIFT] and drag the copy into the Courtyard. Open the properties window and expand "R6Availability". Change m_eStoryMode to "MFO_NotAvailable" and set m_eHostageRescue to "MFO_Available". With the R6HostageIcon still selected, press [CTRL]+w to make another copy. Drag one icon over the hostage in the Courtyard, and the other over the hostage in the Conference Room.

I guess we need some bad guys to guard these hostages. Let's use the same random terrorists once more. Select all ten RandomPointNodes and the R6DZoneRandomPoint in our "RandomTangos" group. (If you use the group browser, make sure you don't have any actors selected first.) Open the properties window (confirm that the top of the window indicates '11 selected'), expand "R6Availability", and set m_eHostageRescue to "MFO_Available". We don't need to assign any terrorists to guard specific hostages as we did in single player mission mode; in the Hostage game type, the terrorists will automatically start gunning for the hostages once you're spotted.





Part II. - Cooperative


Coop Mission

Since we already have all of our StoryMode actors in place, we just need to make these same actors available in coop mode, as well as create some additional insertion zones. Open the "Visibility" menu and choose "Story Mode (Campaign)". Select the laptop, bomb, InteractiveObject, terrorists, hostages, intelligence icons, and extraction zone together (basically everything except for the insertion zone and our static meshes). Expand "R6Availability", and set m_eMissionMode to "MFO_Available". Be careful not to touch any other settings. Open the "Visibility" menu again and choose "All Mode".

Notice that we are not sharing the same insertion zone that StoryMode uses. Coop insertion zones are a little different, so let's create one from scratch. Open the Actor Classes browser, expand "NavigationPoint | SmallNavigationPoint | PlayerStart | R6AbstractInsertionZone", and select "R6InsertionZone". Right click somewhere in the Front Street near the StoryMode insertion zone and choose "Add R6InsertionZone Here". Double-click on the new insertion zone to open the properties window, and expand "Display". Select "Texture" and click the "..." button (if the texture browser doesn't automatically open, open it manually). Browse to "R6_Common.MP_Coop" (you may need to click the "load entire package" button to see 'MP_Coop'). Then go back to the properties window and click the "Use" button. Expand "R6Planning". Change m_iPlanningFloor_0 to "100" and change m_iPlanningFloor_1 to "100". Expand "R6Availability". Set every game type to "MFO_NotAvailable" except for m_eMissionMode.

Notice that the yellow square has changed to a smaller blue square with the letter "C" on it. With the Coop insertion zone still selected, press [CTRL]+w seven times. Reposition your eight new coop insertion zones so that they are close, but not too close together. Don't be afraid to overlap these insertion zones with the single player mission insertion zone (in fact I recommend placing them all in the same general space as the single player insertion in a staggered formation). Now, load the game and test the map in Coop Mission mode.

Coop Terrorist Hunt

If you've gotten this far in the tutorial, you should know exactly what needs to be done to enable our terrorist hunt to work in coop mode. First, select all 11 actors in the "RandomTangos" group. Open the properties window, expand "R6Availability", and set m_eTerroristHuntCoop to "MFO_Available".

We could use the same coop insertion zones as the Coop Mission Mode, but I think it would be better if the Coop Terrorist Hunt ran pretty much the same as the single player Terrorist Hunt, inserting the team into the Cafeteria. Select one of the Coop insertion zones in the Front Street and press [CTRL]+w. Drag the new copy into the Cafeteria. Open it's properties and expand "R6Availability". Change m_eMissionMode to "MFO_NotAvailable" and set m_eTerroristHuntCoop to "MFO_Available". Then press [CTRL]+w seven times and reposition the resulting eight coop insertion zones.

Coop Hostage Rescue

Select the hostage in the Courtyard, the hostage in the Cafeteria, both extraction zones, and all 11 actors in the "RandomTangos" group, together. Open the properties window, expand "R6Availability", and set m_eHostageRescueCoop to "MFO_Available". Select one of the Coop insertion zones in the Cafeteria and press [CTRL]+w. Drag the new copy into the Back Alley. Open it's properties and expand "R6Availability". Change m_eTerroristHuntCoop to "MFO_NotAvailable" and set m_eHostageRescueCoop to "MFO_Available". Then press [CTRL]+w seven times and reposition the resulting eight coop insertion zones.





Part III. - Adversarial


Adversarial Team Survival

For a Team Survival game on a single floor map like this one, it makes sense to place the two team's insertion zones on opposite sides of the map. We'll start the Green Team in the Front Street and the Red Team in the Back Alley. Since I know some of you have skipped the single player and coop portions of this tutorial and jumped directly to this paragraph, we'll create the adversarial insertion zones from scratch.

Open the Actor Classes browser, expand "NavigationPoint | SmallNavigationPoint | PlayerStart | R6AbstractInsertionZone", and select "R6InsertionZone". Right click somewhere in the Front Street and choose "Add R6InsertionZone Here". Double-click on the new insertion zone to open the properties window, and expand "Display". Select "Texture" and click the "..." button (if the texture browser doesn't automatically open, open it manually). Browse to "R6_Common.MP_Green" (you may need to click the "load entire package" button to see 'MP_Green'). Then go back to the properties window and click the "Use" button. Expand "R6Planning". Set m_iPlanningFloor_0 and m_iPlanningFloor_1 to "100". Expand "R6Availability". Set every game type to "MFO_NotAvailable" except for m_eTeamDeathmatch (after the first one, press [DOWN ARROW], then the "m" key, [DOWN ARROW], then the "m" key, etc. to do this quickly).

Close the properties window. You'll notice that the yellow square has changed to a smaller green square with a 'G' on it. Note that since multiplayer insertion zones don't show up anywhere in-game, the texture that you assign in the Display properties has no effect whatsoever on the functioning of your map. The sole purpose of assigning these textures is so that you can keep everything straight in the editor. With that said, I highly recommend assigning the appropriate R6_Common texture to each and every multiplayer insertion zone that you create. With the new insertion zone still selected, press [CTRL]+w seven times to create seven copies of it. Reposition your eight Green Team insertion zones so that they are close, but not too close together. In general, make sure insertion zones don't ever overlap geometry or static meshes, but there's no harm in them overlapping other insertion zones from other game types.

Now, let's create insertion zones for the Red Team. Select one of the Green Team insertion zones and press [CTRL]+w. Hold [SHIFT] and drag the new copy all the way into the Back Alley. Open this insertion zone's properties and expand "Display". Select "Texture" and click the "..." button (if the texture browser doesn't automatically open, open it manually). Select "R6_Common.MP_Red". Then go back to the properties window and click the "Use" button. Expand "Rainbow" and set m_iInsertionNumber to "1". Note that this is first time in this tutorial that we've touched the m_iInsertionNumber setting. Single player, coop, deathmatch, and green team insertion zones all use the default insertion number of "0"; an m_iInsertionNumber set to "1" always designates the red team for adversarial games. Close the properties window. You'll notice that the green square has changed to a red square with an 'R' on it. With the insertion zone still selected, press [CTRL]+w seven times to create seven copies of it. Reposition your eight Red Team insertion zones so that there is some space between each one. (If necessary, feel free to rearrange the single player and coop actors to make room for these new insertion zones.)


Adversarial Deathmatch

The Deathmatch game type (also referred to as 'Survival') is one of the easiest game types to setup. Select one of the Green Team insertion zones in the Front Street and press [CTRL]+w to create a copy of it. Hold [SHIFT] and drag the new copy into the hallway. Open the properties window and expand "Display". Select "Texture" and click the "..." button (if the texture browser doesn't automatically open, open it manually). Select "R6_Common.MP_DMatch". Then go back to the properties window and click the "Use" button. Expand "R6Availability". Change m_eTeamDeathmatch to "MFO_NotAvailable" and set m_eDeathmatch to "MFO_Available". Close the properties window. You'll notice that the green square has changed to a yellow square with a 'D' on it. With the insertion zone still selected, press [CTRL]+w 15 times to create a total of 16 deathmatch insertion zones. Drag each insertion zone to a different area of the map.

Ideally, you should place deathmatch insertions so that no player can see another at the start of the game (but that would be tough to do on our 6-room map). It's been suggested to me that you might want to place far more than 16 insertion zones for deathmatch games, to add a random element and prevent players familiar with the map from ever predicting exactly where another player will spawn.

Adversarial Pilot

For our Pilot game (also referred to as 'escort'), we'll reuse the same insertion zones as Team Survival, and require the pilot to make his way from the Front Street to the Back Alley. Hold [CTRL] and select all of the Green Team and Red Team insertion zones together. Open the properties for all 16 zones and expand "R6Availability". Set m_eEscort to "MFO_Available". We don't need to do anything special to spawn the 'pilot'; he will automatically spawn in one of the normal Green Team insertion zones.

Now, let's reuse the extraction zone we created for Mission and Hostage Rescue games; double click the extraction zone in the Back Alley to open it's properties. Expand "R6Availability" and set m_eEscort to "MFO_Available".

(If you skipped the single player portion of this tutorial, place a new extraction zone as follows: Open the Actor Classes browser, expand "NavigationPoint | R6AbstractExtractionZone", and select "R6ExtractionZone". Right click in the middle of the Back Alley and choose "Add R6ExtractionZone Here". Double-click on the extraction zone (represented as a yellow square) to open the properties window, and expand "Display". Change m_bOutlinedInPlanning to "False". Change DrawType to "DT_StaticMesh". Scroll down and select "StaticMesh". Click the "..." button, and browse to "Garage_SM.Deployement_Zone.Deployement_Zone_01". Then go back to the properties window and click the "Use" button. Expand "Display" and set DrawScale to "1.5". Expand "R6Planning". Set m_iPlanningFloor_0 and m_iPlanningFloor_1 to "100". Select m_PlanningColor, click the "..." button, select the solid green color in the fourth row, third column, and click the "OK" button. Expand "R6Availability. Set all game types to "MFO_NotAvailable" except for m_eEscort.)

Test out the map in pilot mode if you'd like (choose the Green Team, and if you're the only player you'll automatically become the pilot). Notice, if you haven't before, that extraction zones are automatically visible in the in-game map (this is the case regardless of the game type and is not based on any settings that we assigned).

Adversarial Bomb

For our Adversarial Disarm Bomb game, let's place bombs in the Front Street and Courtyard. Open the Actor Classes browser, expand "R6InteractiveObject | R6IActionObject | R6IOObject", and select "R6IOBomb". Right click in the Courtyard and choose "Add R6IOBomb Here". Open the properties for the bomb and expand "Display". Select StaticMesh and click the "..." button. Browse to "R6ActionObjects.MpBomb.MpBomb_01". Return to the properties window and click the "Use" button. Expand "R6ActionObject". Select m_ArmedTexture and click the "..." button (if the texture browser doesn't open automatically, open it manually). Browse to "R6_Textures_ActionObject.MpBomb_RED_SHDR". Return to the properties window and click the "Use" button. Set m_fDisarmBombTimeMax and m_fDisarmBombTimeMin to "6". Change m_fGainTimeWithElectronicsKit to "3". Expand "R6Availability". Set every game type to "MFO_NotAvailable" except for m_eBomb. With the bomb still selected, press [CTRL]+w to create a copy. Hold [SHIFT] and drag the second bomb into the Front Street. Open the properties of the second bomb and expand "Display". Select StaticMesh and click the "..." button. Browse to "R6ActionObjects.MpBomb.MpBomb_02". Return to the properties window and click the "Use" button.

Let's place some reference icons so new players will know where to find each bomb. Open the Actor Classes browser, expand "R6ReferenceIcons", and select "R6ObjectiveIcon". Right click near the bomb in the Courtyard and choose "Add R6ObjectiveIcon Here". Open the properties window, and expand "Display". Select Texture and click the "..." button (if the texture browser doesn't open automatically, open it manually). Browse to "R6Planning.Icons.PlanIcon_Bomb_A". Return to the properties window and click the "Use" button. Expand "R6Availability" and set every game type to "MFO_NotAvailable" except for m_eBomb. Expand "R6Planning". Change m_iPlanningFloor_0 to "100" and change m_iPlanningFloor_1 to "100". Drag this icon directly over the bomb and raise it off the floor a bit. Press [CTRL]+w to make a copy. Hold [SHIFT], drag the copy into the Front Street and place it over the second bomb. Open the properties of the second bomb and expand "Display". Select Texture and click the "..." button (if the texture browser doesn't open automatically, open it manually). Choose the "R6Planning" package, choose the "Icons" group, and select "PlanIcon_Bomb_B". Return to the properties window and click the "Use" button.


Since the Green Team needs to defend the bombs, let's reuse the same insertion zones as before, starting the Green Team in the Front Street and the Red Team in the Back Alley. Hold [CTRL] and select all of the Green Team and Red Team insertion zones together. Open the properties for all 16 zones and expand "R6Availability". Set m_eBomb to "MFO_Available".

Adversarial Hostage

For our Adversarial Hostage game, we'll place hostages in the Mayer's Office and Cafeteria, and start the rescuing Green Team in the Back Alley. Open the Actor Classes browser, expand "R6DeploymentZone", and select "R6ZonePoint". Right click in the Mayer's Office and choose "Add R6ZonePoint Here". Open the properties for this actor; currently he's a terrorist, but we're going to change him into a hostage. Expand "R6ZoneTerrorist" and set m_iMaxTerrorist and m_iMinTerrorist to "0". Expand "R6ZoneHostage" and set m_iMaxHostage and m_iMinHostage to "1". Expand "m_Template", expand "[0]", and change m_szName to "CasualMan1-1". Expand "R6Availability" and set every game type to "MFO_NotAvailable" except for m_eHostageRescueAdv. With the hostage still selected, press [CTRL]+w to create a copy. Hold [SHIFT] and drag the second hostage into the Cafeteria.

Let's place some hostage icons so new players on the map will know where to go. Open the Actor Classes browser, expand "R6ReferenceIcons", and select "R6HostageIcon". Right click near the new hostage in the Cafeteria, and choose "Add R6HostgeIcon Here". Open the properties window, expand "R6Availability" and set every game type to "MFO_NotAvailable" except for m_eHostageRescueAdv. Expand "R6Planning". Set m_iPlanningFloor_0 and m_iPlanningFloor_1 to "100". Drag this icon directly over the hostage. With the R6HostageIcon still selected, Press [CTRL]+w to make a copy. Hold [SHIFT], drag the new icon into the Mayor's Office and place it over the first hostage.

Now let's make new Back Alley insertion zones for the good guys, the Green Team. Select one of the Green Team insertion zones in the Front Street and press [CTRL]+w to create a copy. Hold [SHIFT] and drag the new copy all the way into the Back Alley. Open it's properties and expand "R6Availability". Set m_eHostageRescueAdv to "MFO_Available" and change every other game type to "MFO_NotAvailable". Then press [CTRL]+w seven times and reposition the new insertion zones so that there is some space between them.

Since it's the Red Team's job to guard the hostages, let's create new Red Team insertion zones in the Mayer's Office and Cafeteria. Select one of the Red Team insertion zones in the Back Alley and press [CTRL]+w to create a copy. Hold [SHIFT] and drag the new copy into the Mayer's Office. Open it's properties and expand "R6Availability". Set m_eHostageRescueAdv to "MFO_Available" and change every other game type to "MFO_NotAvailable". Then press [CTRL]+w seven times so that we have a total of eight Red Team insertion zones in the Mayor's Office. While it tends to encourage teamwork, there is no rule that says that all teammates need to be inserted in the same area of the map. So, let's drag four of these new Red Team insertion zones into the Cafeteria and reposition the other four in the Mayer's Office.

To make the game more interesting, I think we should offer the Green Team two possible hostage extraction zones, on either ends of the map. Select the extraction zone in the Front Street and the extraction zone in the Back Alley together and open the properties window. Expand "R6Availability" and set m_eHostageRescueAdv to "MFO_Available".

(If you skipped the single player portion of this tutorial, no problem: Select the Pilot extraction zone in the Back Alley and open it's properties. Expand "R6Availability" and set m_eHostageRescueAdv to "MFO_Available". With the extraction zone still selected, press [CTRL]+w to copy it, hold [SHIFT] and drag the copy all the way into the Front Street. Open the properties window, expand "R6Availability", and change m_eEscort to "MFO_NotAvailable.)




Conclusion

One of the most important concepts I can stress in this tutorial is that, like other actors, you can share insertion and extraction zones between game types, but you don't have to. It all depends on where it makes sense strategically for the insertion and extraction zones to be, and on how much variety you want to add to each game type experience.

Now that you've mastered every game type, I encourage you to enable the maps you create to support every mode possible (in some small maps, not all game types will make sense). The more game types your map supports, the more lasting value your map will have. Note that if your map does not provide support for any of the 12 game types, make SURE that you remove the appropriate 'GameTypes=(package=R6Game,type=GameTypeHere,maxNb=16)' lines in your .INI file so that those game types are disabled in the game.

I hope you found this tutorial helpful. If there's anything I've gotten wrong, please let me know and I'll correct the information. Email me if you have any questions or mapping issues you'd like to discuss.
-Beckett

Display a printable version of this article


2005, RvSMaps.com, all rights reserved
Send questions, critiques, etc. to http://www.juncmodule.net/rvs/rvsmaps/content/contact.htm