Default
Google


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.


Return To The Main Tutorial Index



Acquiring image from ProHosting Banner Exchange