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.
|