THE DEFINITIVE ASSAULT TUTORIAL
"Machismo"
cool_machismo@yahoo.com
INTRODUCTION
Hi, this is an a advanced tutorial on how to create a simple(!) assault
map. As you probably know Assault maps are the most difficult to create in Unreal Tournament.
They are as complex as some of the toughest levels that were created in Unreal. For
example in the assault map "Frigate" created by Shane Claude to make such a map
you need to know all about movers (not the simple ones:)),triggers, explosion wall,
explosion chain, dispatcher (if you don't know how to use any of the the previous four in the editor
read the excellent advanced tutorial on triggers by cold front on this
site)- but there is no need to know
everything to do this tutorial. Ok lets get down to business. I suggest you keep both the editor and this
page open so you read this and then go do it in the editor. The most important part of the
assault map is the Fort
Standard, but all that
in a moment.
NOTE: In Unreal Tournament while playing assault maps hitting
the F3 key gives a list of objectives. I will be explaining later on in
this tutorial how to do this, but you need either Adobe Photoshop or the
trial version of Paint Shop Pro (which is what I used) .If you don't want to
bother with this for the tutorial skip that step. It doesn't affect your
map but its a good trick to know as otherwise the people who play the map
wont know what to do to complete the level and it also adds a touch of
professionalism and realism.
But you do need to know the following to complete
the tutorial, even though I have still explained it all at that point in
the tutorial. But if you are desperate to do an assault tutorial just skip
the movers, etc.
a. Movers - How to create movers and activate them with triggers.
b. Dispatcher.
Lets
"Assault the base".
STEPS INVOLVED:
Note:
For simplicity's sake I will be using
the tags and events that I used for my level, of course you can use your
own.
1.
Build a cube 1024x1024x1024 and subtract it from the world. Since
this is going to be a mountain use the rock and ground textures from
GenEarth.
2. Way away from your level we are going to create a simple Skybox. Make
a brush 512x1024x1024 subtract it. Use a texture from GenFluids. Create
your sky in this. Under Classes|Info|ZoneInfo choose SkyZoneInfo and place
it in your skybox. Go back to your level and choose the top part of the
cube and check Fake Backdrop so it shows up as the Sky in your level.
3. Ok make a room a little away from the mountain and then connect the
mountain with the room any way you see fit. The first object of the
assault map will be to cross a door we will make connecting the mountains
to the room which we will call the Reception Area.
4. Make a door such that it will open to the side in two pieces. Under properties
of both the mover brushes set the following :-
- Events|Tag : to door1 or a unique tag.
- Mover|bTriggerOnceOnly : False.
- MoverSounds : According to the feel of your level.
- Object|InitialState : TriggerControl, so that the door opens only when
the player is within its radius and then starts to close.
Remember that in the case of assault where
you want a door to be triggered and that door is an objective of the map
the FortStandard acts as the trigger for that door and you need not give
it a trigger other than that. Any normal doors, in the sense that they are
not objectives in themselves, that you want to can be opened by a normal
trigger.
5. This is the main part of the tutorial hopefully
after reading this step you wont skip the rest because there are some more tips. Since this is the main part lets get on:
(a) Expand Navigation point and locate path node under
it. Place it just
next to the door we made before and under its properties
change its tag a unique one.
(b) I mentioned the FortStandard before which mainly controls all the
assault elements. Well we are going to place one now before the
door. Its located of all places in the pawn class(?) I cant figure out
why the hell Epic put it there maybe u can. Anyway, expand the Pawn menu under classes by clicking the plus sign, FortStandard is located under
Stationary pawn.
(c) Add a FortStandard in front of
your door. Its properties need to be the following (also refer picture):
i) Under Advanced Properties change bHidden (not bHiddenEd) to True. This
ensures that the FortStandard affects game play but doesn't show its ugly
mug in the game. There could be something I'm missing here because if I don't
set this to true is appears while I'm playing the level it could just be a
bug though.
ii) Set its event to door1 and in the top down view you should see the
whip like FortStandard connected to the door and tag to Fort5.
iii) bFinalFort - false (this value is set to true only for the final
objective).
iv) bSayDestroyed & bSelfDisplayed -False
bTriggerOnly - True.
v) Destroyed Message & FortName - This is the message that will appear
on screen after you complete the objective. You can give any message u
want (naturally!), it will appear in the game in the order FortName and
then the message. You can of course just put the entire message in the
DestroyedMessage.
vi) Defense Priority - 5. The
defense priority determines how much protection or whatever the bots on
the defending team will give to an objective. Say in a map we have four
objectives the last the last and final objective will usually be given a
defense priority of 0, the third one a priority of 1, the second objective
will be 2 and the very first objective 3. That's not to say you cant give
the last one a priority of 0, last but one a priority of 25, then 50 and
so on.
vii) Defense Time - Total time in minutes (how can it be seconds :)) that
the attacking team has to complete the level by destroying the objectives
or whatever. Since this is a small level set it to 4 or 5.
viii) FallBackFort - The name says it all. If fort 1(objective 1) has been
destroyed or breached it directs the bots to "fall back" or go
to the next fort(objective2), if you need to use it we give the next forts
tag. I'm using the reducing tags technique. So once the first FortStandard
with a tag of Fort5 is taken over then the bots will fall back to the next
objective with a tag of Fort4 and when that is over to next one and so on.
ix) NearestPathNodeTag - Sometimes this can be ignored but may create
confusion among bots (not sure about this though) so you might as well put
it in.
x) EndCamTag (See
Update at the end of this tutorial) - This tag is used to position the final camera when the assault
has been successfully completed and is used only in the FinalFort. In
death match after the game is over the end cam shows the player. But in
assault it can be directed to show a particular scene like in Frigate when
the base has been assaulted because of the end cam tag the player is not
seen, instead it shows the rockets blowing away the wall. Enough rambling
already! That's the end of room one lets move on.
6. At this point my level looked like a mountain connected to a second room
by a cylinder. I've taken a section from my CTF tutorial explaining about
location strings and why you need to use them:
Imagine this situation - your bot teammate
or your teammate is getting his ass kicked. At this point he asks you for
backup (using the voice menu probably), but how the hell do you know where
he is located, not to fear help is on hand. Ok this part is really simple
actually you just need to place in ZoneInfos. This would be easier to
explain with a simple example. Say you have a three room map - room
one is the red base, the middle room we will call center Hall and the last
room is the blue base and they are connected by a hole in the wall. You
need to completely seal the three rooms into zones. Just place a sheet
brush slightly larger than the hole in the wall connecting room one and
the center hall and hit the add special button (5th button
third row) in the pull down menu just choose zone portal, check 2-sided
below and hit add special. Do this again in the hole in the wall
connecting the center hall to the blue base. Now that the three rooms are
separate zone expand Info under classes and select a Zone Info (don't
expand it) and add three ZoneInfos into the three rooms. Go to the
ZoneInfos advanced properties and expand Location Strings in Zone Name
enter Red Base. In the same way enter Center Hall in the Zone Info in the
center room and Blue Base in the third room. Now when your teammate is
getting his ass kicked and asks for backup watch the voice menu on your
HUD, it'll be in the form - Othello (Blue Base): I need some backup. So
now you know where to go. This can also be a life saver for you when you
need backup. Use this in all the team games.
I then made them into two separate zones
and added in the zone infos and set their location strings. After this at
the end of the second room I made a series of curving corridors by editing
the vertices of a cylinder. I again made the whole curving corridors into
one zone and gave it a location string. At the end of the curving
corridor I added in a FortStandard with its Events|Tag to Fort4, and under
FortStandard i gave it a defense priority of 4, defense time same as the
previous one, a destroyed message (If u want to know mine was the
attackers have overcome the bends), nearestpathnodetag a unique name and
FallBackFort to Fort3.
LOCATIONID NOTE:
A locationid (located under key point) works just like the location
string. The only difference being that that the radius of the zone name
can be defined and you need not place zone barriers. Great for use in huge
outdoor levels. Just place one into your level and in its properties got
to locationid and you'll see entries for location name and radius.
At the end of this corridor I created a
complex that the attacking team had to work through, at the end of the
complex I created a launch lever room that if activated gave access
to the launch room and in the launch room I made a switch that when
activated sent an escape pod into space. Now every time you get killed you
cant work your way through the whole level so in the launch complex
around midway through I created, the how in the next step. Phew, that's
one hell a of information. I leave the creation of the complex up to you,
you can make it big or small. After the complex is over read on.
7. At the end of the complex I placed a FortStandard
you should have figured out the settings by now but since this is a
tutorial :), set Events|Tag to Fort3, and under
FortStandard I gave it a defense priority of 2, defense time same as the
previous one, a destroyed message, nearest path node tag a unique name and
FallBackFort to Fort2.
8. Ok make a room at that level connecting the end of the complex
to the launch control lever room and probably on the same pathway the room
which holds the switch to put the escape pod into space. I mentioned
before that we don't want the attacking team to keep starting at the
beginning - at least not in big maps so when the attackers breach the
complex and if they get killed after that (we are going to ensure that
they die) they need'nt start right from the beginning. Since this is a
team game we need to edit the PlayerStart properties so that members of
the same team are spawned in the same area. Add in 5 or around that amount
of player starts in the beginning of the level where you want the
attacking team to start (probably your team). Under the playerstarts
advanced properties|PlayerStart see that every option is true and set
TeamNumber to 1. Similarly the defending teams team number is 1. At
the beginning of the complex place in two playerstart and see that under
advanced properties|playerstart bEnabled is False and team number is 1,
this ensures that only when a certain trigger is activated this player
start is then by the game. I put in a lot of team cannons from under
classes|Pawn|Stationary Pawn|Team Cannon outside the lever room.
TIP: You can set the
team cannon to throw different kinds of projectiles by going to its
properties and under team cannon set the type of projectile that you want
to use. To do this first expand projectiles subclass and after selecting
the type of projectile that you want hit the use button.
I needed a place for the defending team to
be spawned. So I created a room just next to the lever room and placed 5
playerstarts in it and set the team number to 0. I set a door at that
level that would be opened only when the attackers had crossed the third
fort or so. This was imply done by setting the tag of the door to the
event of the third fortstandard. I then placed a visible teleporter from
under navigation point|Teleporters in this room and in the "reception
area" and set the reception area Teleporters tag to something. Then
under the properties of the teleporter in the defenders room I set the URL
to that something - could be any name. The reason I did this was that I wanted the bots to be forced to got to the reception area a shortcut so to
speak and not have to go all the way to the reception area.
9. Remember where we placed the fortstandard at the end of the
complex?. Place a plain trigger from under classes|triggers|trigger. We
are going to daisy chain events. I then added a dispatcher next to it from
under triggers in the classes menu. We want the trigger to activate the
dispatcher which will in then activate the FortStandard and then the
second set of player starts for the attacking team. This is how I did it -
The triggers Events|Event was set to chain reaction and the dispatchers
Events|Tag to the same. Then I set the tag of the second set of player
starts to secondstart and the FortStandards tag to set2. Then under the dispatchers
advanced properties|Dispatcher | OutEvents I gave the 0 outevent as set2
and 1 outevent as second start. In this case no need to bother about
outdelays.
10. Now on to the lever room. Here I just added a mover button
needed to activate the door to the final control room. I placed another
FortStandard in front of it and set the usual properties. I also wanted a
sound to go off when this lever was activated, here's what I did:
- Under the button movers Advanced properties I set event to
finaldoor and its tag to lever2 and under Object|InitialState
TriggerOpenTimed. In the same phase the tag of the door leading to the
final control room in the map was set to finaldoor and Object|InitialState
to TriggerOpenedTimed so that the door would be activated only by pushing
the lever. I also set the movers to bTriggeronceOnly true.
- The FortStandards properties were set to : Events|Event to lever2 and
tag to Fort2; FortStandard was the usual settings like bTriggerOnly true, Defense
Priority 1, FallBackFort to Fort1.
- I then added around 5 special events from classes|triggers. This was
placed in a line all the way to the final control room. I set Events|Tag,
under advanced properties to lever2 so that it would set off on being
triggered by the lever. Under Special Event bBroadcast to True,
bPlayerViewRot to false and left all the other settings under that alone
except for using the looping alarm from AmbMordern for its sound. And
finally and most important for it to work under Object|InitialState I set
it to PlayersPlaySoundEffect.
11. Onwards to the final room!!. I made a lever
that activated the escape pod in the last room but that's irrelevant here
as you can just stop at the lever. Here again is what I did:
- Under the levers properties (what else can it be but a mover :)), I set
events| tag to launch and Object|InitialState to TriggerOpenTimed.
- I placed a FortStandard in front of it and set Events|Event to launch
and tag to Fort1; Under FortStandard bFinalFort should be set to true, everything
else false except for bTriggerOnly to True.
- I then added a dispatcher set its tag to launch. In then created a room
for the pod separated from the final room by a glass partition. Here I
placed the pod, explosion chains, exploding walls, earthquakes etc.
and all their tags were entered in the Dispatcher|OutEvents along with
short outdelays.
12. You need to place defense points at appropriate
place. I used about four for every Fort, locate them under navigation point|
Ambush Point. Add in the defense points, and using the top down view see
that they are pointed in the correct direction by rotating it so that the
red arrow points in the way that you want it to. Under its
advanced properties|Defense point set it to the same settings as the
fortstandard for which it is meant, like for the very first Fort Standard Fort Tag
would be Fort5, Priority 4 and Team 0. Then place path nodes in the appropriate
way by selecting them from under navigation point and adding them in the
first person view covering every area. Ladleladladla ..... pay
attention boy, pay attention.
13. Objectives: This step is where we
are going to get screenshots and use it in the game so that people can
read the objectives by hitting the F3 key. You should probably start UT
and get them now. I always do the following to get my screenshots:
- On starting up UT and reaching the menu screen, I go to the options then
preferences and in the HUD tab I uncheck Show HUD, still under the HUD tab
under the crosshair color I use I slide it fully to the left so that its
not visible in the game. Then under the game tab for weapon hand I
choose hidden. When you play the map you the screen should contain nothing
except for the map details.
- Then place yourself in the way you want the image to appear and hit the
F9 key, the game places these images in your unreal Tournament\System
directory as Shoot000, Shot 001 and so on. At this point I sometimes use
the cheat codes to get some great overhead shots - In case you don't know
the cheats just hit the ~ key to bring up the console type iamtheone and
after that fly.
- For the map I created I took 4 shots , three for the objectives and one
for the screenshot that appears when you go to the practice session. I
actually took a lot of shots from all angles and choose the best ones.
- I then opened them in Paint Shop Pro 6 and choose the Colors menu, decrease
color depth, 256 colors (ctrl+shift+3). I usually use Optimized Octree and
include windows colors. That done make the picture size 256x256 by using
the image menu, resize canvas size. That done for all the 4 pictures I
then saved them as Sreenshot.pcx (by choosing Zsoft Paintbrush from the
save as option and also under option making it version 5), AS-Pod1.pcx(it
has to be in the format AS- followed by your map name, the by the 1,2,3
etc. for consecutive shots), AS-Pod2.pcx etc.
- Back to the editor now. Expand info and the very first item should be
AssaultInfo add one into you level in an easy to remember place. I usually
place it in the very last room so that I don't end up searching for it everywhere
in the map.
- Import all the 4 images into the level. Do this by hitting the import
button in the textures browser, locate your file and when the import
texture dialog box opens enter MyLevel in the package. Note that the
package name can only be MyLevel. Say for the first objective shot when
you hit import and choose that file the import texture dialog has to be -
Name:AS-Pod1; Group : None; Package : MyLevel. Now you should have
imported all the textures and the texture browser should be like this:

- Go to the AssaultInfos advanced properties and set the following:

NumObjShots - How many pictures you are using. ObjDesc - Give a brief
description of each objective. For ObjShots for the first objective choose
AS-Pod1 on the textures bar and then hit use and so on for the rest.
Hit F6 and when the Level Properties box opens, expand LevelInfo enter
your name under MapAuthor and choose the screenshot in the textures bar
and hit use under screenshot. Still here expand
Classes|info|gameinfo|tournament gameinfo|deathmatchplus|teamgame|assault.
Ok under default game type in the levels properties click use. Here's a
look at the final in game screen when you hit F3:

14. Just add in weapons and stuff do a rebuild and you have your
level. Don't forget to do a path define under the lighting tab.
CONCLUSION:
When you play your level you should see the
following taking place:
- After starting out when you cross the mountains and reach the reception
area you should have a nice welcome committee waiting ready to toast
you.
- When you cross the area you should get a message on your screen. When
you make your way across the level and reach the end of the complex you
should get blown away by the cannons. When you respawn check that you land
in the second set of player starts.
- When you hit the lever the sirens should go off and the door open to the
launch room. There on pushing the lever you should see the assault closing
HUD earthquakes, etc. all happening at the same time.
- Also ensure that the bots are waiting for you at the next objective once
you have finished the previous one.
You should be able to create a bare bones assault level and I
think probably it could allow you to create medium difficult levels.
ASSAULT UPDATE :- END CAM TAG
The endcamtag
shows the final placement of the assault camera on finishing the map so
that you can view the end sequence.
HOW DO I DO IT NOW?
Placing the end camera should be the
very last thing that you do in the level. I cannot stress this enough. Do
this placement as the very last thing after every detail of the map is
hammered out.
Expand keypoint and locate spectator cam. Ok place it in your map and
adjust using the various views the rotation - see that it is pointed in
the right direction. And here is the pissing off factor - its just a teeny
arrow and it disappears after some time even though bHiddenEd is false. I
still haven't figured out a way of making it stay put - but I don't think
there is anyway to do it. A thing to note here though is that my opinion
doesn't matter its so easy to set up and configure it doesn't really
matter. Now the bloody easy part, under the spectator cams advanced
properties set its tag to some name and under spectator cam set bSkipView
to true so that even spectators in the match cant see this view till the
end. Go to the final fort standard - that damn cam has probably
disappeared by now, :( - and enter that name under its advanced
properties| fortstandard|endcamtag. That should about do it. In the final
level in the end you should get a view of the end sequence from where you
placed the cam in the editor. The end cam tag seems to disappear as I said
before so if on playing the level you find you don't like the view just
add in another spectator cam - don't bother searching for the previous one
- and adjust its properties like the previous one. You would have seen a
quake (no not the game) cam under spectator cam do the same settings for
its properties and under quake cam set the magnitude of the quake that
will shake the end cam. Useful if you have a lot of blasts and 'quakes
going on in the end sequence and want to make the end cam jig along.
Remember a cool ending sequence for your map can get you more points from
the reviewers.
APPENDIX: ASSAULT RANDOMIZER
This is an open challenge, this is what I
figure the randomizer does, if you can prove otherwise, I'll be happy to
accept my mistake. The assault randomizer works like an alternate path
that bots can take to complete assault objectives, this makes the assault
look random. This would be nice to use in place where you don't have to do
a certain objective to complete the map. It affects only the defending
team. Set up an assault randomizer (located under navigation point) and
have it set off by a timed trigger or a simple trigger. Set toggled cost
(under assault randomizer in assault randomizers properties) to
decreasing as each approaches the finish like the first one at the beginning
to -2000 and the second one halfway through the map at -4000 and so on.
Under timed trigger set bRepeating to true and give a suitable delay. What
this does is send messages to the randomizer that the bots can take this
path instead of the normal ones. It also seems to work better if there are
less or virtually no path nodes nearby.
|