Download exampleThis 'tutorial' (more of a list of entities) shows you how to create your very own domination map (as seen in Unreal Tournament). NOTE: you need to have reasonable background knowledge of entities, and how they work. This is not for the faint hearted! Are you sitting comfortably? Then I shall begin.
You need 2 'sets' of entities for each domination point (and a few other entities). Lets say one of the dom points was in the middle of your level, prefix all entity names to do with that dom point mid_ ; that way you can easily identify them. Also after the location prefix add a team model prefix. So your entities will have names like mid_barney_score, or mid_barney_mm. Create a
multimanager with the name mid_barney_mm. Make it target the following entities, with the delay shown (if no delay shown let it be 0);
- mid_barney_on 1
- mid_barney_master_on
- mid_gman_mm_trigger_on
- mid_gman_master_on
- mid_barney_show
- mid_barney_mm_trigger_off
- mid_barney_got
Don't worry - they're not all this bad.
Create another
multimanager called mid_barney_on_start. Targetting the following; mid_barney_on, mid_barney_score.
Create a
multimanager called mid_barney_on, targeting only the entity mid_barney_on_start.
The reason that I didn't use a
trigger_relay for this is that, strangely HL crashes if it detects a targeting loop (of something like that anyway), this doesn't happen with 2
multimanagers.
Create a
multimanager with the name mid_barney_master_on_mm, targeting mid_barney_master_on and mid_barney_trigger_off
I will use the following format for the rest of the entities I use;
Entity_type - entity_name (explanation)
- Property key = property value
- FLAG Flag Name = True (ticked)
Trigger_relay - mid_barney_master_on (this controls the state of the master)
- Target = mid_barney_master
- Delay before trigger = 0
- Trigger state = toggle
Multisource - mid_barney_master (this is the master for the scoring system)
- Game_score - mid_barney_score (this adds a point to the player that gets the point)
- Points to add = 1
- Master - mid_barney_master
Env_render - mid_barney_show (this changes the dom point's colour)
- Target = mid_show
- Render FX = normal
- Render mode = normal
- FX amount = 0
- FX colour = 255 0 0
- FLAG No render FX = True
- FLAG No renderamt = True
- FLAG No rendermode = True
- FLAG No rendercolour = False
Trigger_changetarget - mid_barney_trigger_off
- Target = mid_barney_trigger
- Delay before trigger = 0
- New target = blank (this can be anything, but not left empty, or the name of another entity)
Now for the really hard to explain bit. The entities you have just created will work, but you need to add and change a few more to get a working dom point. First you need to duplicate the entities you have made. Then rename them, replacing places where you put barney with gman, and the ones where you put gman with barney (so u just swap the barney and gman parts around).
Trigger_changetarget - mid_gman_mm_trigger_on
- Target = mid_gman_mm_trigger
- Delay before trigger = 0
- New target = mid_gman_mm
Trigger_changetarget - mid_gman_mm_trigger_off
- Target = mid_gman_mm_trigger
- Delay before trigger = 0
- New target = blank (this can be anything - but do put something in here)
Trigger_changetarget - mid_barney_mm_trigger_on
- Target = mid_barney_mm_trigger
- Delay before trigger = 0
- New target = mid_barney_mm
Trigger_changetarget - mid_barney_mm_trigger_off
- Target = mid_barney_mm_trigger
- Delay before trigger = 0
- New target = blank (this can be anything - but do put something in here)
Those 4 entities make sure that a dom point controlled by a gman can't be controlled by another gman by walking over it. Basically it stops team squabling over who gets the points for controlling a dom point.
Game_text - mid_gman_got
- Message text = The gmen got the mid point (or words to that effect)
- Text effect = fade in/fade out (could be anything you want really)
- Colour 1 = 0 64 128
- Colour 2 = 0 64 128
- Fade in time = 1
- Fade out time = 0.5
- Hold time = 0.25
- Text channel = Channel 1
- FLAG All players = true
Game_text - mid_barney_got
- Message text = The barneys got the mid point (or words to that effect)
- Text effect = fade in/fade out (could be anything you want really)
- Colour 1 = 255 0 0
- Colour 2 = 255 0 0
- Fade in time = 1
- Fade out time = 0.5
- Hold time = 0.25
- Text channel = Channel 1
- FLAG All players = true
A quick note about the text channel: if you have 2 text messages played at the same time on the same channel, HL crashes. So for each dom point you have you should have the 2 game_texts at a different channel (since 2 or more dom points may be captured at the same time) This limits the number of dom points to the number of channels (4). You could of course build in a delay using multisources and relays... but I won't go into that.
Now you have all the 'hidden' entities, now you have to make some brushed based ones.
OK, decide where your dom point is positioned, then put a this block for the player to stand on (symbolizing a capture), using almost any texture (as it won't be shown).
Func_illusionary - mid_show
- Render FX - normal
- Render mode - colour
- FX amount = 255
- FX colour = 255 255 255
- Contents = empty
You can have more of these of the same name, perhaps on a room with all the other dom point indicators so people can see which ones they don't control.
Now you need to create the entities that trigger the scoring...
Trigger_multiple - mid_barney_mm_trigger
- Target - mid_barney_mm
- Master - barneys
- Sound style - no sound
- Delay before trigger = 0
- Delay before reset = 3
Trigger_once - mid_barney_master_on_mm
- Target = mid_barney_master_on
- Master = barneys
- Sound style - no sound
- Delay before trigger = 0
Trigger_multiple - mid_gman_mm_trigger
- Target - mid_gman_mm
- Master - gmen
- Sound style - no sound
- Delay before trigger = 0
- Delay before reset = 3
Trigger_once - mid_gman_master_on_mm
- Target = mid_gman_master_on
- Master = gmen
- Sound style - no sound
- Delay before trigger = 0
Now we are nearly there. Two more entities - the ones that set the teams.
Game_team_master - barneys
- Delay before trigger = 0
- Triggerstate = off
- Team index = 0
Game_team_master - gmen
- Delay before trigger = 0
- Triggerstate = off
- Team index = 1
Now the level properties.
- Map team list = barney;gman
- Default team = fewest players
So far you have created one fully functioning dom point. Now you need to copy all of the entities (except the 2 game_team_master ones) for each dom point, replacing mid with a different prefix - e.g. north, or south.
There is a lot more stuff you can have, e.g. more teams, but this is just a starting point. Enjoy.
This article was originally published on
69th Vlatitude.
TWHL only archives articles from defunct websites. For more information on TWHL's archiving efforts, please visit the
TWHL Archiving Project page.