Onslaught Map Creation Tutorial
START
WITH A LAYOUT
The
usual way to start making on Onslaught map is to start with a terrain. The
RadarMap works best with terrain based maps, but you actually don't have to have
a terrain at all. You can make an Onslaught map entirely out of BSP if you want.
Regardless of what you choose, it is important to get an overall layout going
first so you can make sure it is balanced and start testing vehicles in it
before committing to the design.
CREATING
AN ONSLAUGHT FRIENDLY MAP LAYOUT
You
will want to have a general PowerNode network in mind when creating your basic
layout for a number of reasons...
You want to make sure and have relatively flat areas in your maps where you can
put in the PowerCores, PowerNodes, and surrounding VehicleFactories.
Walking sucks. Make sure players don't have huge distances to get from one node
to the next, because there will always be times in which they don't have a
vehicle and have to walk it.
Node/Core sniping sucks. It is impossible to defend a PowerNode or PowerCore
that can easily be shot at from miles away. Distance between nodes can be
important as well especially if you plan to have stationary laser turrets as
defense. A laser turret that can shoot the next node in the series will pretty
much ruin an Onslaught map. So make sure you have hills, staticmeshes, etc. to
occlude areas where long range sniping would be difficult to defend against.
It
is also be a good idea to read this entire tutorial before you even
start your terrain to eliminate vehicle navigation issues before they come up.
Important:
If you want to make your map RadarMap friendly, make sure your terrain/level
geometry is centered at the world origin (0,0,0).
START
TESTING YOUR MAP LAYOUT FOR BALANCE ISSUES
It
is important to start getting vehicles into your map as well as actual
PowerCores and PowerNodes. Vehicles need to be tested to make sure they can
drive well on the terrain and can't escape the map, and PowerNodes need to be
checked to make sure you can't snipe them from across the map. Keep in mind when
testing vehicles on the terrain you may have to change the terrain you just
tested to fix a PowerNode from being sniped too easily. Anytime you change the
layout you will have to re-test all the vehicles again to be sure.
PLACING
POWERCORES AND POWERNODES
With
that in mind, it is a good idea to place your PowerNodes before doing a lot of
vehicle testing so I'll explain that part first.
You
want to start by placing a PowerCore for each team. Onslaught assumes there will
be one red team PowerCore and one blue team PowerCore. YOU MUST PLACE ONE RED
POWERCORE AND ONE BLUE POWERCORE IN YOUR MAP BEFORE IT WILL WORK. The red and
blue PowerCores are listed in the actor list as two separate actors and can be
tough to find on your own. Here are their locations...
NavigationPoint
| JumpDest | JumpSpot | GameObjective | DestroyableObjective |
NavigationPoint | JumpDest | JumpSpot | GameObjective | DestroyableObjective |
ONSPowerCore | ONSPowerCoreRed
There
is only one kind of PowerNode, because PowerNodes always start out as neutral.
The neutral PowerNode is located here...
NavigationPoint
| JumpDest | JumpSpot | GameObjective | DestroyableObjective |
Make
sure the PowerNodes aren't too high up so vehicles and players will be able to
run over them without getting stuck or jumping.
PowerCore
and PowerNodes are closely related to path nodes so be sure and REBUILD PATHS
EVERYTIME YOU CHANGE OR ADD ANY POWERCORES OR POWERNODES.
SETTING
UP A LINK NETWORK
Once
you have placed your Cores and Nodes you need to setup your first link network.
Once you have rebuilt paths and saved, you will need to go ahead and run
the map since link networks are created using the in-game Link Designer.
Once
in-game, you will find that your nodes are invisible since there is no current
link network. Press Esc to bring up the mid-game menu and select the
"map" tab. Now select the button marked "Link Designer"
Now
you should see the RadarMap with your PowerCores and PowerNodes clearly marked.
PowerNodes will look like lock symbols at this point. Creating links is simple,
first click on PowerCore and then click on a PowerNode and a link will be
established. Click on a PowerNode and click on another PowerNode to create link
between them too. Clicking on PowerNodes that already have a link will remove
the link between them.
You
don't have to use all your placed nodes in a particular link setup if you don't
want to. If you don't link a node, it won't appear in-game and won't activate
any nearby playerstarts or vehiclefactories. Multiple link setups are possible
so you may want to have extra nodes lying around for adding more complicated
networks later on.
The
reason the Link Designer is in-game is so that anyone can change link networks
even if they are not a mapper. A non-mapper at this point can type in a name for
his link network and save it by pressing the "save" button. Now his
custom link network will always show up as an option in the Onslaught map list
unless he deletes it later.
As
a mapper creator however, you want to make at least one permanent link network
that will always be stored in your map itself and cannot be deleted without
editing the map. To do this just click on the "Export To UnrealEd"
button once you have created your network. What this does is to copy a special
actor into your clipboard exactly like when you copy an actor in UnrealEd. So
now you can leave the game, go into your map in UnrealEd, and paste the actor
anywhere you want by right clicking, selecting Edit|Paste|Here.
The
actor you pasted will be called ONSPowerLinkOfficialSetup and as long at it is
in your level somewhere, the link network you created will be stored in the map.
If you want you can do the whole process again and paste additional official
link networks into your map. If you didn't set a name in the Link Designer you
can always edit the actor and change its name in the LinkSetup category.
Warning:
You can move your PowerCores and PowerNodes around after setting up the link
network, but if you add or remove a PowerCore or PowerNode, you will need to
delete the ONSPowerLinkOfficialSetups and setup your network again using the
Link Designer. But always... DON'T FORGET TO REBUILD PATHS IF YOU CHANGE
ANYTHING ABOUT POWERCORES OR POWERNODES.
There
is one final step that needs to be done to get link setups to work correctly.
Open up a command prompt and run the command "ucc exportcache *.*" in
the system directory of your UT2004 installation. YOU MUST DO THIS EVERYTIME YOU
CHANGE ONSPOWERLINKOFFICIALSETUPS OR THE INFORMATION THEY CONTAIN.
One
last warning about link setups is the ExtraInfo field in the LevelSummary
category of the Level properties. It is important to leave the ExtraInfo field
blank. If this field is not blank, your link setups will never show up in the
map selection tree. The reason for this is technical, but basically each time
the map is saved the link setup information is automatically stored in ExtraInfo.
The field always appears blank just in case modders want to override the link
setup system with their own custom information.
GETTING
VEHICLES IN YOUR MAP
As
you work on balancing your layout, you will want to start testing vehicles in
your map. There are three way to get vehicles into a map. The final Onslaught
map will use ONSVehicleFactories, but vehicle factories will only spawn vehicles
at PowerCores and active PowerNodes. Placing vehicle factories is explained
later on, but until then there are temporary ways of getting vehicles anywhere
in a map.
-
To place a vehicle directly in your map, look in Pawn | Vehicle | SVehicle |
ONSVehicle to find the various vehicle categories and
vehicles.
-
To summon a vehicle in-game, use one of the following commands...
summon
Onslaught.ONSAttackCraft
summon
Onslaught.ONSHoverBike
summon
Onslaught.ONSHoverTank
summon
Onslaught.ONSPRV
summon
Onslaught.ONSRV
summon
Onslaught.ONSMobileAssaultStation
Warning:
Don't summon a vehicle on top of your playerstart as summoned vehicles will
sometimes kill you when summoned and if the vehicle is on your only playerstart
you won't be able to respawn.
TESTING
VEHICLES IN YOUR MAP
When
testing vehicles, there are several important things to look out for...
The most general rule is to realize that people are going to try and drive every
vehicle everywhere in your map in every possible way. Make sure and test all of
these situations and make sure you don't get stuck easily, and also make sure
you can exit your vehicle no matter where you want to. The exiting system checks
a certain number of locations around the vehicle and if the vehicle can get into
really tight quarters you may find yourself trapped. Nobody likes to be trapped
in a vehicle and having to suicide.
Make sure that the wheeled vehicles can drive over the terrain without getting
snagged easily, or constantly being flipped over by uneven terrain. Having lots
of jumps is great, but make sure it doesn't get annoying when your trying to get
somewhere fast and every few seconds you're nose diving into the ground.
The tank has the ability to drive over some pretty insane ground. Be sure and
test driving it up and down vertical cliffs, over giant boulders, into tight
places you wouldn't expect people to want to go, everywhere. Tanks are usually
valuable vehicles in a game and nobody likes it when they get one and then have
to bail out because they get stuck.
The Manta and Raptor rarely have problems getting around in any map. But that is
precisely the problem you need to be looking out for. If you want to have areas
that only the Raptor can fly to, you will need to do a lot of testing to make
sure the Manta can't get there as well. The other, more important, problem is
keeping them in the map. You don't want to have people figure out how to get a
vehicle out of your map and under the terrain where they can fire on people from
underground. Fortunately you have three powerful tools for keeping this from
happening...
RESTRICTING
VEHICLES TO THE MAP
The first and most important tool for keeping vehicles in the map are blocking
volumes. Blocking volumes should be used to keep vehicles and players from
accessing the boundaries of your map. Obvisouly you don't want to have a lot
blocking volumes with nothing inside them so that they appear to be an invisible
wall, but with Mantas and Raptors that can get over pretty much anything it is
inevitable that at some point you have to just stop them short.
The second tool is
StallZ. This is a setting that you can find in View|Level
Properties|LevelInfo|StallZ that limits the height that a flying vehicle can
fly. Once you reach this limit the vehicle is pushed back down to safer
altitudes.
The final tool is
KillZ which serves as a backup just in case someone is able to
get under the terrain or out of the map boundaries. Even if your map is very
secure it is possible (although very rare) that a vehicle could be hit by a tank
or something and somehow get smashed through the terrain. If you don't have a
KillZ at that point you will have player walking around that is able to shoot
people up through the ground.
FORTIFY
YOUR POWERNODES
Now
it is time to add vehicle factories, turrets, playerstarts, and weapons to your
PowerNodes and PowerCores. Vehicle factories, turrets, and playerstarts are all
activated and deactivated by the node they are associated with, but fortunately
we made it easy on our mappers by making the associations automatic. At the
start of each game, every vehicle factory, playerstart, and turret find the
closest PowerCore or PowerNode and registers with it. So all you need to do is
make sure you realize this when placing your actors. If you place a turret too
far away from the node it is defending, you may find that in game the turret is
actually associated with another, slightly closer, PowerNode.
You
also don't have to worry about setting a team, since the PowerCores will
automatically set this for their associated actors, and the PowerNodes will set
this for their actors based on on their current team status in-game. The team
property in PlayerStarts is ignored in Onslaught as it is overidden by the
Nodes.
Vehicle
factories conveniently appear in the editor as the vehicle that they spawn. This
is so that you can place them in the correct orientation and make sure they are
facing the right direction. The location of the vehicle factories is here...
SVehicleFactory
| ONSVehicleFactory | ONSAttackCraftFactory
SVehicleFactory | ONSVehicleFactory | ONSHoverCraftFactory
SVehicleFactory | ONSVehicleFactory | ONSMASFactory
SVehicleFactory | ONSVehicleFactory | ONSPRVFactory
SVehicleFactory | ONSVehicleFactory | ONSRVFactory
SVehicleFactory | ONSVehicleFactory | ONSTankFactory
If
you edit the properties of a vehicle factory you can find two options in the
ONSVehicleFactory category.
bReverseBlueTeamDirection: Setting this to True will spawn the vehicle facing
180 degrees of where you placed it, but only if the blue team controls the node.
This is a nice feature for central nodes in particular where it is important
that the vehicle spawns facing the direction you are attacking.
RespawnTime: I
strongly suggest not changing this unless you really feel it is
important for your map. Players are accustomed to vehicles spawning in the
default time, so it should only be changed, for example, if you feel a
particularly powerful vehicle in your map might be spawning to often and the map
would be better balanced by giving it s slightly longer spawn time. Even then it
would be best to only change it by a small amount. Large changes to this number
could be very frustrating to veteran players and confusing to newbies.
Stationary
Turrets do not have a factory but are placed directly. The location is...
Pawn
| Vehicle | ONSWeaponPawn | ONSStationaryWeaponPawn | ONSManualGunPawn
Again, make sure you can't snipe other PowerNodes or a PowerCore with laser turrets or it will be almost impossible to defend against.
SETTING
UP THE RADARMAP
The
RadarMap is always centered at the world origin (0,0,0). Hopefully you made sure
your terrain was centered in the beginning, but if not it is possible to move
the terrain by moving the TerrainInfo actor. For non-terrain maps just make sure
your level is generally built around the world origin so that the RadarMap will
be centered on it.
In
the toolbar at the top of the editor, go to
View | Level Properties | RadarMap to find the RadarMap options...
bShowRadarMap: This defaults to true but you can set it to false if you don't
want to have a RadarMap. I highly recommend having a RadarMap as it is a major
part of Onslaught unless you are creating a a specialty map where people already
expect it to be different from the norm. If you make a map with a lot of levels
in the Z direction where you have PowerNodes on top of PowerNodes this might be
appropriate since the RadarMap would be confusing anyway.
bUseTerrainForRadarRange: This defaults to true and causes the RadarMap to use
the Terrain in the level to determine the range of the RadarMap. For terrain
based levels this is what you want. For levels with no terrain you can set to
false and specify your own RadarRange in the next property.
CustomRadarRange: If bUseTerrainForRadarRange is false, then this will be used
as the range of the RadarMap. If you don't have a terrain and decide to use a
custom range, you can find out the dimensions of your level by going into Top
view, center your mouse cursor on the world origin and press Shift-Ctrl-MiddleMouseButton
to drag a ruler in any direction. What you want to find is the largest distance
from the origin that will cover your entire level.
RadarMapImage: This is the part of the documentation where you learn that the
engine doesn't create the background image of the level for you (sorry folks!).
You have to create this image yourself and put the location here. Usually we
store this image as a 256x256 DXT1 in mylevel, but you can put it in a texture
package if you like. Now you're probably asking, "How the hell do we create
the image?" Well, there are a number of techniques for doing this and they
are explained in the next section.
Note
about multiple terrains: If you use more than one terrain in your level and
select bUseTerrainForRadarRange, it will choose one randomly to determine the
RadarMap range. You probably will want to specify which terrain to use for the
range however so to do this put the phrase PrimaryTerrain
in the Tag of the terrain you want it to use for the range.
CREATING
A RADARMAPIMAGE
The
engine may not make the image for you, but on the other hand since you are
creating the image yourself you can do whatever you want with it. You can have a
giant smiley face as your background if you want, although Onslaught players
will probably not appreciate it too much. Most mappers will want a map
background that matches their level geometry and here are a couple of tips for
doing that...
One way to get a
good image is to use Top view in UnrealED. The advantage is
that you get a perfectly orthographic top down view that is already oriented
correctly. The big problem with this method is that staticmeshes show up in
wireframe so you have to hide them. If staticmeshes are a major part of your
terrain then this probably isn't the best method to get a good image. If that
isn't the case, start by saving your map to a backup version because you will
need to make alterations that you don't want in the actual map. Once you are
working on the backup, go into Top view and turn on terrain with the
"T" key. You then want to hide or delete all the actors, staticmeshes,
volumes, etc that are drawn on top. Lastly you must paint back in any visibility
that was removed from the terrain. Once your done, take a screenshot with Alt-PrtScr
and paste into Photoshop. Make sure and get the terrain boundary lines in your
screenshot because the final image must be centered exactly where the center of
the terrain is and the boundary lines will help with cropping to this in
Photoshop.
The second method
is to use the dynamic lighting view in UnrealED. The advantage
is that you get fully rendered staticmeshes. The disadvantages are that the
viewport is not orthographic so the terrain will be warped by the FOV, you have
to manually orient the map, and it is impossible to get a perfectly matched
terrain, so you have to use Photoshop quite a bit to get the best matchup. To
start, you will still need to delete parts you don't want in the picture so save
to a backup first and then delete all the icon actors from the map. Next I start
by zooming way up into the sky in the dynamic light view looking down on the
terrain. Then I flip back and forth between top view and dynamic light view
adjusting the camera rotation in dynamic view until the center portion of the
two map view are pretty well aligned. The outside of the dynamic light view will
be warped by the FOV so it will never line up perfectly, but with a little
Photoshop touchup work you can make a pretty decent backgrounds with this
method.
The terrain
heightmap is your friend! No matter what method you use, you will
probably want to get the terrain heightmap into Photoshop. Since the range and
orientation of the RadarMap is based on the terrain, which is based on the
heightmap, the heightmap is a perfectly aligned, perfectly centered background
image. Unfortunately it doesn't look very cool, however you can use it as a
guide in Photoshop to make your image line up correctly in the game. I like to
make a layer with the heightmap with some transparency so I can align my image
perfectly to it and then I just delete the layer. If you're a much better artist
than me, which is likely since I am a programmer, you might even consider just
using the heightmap itself and painting in the detail. You can even use the Render
| Lighting Effects filter along with the heightmap to create the terrain
look. It's a lot more work than the other methods, but you get a perfectly
aligned background image and you can make it look as cool as you like.
If you don't use a
terrain in your map you won't have a heightmap to help align
your image, but you can still try to use the Top or Dynamic Light view methods
above. A good alternative for aligning your image is to create a volume centered
at the world origin that has twice the RadarMap range you specified as its
width, height, and depth. In Top view you can take a screenshot and use the
resulting image as a border to align and crop your actual background image to.
Once
you have your image, save it into a package or myLevel and reference it as the
RadarMapImage as described in the last section. Be sure and test carefull to
make sure your location on the RadarMap in-game lines up with the location on
the background image. Otherwise you will need to make adjustments in Photoshop.
SETTING
UP VEHICLE AI PATHNODES
<<TODO>>