UED2 Main

UED2 Tutorial - Zones explained
Zones are used to divide a level into logical areas. Two main reasons for you to take advantage of zones. First of all it allow you to change the physics in one area of the level. This could be everything like, water, lava, gravity, vaccum, surface friction and so on.
The second reason is the framerate gain.
By dividing the map into logical areas you reduce the overall
processing time to calculate the visibility.
To gain anything from this, the zonportals need to be as small as
possible.
Placing them in hallways, doorways and windows might be the best option.
This is how a small level is zoned into two areas.
As you can see, each zone is shown with different colors.
To actually create a zoned area you need to physically seal off parts of the level.
Create a sheet and then select "Add Special Brush" and select "Zone Portal".
(If you create water you may use "Water" instead).
If you want to alter zone specific information you need to place a "ZoneInfo"
actor inside the zoned area.
There is a limit of 64 zones for each level. If this number is exceeded some
zones will be merged together.
In short you use zones for two reasons.
The first is to alter the physics in specific areas.
The second is to speed up the overall game speed.
There exist alot of pre-defined zones available for you to use.
They are found under "Info" and "Zoneinfo" in the actor browser.
Here is a list of the available:

ZoneInfo | Specific
CloudZone | Items will disappear in this zone, emulates a skyzone.
KillingField | This actor do not work (script is empty).
LavaZone | This zone emulates lava and will kill you within short (-40/sec).
LevelInfo | This is placed automaticlly by UED2 in the centre of your level.
NitrogenZone | Works/looks like water but player lose health (-20/sec).
PressureZone | When "triggered" anyone inside will be "depressurized".
SkyZoneInfo | Used to create a skyzone, used with "fake backdrop" textures.
SlimeZone | Like lave zone but a different look (-40/sec).
TarZone | Works like a waterzone but at a very slow moving speed.
TeleporterZone | Teleports the player (by associated teleporter) to a teleporter.
ToggleZoneInfo | This actor do not work (script is empty).
VacuumZone | Nearly instant death.
WarpZoneInfo | Portals, to seamless connect two parts of a level togheter.
WaterZone | Change from walk to swim mode and you will suffocate.

This list will show some of the properties you are able to alter: |

Property | Specific
+LocationString |
ZoneName | Name that will show up at the scoreboard and comments.
+Reverb |
bRaytraceReverb | Not really sure what it do.
bReverbZone | Enables/Disables reverb in the zone.
CutOffHz | Sounds below this hz will not be included in the reverb.
Delay[] | Delay before 'echo' occure.
Gain[] | Volume gain when the appropriate 'echo' occure.
MasterGain | Main volume gain applied to each 'echo'.
SpeedOfSound | How fast the sound will be played.
+ZoneInfo |
bBounceVelocity | Don't think there is any code to support this property.
bDestructive | If true, gibs and carcasses will not lie around in the zone.
bFogZone | Enable/Disable volumetric light to be rendered inside the zone.
bGravityZone | Don't see the point as you can set gravity anyway.
bKillZone | I can't find any code for this property so I guess its not working.
bMoveProjectiles | If true, ZoneVelocity will also affect projectiles.
bNeutralZone | If true, player cannot be harmed by zone specific properties.
bNoInventory | If true, no dropped items can lie around in the zone.
bPainZone | If true all players will loose health each second.
bWaterZone | Fill the entire zone with liquid.
DamagePerSec | The amount of health lost each second if bPainZone is true.
DamageString | The death message to be used instead of type.
DamageType | How the screen and death message is affected.
EntryActor | Actor that appear when someone enter the zone (bWater=true).
EntrySound | Sound effect heard when someone enter the zone (bWater=true).
ExitActor | Actor that appear when someone exit the zone (bWater=true).
ExitSound | Sound effect heard when someone exit the zone (bWater=true).
MaxCarcasses | Max number of body parts that can be in the zone at one time.
MaxLightCount | Max of lights to use if MinLightingPolyCount > MeshPolyCount
MaxLightingPolyCount | The maximum of 'allowed' lit sides.
MinLightCount | Min of lights to use if MaxLightingPolyCount < MeshPolyCount
MinLightingPolyCount | The minimum of 'allowed' lit sides.
ZoneFluidFriction | Alter the friction while swimming inside the zone.
ZoneGravity[] | Alter the direction and strength of gravity in the zone.
ZoneGroundFriction | Alter the friction while walking inside the zone.
ZonePlayerEvent | This event is triggered if any player enters the zone.
ZoneTag | Don't really know what this is used for.
ZoneTerminalVelocity | Maximum falling speed, overrides gravity.
ZoneVelocity[] | Adds constant speed to all moving things in the zone.
+ZoneLight |
AmbientBrightness | The default light level in the zone.
AmbientHue | The default light coloring in the zone.
AmbientSaturation | The default light coloring in the zone.
EnviromentMap | Don't know what do.
FogColor | Don't know what do.
FogDistance | Don't know what do.
TexUPanSpeed | Alter the speed of all U-Panning textures in the zone.
TexVPanSpeed | Alter the speed of all V-Panning textures in the zone.
ViewFlash[] | Used with ViewFog to counter brightness (0 to -1).
ViewFog[] | Vector based increase of RGB brightness (0 - 1).

ZoneInfo priority: Level properties is also treated as zone information and changes to it will affect the entire level. When you create individual zones you are able to use zoneinfo actors to override the level properties inside that zone.
(LocationID will override the zoneinfo name.)
Location ID:
When you are unable to use zones or zones is not needed you can use the "LocationID"
to change the shown name inside a zone.
This will only affect a small area which is specified with the location radius.

LocationID | Specific
LocationName | The displayed name.
Radius | The area affected by LocationID

The "locationid" actor can be found in the actor browser under "keypoint". Triggering zones: By default you cannot trigger or alter the properties of zones. The pressure zone however must be triggered to work. What you can trigger is the property 'bPainZone'.
The only way here is to trigger bPainZone from false to true.
This can be done by any trigger.
When tracing the code (and checking other tutorials for zones) I see that
it connect with the property 'ZoneTag'.
No matter how I try to link triggers with zones I can only trigger the property
'bPainZone' from false to true.
Pain zones:
By setting "bPainZone" true and any value you want in "DamagePerSec" you can
either cause or heal damage.
Positive values will cause damage, while negative values will heal.
If someone dies in the zone, the shown deathmessage will be out
from damagetype.
(This will only happen if they player dies because of the damage
inflicted from being inside the zone).
With some zones you can also use "SpecialDamage" and set your own
deathmessage with "DamageString".
If you set "bNeutralZone" true a player cannot be harmed while
staying inside the zone.
This ofcourse only apply to zone specific properties.
The player do not take damage from "DamagePerSec" or from suffocation.
bWaterZone:
This property set that the entire zone should be filled with fluid.
From this point it is up to you to emulate what kind of fluid this
would be.
By using the properties for ViewFog/ViewFlash, ZoneFluidFriction and
DamagePerSec you adjust how the 'fluid' looks and feels from the inside.
For some reason entry/exit actor and sound is set even thought it says 'None'.
I am pretty sure it is possible to override with new actors and sounds if
you add them to the properties, but I have tried to remove it all without luck.
Might be able to place 'dummy' actors and sounds here to fix that.
bFogZone:
This property will allow you to see volumetric fog while inside the
zone.
This do not affect the properties ViewFog or ViewFlash,
but fog created from lightsources.
(See my light and fog tutorial for more info).
If you have multiple zones and you should be able to see fog from
other zones you need to set "bFogZone" true for all.
Volumetric light will only be shown if the zone you are inside
have "bFogZone" true, even though the fog itself is located outside
the actual zone.
Zone brightness (ViewFog/ViewFlash):
Zone brightness will set a default brightness to the screen.
This only affect the actual 'screen' and only while inside the zone.
(This is unaffected by bFogZone and cannot be seen outside the zone).
"ViewFog[]" sets the actual brightness and legal values range between 0 and 1.
What is set is the vector of RGB (X=R, Y=G and Z=B).
"ViewFlash[] counter the effects of "ViewFog[]" by softening the brightness.
Legal values range between 0 and -1.
The values used should be the opposite of the other set.
(Like ViewFog[0.2,0.2,0.2] and ViewFlash[-0.2,-0.2,-0.2]).
Normally this is used with bWaterZone to give the visual effect of underwater, lava,
slime and so on.
It can also just give the screen a default fog level if that is what you want.
Zonelight:
Zonelight is default lighting inside the zone.
This is set with the properties "AmbientBrightness", "AmbientHue" and
"AmbientSaturation" which work the same way as regular lights.
This light affects all sides / polys inside the zone.
(Even sides with special lit flag).
This is very useful if you need to light larger areas and spare the
amount of light sources you put inside the map.
A drawback is that you wash out the colors and natural shadows.
Max/Min Light Counts:
I am not really sure how or if this works but here goes.
The properties set the maximum and minimum amount of lights, inside the zone
to use if certain criteria is met.
If "MaxLightingPolyCount" is exceeded the minimum amount of lights to use is
set with "MinLightCount".
If the opposite occure, "MinLightingPolyCount" is higher than 'meshpolycount'
the amount of lights to use is "MaxLightCount".
If I understand correct, this is dynamic which means that the next frame may
be rendered different.
I think this counts towards meshes only, like players, pickups and decoration.
(I may be wrong on this one so don't hang me for it).
CloudZone:
The cloudzone will kill all objects and pawns that enter the zone.
This can be used to remove projectiles (and players) that try to
go where they can't.
An example would be in aid with a skyzone.
The walls of the playable area are fake backdrops but can still be
hit by weapon fire.
By placing cloudzones you can prevent it from hitting the walls.
KillingField:
The script for this zone is empty so it doesn't do anything.
LavaZone:
Simply a zone filled with fluid (bWaterZone).
It have default ViewFog/ViewFlash.
Damage per second is set to 40 and damage type is "Burned".
LevelInfo:
This is a special info actor that is placed automaticlly in the middle
of your map.
You open its properties by open the level properties from the menu.
This actor contain, not only regular zone info properties, but also
level related properties like music, opening screenshots and so on.
Do not add this actor yourself as it's allready done for you.
For more info on this subject, open my tutorial on level info.
NitrogenZone:
Simply a zone filled with fluid (bWaterZone).
It have default ViewFog/ViewFlash.
Damage per second is set to 20 and damage type is "Frozen".
PressureZone:
The pressure zone will stay inactive until someone triggers it.
When that happens, anybody who are inside the pressure zone will die
after the time specified with 'killtime', in seconds, have passed.

PressureZone | Specific
DieDrawScale | The size of your body (1 is normal).
DieFatness | Really don't know how to explain this.
DieFOV | Zooming of the screen (90 is no change).
EndFlashFog[] | Works the same way as the zones ViewFog[].
EndFlashScale | Don't know if this actually do anything.
KillTime | Time before you die (do not seem to work).
StartFlashFog[] | Works the same way as the zones ViewFog[].
StartFlashScale | Don't know if this actually do anything.

DieFOV is your 'Field Of View' and zoom in/out the players screen (much like the sniper rifle) when dying. Here is 90 the same as a normal screen and values below 90 will zoom the screen away, while above 90 zoom the screen inwards. FlashFog[], which works like the zone based 'ViewFog[]' is
used to alter the coloring of the screen while you are inside the zone.
It will change fram 'StartFlashFog[]' to 'EndFlashFog[]'.
DieFatness seem to squish your body down to a small ball.
You can see this if you play in third person view, but I don't know
if other players will see this.
The differance between Vacuum and Pressure zone is that pressure
zone must be triggered.
SkyZoneInfo:
The skyzone actor do not have any additional properties so it basiclly
work as a viewport/camera for any walls you have set as "FakeBackdrops".
See my skyzone tutorial for more detailed info.
SlimeZone:
Simply a zone filled with fluid (bWaterZone).
It have default ViewFog/ViewFlash.
Damage per second is set to 40 and damage type is "Corroded".
TarZone:
Simply a zone filled with fluid (bWaterZone).
It have default ViewFog/ViewFlash and a very high fluid friction.
Staying under water for too long will cause drowning.
TeleporterZone:
This zone will teleport any player that enters the zone to a destination
teleporter.
For this to work you need to associate the teleporter zone to a
source teleporter first.
This is explained in the teleporter zone tutorial.
ToggleZoneInfo:
I guess the purpose of this particular zone was to have alternate
physical attributes to one zone and able to switch between them.
This is just a guess from my side as the script is empty and
do nothing.
I quote:
"// what the hell is this? this script doesn't even compile!"
VacuumZone:
Players entering this zone will be killed unless they are able to
exit before they die.
The time it take them to die is set with "KillTime" (in seconds).
Note:
Even though the "KillTime" is located in the script and used, it seems
that no matter what value you set, players die after 2.5 seconds
anyway.

VaccumZone | Specific
DieDrawScale | The size of your body (1 is normal).
DieFOV | Zooming of the screen (90 is no change).
EndFlashFog[] | Works the same way as the zones ViewFog[].
EndFlashScale | Don't know if this actually do anything.
KillTime | Time before you die (do not seem to work).
StartFlashFog[] | Works the same way as the zones ViewFog[].
StartFlashScale | Don't know if this actually do anything.

DieFOV is your 'Field Of View' and zoom in/out the players screen (much like the sniper rifle) when dying. Here is 90 the same as a normal screen and values below 90 will zoom the screen away, while above 90 zoom the screen inwards. FlashFog[], which works like the zone based 'ViewFog[]' is
used to alter the coloring of the screen while you are inside the zone.
It will change fram 'StartFlashFog[]' to 'EndFlashFog[]'.
The differance between Vacuum and Pressure zone is that pressure
zone must be triggered.
WarpZoneInfo:
I don't know enough about warpzones and not tested it enough.
However, what I know is that it will seamless connect two zones
togheter with both teleportation and visual.
This is done by setting "OtherSideURL" to the "ThisTag" of the other
warpzone and vice versa with the other.
(Very much like a regular teleporter).
"bNoTeleFrag" can be set to prevent telefrag when using the warpzone.
When creating the warpzone it is important that the zoneportal and zonearea
have the same size or you will get some weird HOM effects.
HOM effects can happen anyway and actually creating the warpzone is delicate.
If this happens just delete the zoneportals and add new ones.
WaterZone:
Simply a zone filled with water.
It have default ViewFog/ViewFlash, entry/exit sound and actors.
Staying under water for too long will cause drowning.