Title: Unreal Game Types
1Unreal Game Types
- CIS 488/588
- Bruce R. Maxim
- UM-Dearborn
2Game Types
- Map types are determined by its file name and the
value of its DefaultGameType property - UT2004 browser will look for filenames prefixes
like - DM Deathmatch,Last Man Standing, Mutant,Invasion
- CTF Capture the Flag
- DOM Double Domination
- BR Bombing Run
- ONS Onslaught
- AS Assualt
3Gametype Classes
- There are UT2004 eleven game type setups, six of
which are discussed in the text - Deathmatch xGame.xDeathMatch
- Capture the Flag xGame.xCTFGame
- Double Domination xGame.xDoubleDOM
- Bombing Run xGame.xBombingRun
- Onslaught Onslaught.ONSOnslaughtGame
- Assault UT2KAssault.ASGameInfo
4Death Match Games - 1Tutorial 16.1
- Start with CD map Tutorial16_01_Start.ut2
- Best to ensure that the DefaultGameType property
of the LevelInfo category is set to
.xGame.DeathMatch - To open the Level Properties menu click in any of
the viewport panes and type F6 - After you close the Level Properties menu you can
get rid of the net display by typing F6 again
5Death Match Games - 2Tutorial 16.1
- For death match games you need to add several
PlayerStart actors, weapons bases and pickups - To add a weapons base, open the Actor class
browser, select xPickUpBasegtxWeaponBase - Use your RMB to add xWeaponBase to the 3D
viewport - Open the weapon base property class and set the
weapon type of the xWeaponBase property using the
pull down menu
6Death Match Games - 3Tutorial 16.1
- Similarly for shield and health chargers
- You can add ammo for your weapon from the Actor
class browser PickupgtAmmogtUTAmmoPickup - Use RMB to add ammo to 3D viewport
- Adrenline and health vials can also be added from
the Pickup category - You may need to check the these items are not
floating or embedded in the floor (adjust
position using the perspective viewports)
7Wildcard BaseTutorial 16.2
- Wildcard base can also be added from the Actor
browser xPickupBase category - Use the RMB to place it on the floor in the 3D
view and open its property list - In bSequential attribute of Wildcard property the
can be set to False to randomize generation of
pickups - The PickupClasses property contains the list of
items that are stored at the Wildcard base
8Death Match Design
- Segment the arena so players cannot see too many
opponents at the same time (graphis rendering
performance issue) - Make sure powerful weapons and ammo are not
placed too close to one another (game balance
issue) - Place Player Starts in interesting places to
avoid nests of NPCs that cause instant death on
spawning (game play/funnativity issue)
9Capture the FlagTutorial 16.3
- You can use te Tutorial16_03_Stat.ut2 map and set
the DefaultGameType property to xGame.xCTFGame - You need to add to red and blue flag bases to the
map (on each side of the glass wall) from the
Actor browser NavigationPointgtJumpDestgt
GameObjectivegtCTFBasegtRealCTFBasegt xRedFalgBase
or xBlueFlagBase - Rebuild as save map as CTF-Ring13.ut2
10Capture the FlagTutorial 16.4
- First remove all existing PlayerStarts from the
level (right click one, choose Select All
PlayerStart, and press the Delete key) - Place a new PlayerStart by the blue flag, open
its properties window, and set the TeamNumber
property to 1 (0 is red team) under the
PlayerStart category - Duplicate 2 or 3 more blue players and add the
similar number of red players near the red flag
(default TeamNumber should be 0)
11Capture the FlagTutorial 16.5
- You can add monitors that display team colors and
logos (replacing the monitors over the glass wall
near each base) - Select a Monitor (note the values of x, y, z in
the Drawscale) and use the Delete key - Open the Actor class browser and select
DecorationgtxMonitorgtxMonitorC and add it to the
3D view using RMB - Rotate the new Monitor, scale it, and set the
Team property to 1 or 0 in the xMonitor category
12Capture the Flag Design
- The map should have distinct red and blue areas
containing each flag (use team colors in the
decoration and lighting) - Make the two teams as close as possible in
resources (you could mirror the two bases, but
dont make them blind copies boring) - Balance is the key issue in this type of game
13Double Domination 1Tutorial 16.6
- Players divided into two teams
- The goal of each team is to simultaneously
overrun and control two specific locations of the
map fo 10 seconds - After scoring, both domination goals become
neutral and the process continues - Start with Tutorial16_06_Start.ut2 and set the
DefaultGameType to xGame.xDoubleDOM from Level
Properties window (F6)
14Double Domination 2Tutorial 16.6
- Open the Actor browser and expand
NavigationPointgtJumpDestgtJumpSpotgt GameObjectivegt
DominationPointgtDomPointA - Place DomPointA and DomPointB on opposite sides
of the glass wall - Place two groups (designated red and blue) of
PlayerStarts in each half of the map - Rebuild the level and save the map as
DOM-Ring13.ut2
15Double DominationTutorial 16.7
- You can add monitors that indicate the color (red
or blue) of the team is in control of each point
(A or B) - Use the Actor class browser to expand
DecorationgtxMonitorgtxDOMMonitor to find
xDOMMonitorA and xDOMMonitorB - Place copies on each side of each door throughout
the level - Rebuild and save the level
16Double Domination Design
- Dont place clusters of PlayerStarts too close to
the domination points (this makes it a little
harder to control domination points) - Avoid placing too many powerful weapons, ammo, or
health near the domination points (makes it
harder to camp and defend a domination point)
17Bombing Run
- Team-based game, having a ball and two delivery
points - Object is to take a ball and throw it into the
enemy hoop - Holding the ball and jumping through the hoop is
7 points - Tossing the ball through the hoop is 3 points
18Bombing Run - 1Tutorial 16.8
- Open Tutorial16_08_Start.ut2, use F6 to open the
Level properties and change the DefaultGameType
to xGame.xBombingRun - Use the Actor class browser and select
NavigationPointgtJumpDestgtJumpSpotgt
GameObjectivegtxBombDelivery and add one goal to
each side of the glass wall - Open the properties window goal of the blue team
goal and set the Team property of the Team
category to 1
19Bombing Run - 2Tutorial 16.8
- Select the middle group of doors and delete them
along with the trigger - Use the Actor class browser and select
NavigationPointgtJumpDestgtJumpSpotgt
GameObjectivegtxBombSpawn and add with in this
doorway - Add two group of PlayerStarts, rebuild the level,
and save the map as BR-Ring13.ut2
20Bombing Run Design
- Dont put the player starts too far away from a
goal and dont put them too close either - Preventing the goal from being visible from long
distances to avoid Hail Mary shots anytime a
player gets the ball
21Onslaught
- The players task is to initialize power nodes in
a connect the dot manner to link the players
base with the enemy team power core to make it
vulnerable to attack - Object is to destroy the enemy Power Core
- The map has five main components Power Cores,
Power Nodes, Vehicles, Teleport Pads, and Weapon
Racks
22Onslaught - 1Tutorial 16.9
- Load the file Tutorial16_09_Start.ut2 and use F6
to open the Level Properties window - Set DefaultGameType to Onslaught.ONSOnslaughtGame
and save the map as ONS-Ring13.ut2 - Add the ONSPowerCoreRed and ONSPowerCoreBlue to
the map from the Actor class browser
NavigationPointgt JumpDestgtJumpSpotgtGameObjectivegt
DestroyableObjectiveltONSPowerCore
23Onslaught - 2Tutorial 16.9
- Add several ONSPowerNodeNeutral nodes to the map
from the Actor class browser NavigationPointgtJumpD
estgtJumpSpotgt GameObjectivegtDestroyableObjectivegtO
NSPowerCoregtPowerNode - Place two groups PlayerStarts (red and blue) near
their respective power cores
24Onslaught - 1Tutorial 16.10
- To establish the links between nodes and cores
you need to open Unreal using the test icon in
UnrealEd - Press the Esc key to open a pop-up window and
select the Map button in the upper left corner - In the Map window press the Link Designer button
on the lower left hand corner
25Onslaught - 2Tutorial 16.10
- To establish the links between nodes and cores
you use the LMB to click the beginning and ending
node of each link - When finished, click the Export to UnrealEd
button to put the links on the clipboard - Use to bring up the console and type exit
- In UnrealEd use the RMB any where in the level
and choose EditgtPastegtHere - Verify that the Eagle icon properties say
ONSPowerLinkOfficialSetup
26OnslaughtTutorial 16.11
- Repeat the process to create alternate link setup
in the level - You need to clear existing links from inside the
Link Designer window - Once you return to UnrealEd use RMB to open
property window of the new Eagle icon - Under LinkSetup category and change the SetupName
property to AlternateSetup1 - Game is now playable from UT2004
27Placing VehiclesTutorial 16.12
- In the Actor class browse SVehicleFactorygt
ONSVehicleFactory to find the list of available
vehicles - Add to the 3D view using the RBM like usual
(vehicles will be associated with the owner of
the nearest Power Node or Core) - Vehicles are used by getting real close them and
pressing E key during game play - Vehicle use ends when E is pressed again
28Adding TurretsTutorial 16.13
- Turrets work similar to vehicles (they can only
be used by team owning closest power node or
core) - Expand PawngtVehiclegtONSWeaponPawngt
ONSStationaryWeaponPawn and select the
ONSManualGunPawn from the Actor class browser and
add using the RMB - Turrets are activated and deactivated using the E
key once close enough
29Adding Weapons LockersTutorial 16.14
- Adding weapons lockers is similar to adding
Wildcard bases (they need to be stocked after
they are added to the level) - Open the Actor class browser expand the Pickup
category and select WeaponLocker - Use the RMB to add the locker to the level then
open its properties window and start adding
WeaponClass items to the Weapons property
30Adding Teleport PadsTutorial 16.14
- You can add additional teleport pads (beyond the
node and cores) that are usable by the team
controlling nearest node or core - Select ONSTeleportPad from the Actor class
browser and use the RMB to add it some where in
the 3D viewport - The E key is used to activate the teleport pads
and bring up a destination menu
31Onslaught Design
- Careful placement of the nodes and links
- Place power cores in well defended locations that
are not visible at long distances - Balance the resources and geography available to
each team - Level symmetry is important since teams swap
locations from one round to another - Include link guns to allow repairs and speed up
construction of power nodes
32Assault
- A times objective-based team game
- Attacker objectives include destroy objects, hold
positions, or activate switches and defenders try
to prevent them - Attackers and defenders switch roles after each
round ends - Set-up process includes setting objectives,
setting up player spawn management, and creating
Matinee intro and ending sequences
33Assault (Triggered Objective) - 1Tutorial 16.17
- Open Tutorial16_17_Start.ut2
- Use F6 to open the Level Properties window and
then set the DefaultGameType to
UT2k4Assault.ASGameInfo - To set the first objective open the Actor browser
and expand NavigationPointgt JumpDestgtJumpSpotgtGame
Objective and select TriggeredObjective - Add this actor in front of the computer terminal
to the right of the first closed door
34Assault - 2Tutorial 16.17
- Use the RMB to open TiggeredObjective properties
window - Under the Events category set the Tag property to
OBJswitch (this makes the actor listen for the
OBJswitch event) - Under the Events category set the Event property
to OBJswitch_complete (this makes the actor
broadcast the OBJswitch_complete event)
35Assault - 3Tutorial 16.17
- Open class browser and expand the Triggers
category and select the UseTrigger actor - Add it to the level really close to the
TriggeredObjective actor - Open the UseTrigger properties window and expand
the Collision category and set the
CollisionRadius property to 70 - Have the UseTrigger broadcast OBJswitch when
activated, set the Event property in the Events
category to OBJswitch
36Assault - 4Tutorial 16.17
- You need to delete the Trigger between first two
doors (select the doors, open them, select the
Trigger, press the Delete key, close doors) - Select both doors and use the RMB to open the
Properties window and set the Events category Tag
property to OBJswitch_complete (this causes the
doors to close when they hear the event after
use key E is pressed) - Save the map as AS-Ring13.ut2
37Assault (Hold Objective) - 1Tutorial 16.18
- To set the second objective open the Actor
browser and expand NavigationPointgt
JumpDestgtJumpSpotgtGameObjectivegt
ProximityObjective and select HoldObjective - Add this actor to the left of the second closed
in front of the computer terminal - Use the RMB to open the HoldObjective properties
window
38Assault - 2Tutorial 16.18
- Under the Events category set the Tag property to
OBJhold (this makes the actor listen for the
OBJhold event) - Under the Events category set the Event property
to OBJhold_complete (broadcast message) - In the HoldObjective category set the MoverTag
property to Doors2 (which is tha name of the
nearby doors)
39Assault - 3Tutorial 16.18
- Delete the Trigger between the two doors
- Select both doors and use the RMB to open the
Properties window and set the Events category
Event property to OBJhold (which is the open door
broadcast message) - Under the Mover category set the MoveTime
property to 5 (which indicates that a player
needs to hold that position for 5 seconds) - Rebuild, save, and test the map
40Assault (Destroyable Objective)-1Tutorial 16.19
- To set the third objective, navigate to the third
set of doors, and select the static mesh centered
over the door - Use the RMB to open the properties window, expand
the Display category, and click the StaticMesh
property - Copy this value of the StaticMesh property to the
clipboard by typing Ctrl-C - Use the Delete key to delete the static mesh (but
first note the DrawScale3D values)
41Assault - 2Tutorial 16.19
- Open the Actor browser and expand
NavigationPointgtJumpDestgtJumpSpotgt
GameObjectivegtDestroyableObjective and select
DestroyableObjective_SM - Add this actor in the level (it looks like a
cube) - Use the RMB to open the properties window for the
cube, expand the Display category, select the
StaticMesh property, and use Ctrl-V to paste the
image form the clipboard
42Assault - 3Tutorial 16.19
- You may need to adjust the DrawScale3D values to
match the original static mesh - Rotate the destroyable object so it can fit in
the position of the original static mesh - Use the RMB to open the property window for the
destroyable object and the Event property to
OBJdestroy_complete - Open the Static Mesh browser and load the package
Chapter16_SM and select the smashMesh model
43Assault - 4Tutorial 16.19
- Use the RMB to open the properties window of the
destroyable object, expand its DestroyableObjectiv
e_SM category and select DestroyedStaticMesh
property and click the Use button to paste the
destroyed mesh model - Delete the trigger between the doors
- Select both doors and set the Tag property of the
Events category to OBJdestroy_complete
44Assault 5Tutorial 16.19
- Under the Mover category set the MoveTime
property to 2 (slows down door movement) - The doors will only open when the lock is
destroyed - Rebuild, save, and test the level
45Assault (Proximity Objective) - 1Tutorial 16.20
- To set the fourth objective, navigate to the
north side of the glass wall - Open the Actor browser and expand
NavigationPointgtJumpDestgtJumpSpotgt GameObjective
and select ProximityObjective - Use the RMB to place the actor in front to the
computer near the north wall - Use the RMB button to open its property window
and set the Event property to OBJfinal_complete
46Assault - 2Tutorial 16.20
- Under the Collision category set the
CollisionRadius property to 70 - Open the Actor class browser, expand Triggers,
and select Trigger_ASRoundEnd - Place this actor somewhere in the map
- Use the RMB to open the triggers property window
and set the Events category Tag property to
OBJFinal_complete - Rebuild the level, save it, and test it
47Assault (Objective Order) - 1Tutorial 16.21
- You can force the completion of the objectives in
a fixed order - Use the RMB to open the property window of the
PxomityObjective actor - Expand its GameObjective category and set its
DefensePriority to 0 (meaning it is the last
objective to be completed) - Begin working backwards through the other
objectives
48Assault 2Tutorial 16.21
- Set DefensePriority to 1 for the
DestroyableObjective - Set DefensePriority to 2 for HoldObjective
- Set DefensePriority to 3 for TriggerObjective
- Rebuild, save, and test the map
49Assault (Player Spawn Points) - 1Tutorial 16.22
- Begin by using the RMB to bring up the context
menu to select all PlayerStarts and delete them
by typing the Delete key - You then need to create clusters 4 attackers
(placed after each objective) and 4 defenders
(place before each objective) - Select the 4 PlayerStarts in first group of
defenders - Use the PMB to open the Properties window
50Assault - 2Tutorial 16.22
- Expand the PlayerStarts category and set the
TeamNumber property to 1 - Repeat this process setting the TeamNumber to 2,
3, and 4 for each successive groups of defenders - Save your work
51Assault (Spawn Point Manager) - 1Tutorial 16.23
- Open the Actor Class browser expand the Info
category and select PlayerSpawnManager - Use the RMB to place a spawn manager just outside
the first group of attacker PlayerStarts
(TeamNumber 0) - Open the Properties window, expand the Events
category and set the Tag property to PSM_Att1 - Repeat this process with each group of attackers
52Assault - 2Tutorial 16.23
- Set the Tag property of the second group of
attackers to PSM_Att2 - Set the Tag property of the third group of
attackers to PSM_Att3 - Set the Tag property of the fourth group of
attackers to PSM_Att4 - Use the RMB to place a spawn manager just outside
the first group of defender PlayerStarts
(TeamNumber 1)
53Assault - 3Tutorial 16.23
- Set the Tag property of the first group of
defenders to PSM_Def1 - Set the Tag property of the second group of
defenders to PSM_Def2 - Set the Tag property of the third group of
defenders to PSM_Def3 - Set the Tag property of the fourth group of
Defenders to PSM_Def4
54Assault - 4Tutorial 16.23
- You will need to move to the second group of
PlayerStarts (PSM_Def1 and PSM_Att2) - Use the RMB to open the properties window for the
PlayerSpawnManager for PSM_Def1 and set this as
its Tag value - Expand the PlayerSpawnManager category and set
the AssaultTeam property to ESPM_Defenders and
the PlayerStartTeam property to 1
55Assault - 5Tutorial 16.23
- Use the RMB to open the properties window for the
PlayerSpawnManager for PSM_Att2 and set this as
its Tag value - Expand the PlayerSpawnManager category and set
the bEnabled property to False and the
PlayerStartTeam property to 1 - Repeat this for the next two objectives groups
of PlayerStarts incrementing the Tag values and
PlayerStartTeam values appropriately
56Assault - 6Tutorial 16.23
- You will need to move to the final group of
PlayerStarts (PSM_Def4) - Use the RMB to open the properties window for the
PlayerSpawnManager for PSM_Def4 and set this as
its Tag value - Expand the PlayerSpawnManager category and set
the AssaultTeam property to ESPM_Defenders and
the PlayerStartTeam property to 4 and save your
work
57Assault (Scripted Trigger) - 1Tutorial 16.24
- Open the Actor Class browser, expand
KeypointgtAIScriptgtScriptedSequence and the select
ScriptedTrigger - Place the actor at any convenient location in the
level map - Use the RMB to expand the AIScript category and
select the Action property - The action list will make up the program that
controls the triggers behavior
58Action List for Scripted Trigger 1
59Assault - 2Tutorial 16.24
- Index0 wait until the trigger receives the
OBJswitch_complete message - Index1 Disables first group of attacking spawn
points - Index2 Disables second group of attacking
spawn points - Index3 Disables third group of defending spawn
points - Index4 Disables fourth group of defending
spawn points
60Assault 3Tutorial 16.24
- Add two more ScriptedTriggers some where in the
level - Create action lists similar to the first trigger
(to make sure that players are on ly spawning
near the next objective) - Rebuild the level (esp. the paths), save, and
test it
61Action List for Scripted Trigger 2
62Action List for Scripted Trigger 3