By the end of this two part tutorial, you will be
able to create a very basic Raven Shield map and play it in-game. You'll
know how to create player insertion points and random tango positions.
You'll be able to write mission briefings, and your map will work
perfectly in the mission planning stage.
This tutorial assumes that you have
some knowledge of UnrealED. If you have never created even a simple map
before, I recommend you first work through a few of
Architectonic's tutorials to learn the basic principles and
abilities of the Unreal editor: (If you are comfortable carving out
rooms and applying textures, keep reading... you'll do fine.)
Let's get started. Open a "new" map and immediately save it as "mymap.rsm".
The editor does not allow spaces in the filename (including spaces in
the directory path), so you will need to save the map to a temporary
location, such as "c:\RavenShield\mymap.rsm".
Open the texture browser and select any typical wall or floor texture (I
opened "CityStreet.utx" and used "CityStreet.Floor.floor_concrete_02a").
Carve out a small room by substractracting a cube sized:
Height=256,Width=1280,Breadth=1280.
Next add a wall sized: Height=256,Width=16,Breadth=768. Place the wall
so that it creates a small hallway on the far side of the room, and
carefully align the right edge to the outside wall. We'll soon be hiding
some tangos behind this divider.
Place 4 or 5 lights throughout the room, and rebuild the map. Now we're
ready to deal with some classes and settings unique to the RvS editor...
As you know, the planning stage in Raven Shield allows a player to view
a map on a 2 dimensional plane, one floor at a time. To allow your map
to work with the planning stage, you need to assign elements (walls,
floors, doors, stairs, ladders, static meshes, etc.) to one or more
floors. By default, the ground floor is identified in the editor as
"100", the next floor up as "101", etc. You'll see how this principle
applies through the rest of this tutorial.
Let's add an insertion zone for our operatives. Open the actor class
browser, expand "NavigationPoint | SmallNavigationPoint | PlayerStart |
R6AbstractInsertionZone" and select "R6InsertionZone". Right click in
the large open area of our room and choose "Add R6InsertionZone Here".
Double-click on the insertion zone (represented as a yellow square) to
open the properties window.
Expand "Display". Change DrawType to "DT_StaticMesh". Scroll down and
select "StaticMesh". Click the "..." button, open "MeatPacking_SM.usx",
and browse to "MeatPacking_SM | Deployement_Zone" in the static mesh
browser. Then go back to the properties window and click the "Use"
button. In the 3d view, the yellow square will change to a larger sqare
(384x384 units to be exact) with the word "plan" plastered over it.
Reposition and rotate the insertion zone as necessary so that it does
not overlap any of our walls (Move the dividing wall brush towards the
back wall if necessary). Vertically, the insertion zone should sit
around 80 units above the floor.
Return to the properties window for the R6InsertionZone, expand
"R6Planning". Change m_iPlanningFloor_0 to "100" and change
m_iPlanningFloor_1 to "100" so that our insertion zone will appear on
the first floor of the planning stage map. (If our insertion zone was on
the second floor, we would set these values to "101"; in this case, of
course, our map is only comprised of one floor.) Notice that by default
m_eDisplayFlag is set to "ShowOnlyInPlanning" since we certainly don't
want an ugly two dimensional square showing up in the game world. Now,
let's set our insertion zone to look just like the game manual says it
will. Select m_PlanningColor, click the "..." button and select the dark
red color in the fourth row, first column. Scroll up and expand
"Display" again. Change m_bOutlinedInPlanning to "False".
While we're in the properties window, expand "R6Availability". Note that
with these settings you can create different insertion zones for
different game types. I've had a lot of people ask about setting up
insertions for adversarial games, so I'll cover it briefly here. Place a
second insertion zone next to the first one (review the steps above if
necessary). Double click on the second insertion zone to open it's
properties. Expand "Rainbow" and set m_iInsertionNumber to "1" to
identify this as an insertion for the Red Team. Since our first
insertion zone defaulted to an m_iInsertionNumber of "0" it is already
automatically setup as an insertion for the Green Team. Note that at
this point, the map would only support 1 player on each team. To enable
16-player adversarial games you would need to duplicate the insertion
zones until you had 8 created for each team. We really don't have room
for 16 players on this tiny map, so let's move on. (In a future
tutorial, I'll go into more detail on setting up proper insertion zones
for every game type.)
Right click and add 2 or 3 "Path Nodes" leading from the insertion zone
to the dark corner of the back hallway. Path nodes are utilized by the
bot AI to navigate the map intelligently (an important lesson, but
outside the scope of this tutorial).
Now let's add some bad guys. Open the actor class browser, expand
"R6DeploymentZone", and select "R6DZonePoint". Right click somewhere in
the hallway and choose "Add R6DZonePoint Here". Double click on the
R6DZonePoint (represented by a little blue gingerbread man) to open the
properties window.
New R6DZonePoints default to terrorists (but can be changed to
hostages). We want a tango, so we'll just change his behavior a little
bit. Expand "R6DZoneTerrorist" and change "m_eEngageReaction" to "EREACT_SprayFire".
Take a look over the other settings to get some ideas on how terrorists'
brains work, then close the properties window. If you'd like, add a
second tango and assign different behavior to this one. The tango we
just created will only spawn in the MissionMode gametype (including
practice and coop mission mode).
Now let's add a random terrorist insertion for Tango Hunt and Lone Wolf
mode. Open the actor class browser, expand "R6DeploymentZone", and
select "R6DZoneRandomPoints". Right click somewhere in the hallway and
choose "Add R6DZoneRandomPoints Here". Two new icons will appear. The
larger icon represents the random tango who will spawn, and the smaller
icon represent a RandomPointNode, one possible position where he could
spawn. If you'd like, go ahead and change the behavior of the random
tango (modify the properties of the larger icon) the same as we did for
the fixed tango.
Note that this random tango will spawn in the mission game type as well
as tango hunt and lone wolf, unless we change his "R6Availability"
settings. Expand "R6Availability". Change m_eMissionMode to "MFO_NotAvailable"
and change m_eStoryMode to "MFO_NotAvailable". Close the properties
window.
Should we warn the player that there's danger behind that wall divider?
Open the actor class browser, expand "R6ReferenceIcons" and select
"R6TerroristIcon". Right click somewhere in the hallway and choose "Add
R6TerroristIcon Here". Make sure the TerroristIcon (representated by a
red X) is positioned above the floor, then double click on it to open
the properties window. Expand "R6Planning". Change m_iPlanningFloor_0 to
"100" and change m_iPlanningFloor_1 to "100" so that the red X will
appear on the first floor of the planning map. Close the properties
window.
Now let's make sure that our walls and floors display properly in the
planning stage. Ctrl click on each inside wall of our room (inclulding
both sides of the divider) to select all the wall surfaces together.
Then right click and choose "Surface Properties". Select the "Wall"
checkbox. Change main floor to "100" and change sec. floor to "100". (On
multi-floor maps, some walls may span more than one floor, in which case
the main floor would be 100 and the sec. floor would be 101 or even 102.
Stairways will always span several floors and should never have the same
number entered in both settings.) Click the "Apply" button (or your
changes will be lost) and then close the surface properties window.
Select the floor texture, then Right click and choose "Surface
Properties". Select the "Walkable" checkbox. This will allow you to give
in-game "Move" orders to your operatives. Change main floor to "100" and
change sec. floor to "100". Click the "Apply" button and then close the
surface properties window.
One more thing. Click the "View" menu in the editor and choose "Level
Properties". Expand "R6Planning". Expand R6PlanningMaxVector, change X
to "5000", and change Y to "5000". Expand R6PlanningMinVector, change X
to "-5000", and change Y to "-5000". This will allow the player to
scroll/reposition the map during the planning stage. Finally, since this
map is only one floor high, set R6PlanningMinLevel to "100" and
R6PlanningMaxLevel to "100".
Rebuild your map and then Save it. Copy mymap.rsm from c:\RavenShield
(or wherever you saved it) to the official "maps" folder where your game
is installed. The map is now compiled and ready to play, however we'll
need to create a map info (.INI) file before we can load it into Raven
Shield. I'll show you how to create that file in Part II.
|