| Home Page | Recent Changes | Preferences

ZoneInfo (UT)

UT :: Actor >> Info (UT) >> ZoneInfo (Package: Engine)

This actor sets properties for the zone its placed in, such as ambient lighting, gravity, location string etc. A number of subclasses hold presets for different types of environment, such as WaterZone and LavaZone.

See zoning for more on working with zones, and Actor Overview for more on actors in general.

This may seem obvious, but after adding a new ZoneInfo actor, the map geometry must be rebuilt for that actor's properties (e.g. ZoneLight) to take effect.

See Zonelight for more on this.

See ZoneInfo for the UT2003 version of this class.

Examples

This is a small map created by EntropicLqd with examples of all types of zone. Read the enclosed text file for more details.

http://wiki.beyondunreal.com/dl.php/wiki/examplemaps/dm-zoneexample.zip

Properties

Changing these properties for the LevelInfo affects all zones without a ZoneInfo actor.

ZoneInfo Group

Zone Properties

name ZoneTag
Used to link ZoneTrigger objects to the zone. The Event property of the ZoneTrigger must match the ZoneTag value for the zone to trigger (used to trigger PressureZones).
vector ZoneGravity [replicated to clients]
The gravity of a zone. It can be edited to pull objects in any direction (or not). Set it at a negative value to reverse the relevant gravity vector. Decrease the values to create a low-grav zone. Remember, a negative Z component means that the gravity pulls the player downwards. The default gravity for a zone is (0, 0, -950).
vector ZoneVelocity [replicated to clients]
The velocity of objects that enter the zone. It influences the velocity vector of players (making it increase/decrease) when they enter the zone. Can be used in combination with gravity zones for more realistic gravity effects.
float ZoneGroundFriction
The friction a player undergoes when walking/running. Decrease the value to create a slippery surface.
float ZoneFluidFriction
The friction of the fluid in the zone. Only works when there is fluid in any form (i.e. water, slime, tar etc., so bWaterZone = True)
float ZoneTerminalVelocity
This is the fastest speed an object can travel within the zone. Actors attempting to travel faster than this have their speed capped at this value. This setting can be one reason why Kickers don't always behave quite as expected.
name ZonePlayerEvent
An event that will be posted to all actors whenever an actor that has bIsPlayer = true set enters or exits the zone. As far as I can tell this event is only posted when the number of "players" within the zone increases to 1 (on entry to the zone), and decreases to 0 (on exit to the zone).
int DamagePerSec
Amount of damage a player takes while in this zone.
name DamageType
Set this to SpecialDamage if you want to use the DamageString.
localized string DamageString
int MaxCarcasses
The maximum number of dead bodies allowed within the zone. Set this is a low number in open areas to improve rendering speeds. Set it to 0 in lava zones and other instant death zones to preserve memory.
sound EntrySound
The sound to play when an actor enters the zone, e.g. Sound'UnrealShare.Generic.DSplash' for WaterZones.
sound ExitSound
The sound to play when an actor leaves the zone, e.g. Sound'UnrealShare.Generic.LavaEx' for LavaZones.
class<Actor> EntryActor
The "graphical effect" to display when an Actor enters the zone. Spawned at the point the actor enters, e.g. class'UnrealShare.WaterImpact' for WaterZones.
class<Actor> ExitActor
The "graphical effect" to display when an actor leaves the zone. Spawned at the point the actor leaves, e.g. class'UnrealShare.FlameExplosion' for LavaZones.

Zone Flags

bool bWaterZone
Zone is slightly humid (indeed somewhat damp) when set to true. Desert dry if false.
const bool bFogZone
Allowes fog in this zone.
const bool bKillZone
Zone instantly kills those who enter.
bool bNeutralZone
Players can't take damage in this zone.
bool bGravityZone
Use ZoneGravity. Setting this to False doesn't seem to have any effect. (?)
bool bPainZone
True means that players will take damage according to the damage values in this zone. This will be set to True when DamagePerSec is greater than 0 and the zone is triggered.
bool bDestructive
Destroys carcasses.
bool bNoInventory
If this is true then inventory items cannot exist within the zone (e.g. when they are dropped they are destroyed).
bool bMoveProjectiles
This zone should impart velocity to projectiles and effects.
bool bBounceVelocity
This velocity zone should bounce actors that land in it. (doesn't have any effect?)

per-Zone mesh LOD lighting control

The number of lights applied to the actor mesh is interpolated between the following properties, as a function of the MeshPolyCount for the previous frame.

byte MinLightCount
minimum number of lights to use (when MaxLightingPolyCount is exceeded)
byte MaxLightCount
maximum number of lights to use (when MeshPolyCount drops below MinLightingPolyCount)
int MinLightingPolyCount
int MaxLightingPolyCount

LocationStrings Group

localized string ZoneName
This string will appear as a player's location on team game HUDs and scoreboards. This is overridden if the player is within the radius of a LocationID.

ZoneLight Group

byte AmbientBrightness [replicated to clients]
byte AmbientHue [replicated to clients]
byte AmbientSaturation [replicated to clients]
color FogColor [replicated to clients]
float FogDistance
const Texture (UT) EnvironmentMap
float TexUPanSpeed, TexVPanSpeed [both replicated to clients]
These give the panning speed for all surfaces in the zone whose U-Pan or V-Pan Surface Flags (UT) have been set.
vector ViewFlash
Obviously only the X component of this vector has an effect for fog calculation/rendering. Further research neccessary.
vector ViewFog
Sets a tint on the player's viewport while in that zone. PressureZone changes this value, to do the reddening effect seen in DM-Pressure.
It's worth mentioning the idiosyncasies of the ViewFog property here. I think is was me (Tarquin) and Elbundee who figured it out on the JailBreak forum: the vector is treated as XYZ = RGB, with the scale going from 0 to 1.

Reverb Group

(also see Reverb)

bool bReverbZone [replicated to clients]
Whether this zone should use the reverb settings.
bool bRaytraceReverb
float SpeedOfSound
byte MasterGain
int CutoffHz
byte Delay[6]
byte Gain[6]

LensFlare Group

Texture (UT) LensFlare[12]
float LensFlareOffset[12]
float LensFlareScale[12]

Script-only

int ZonePlayerCount
Current number of players in this zone.
int NumCarcasses
Current number of Carcasses in this zone. This number is increased and decreased by the carcass classes.
LocationID LocationID
This is a reference to the first item in the linked list of LocationIDs in this zone.
SkyZoneInfo SkyZone
Optional sky zone containing this zone's sky.

Methods

Iterator Functions

ZoneActors (class<Actor> BaseClass, out Actor Actor)
Iterates through all actors in this zone.

Other Functions

LinkToSkybox ( ) [simulated]
This function is called from PreBeginPlay and initialises the link to the Sky Zone for this zone. The SkyZoneInfo object linked to is determined by the detail settings on the client machine (if there is more than one).
ActorEntered (Actor Other)
This event fires whenever an actor enters the zone. It is responsible for posting any event specified by the ZonePlayerEvent property by calling the Trigger function. The function also applies any zone physics to objects with physics of PHYS_Projectile or objects of type Effects (UT).
ActorLeaving (Actor Other)
This event fires whenever an actor leaves the zone. It is responsible for posting any event specified by the ZonePlayerEvent property by calling the UnTrigger() function.

Known Subclasses

Some of these merely differ from ZoneInfo by their default properties, for instance WaterZone. Others, such as PressureZone add new scripted behavior.

Related Topics

See NoTransloc? for more details on making a zone non-translocatable.

Comments

Might be worth mentioning that ZoneInfo has an iterator function; - Probably - not found an example of use yet, but then I've not looked.

A thought: we could do a "Types of Zone" or something page.

EntropicLqd: Isn't that already covered within the general Zones page? It might be worth linking the example map from the general zone page as well thinking about it.

Tarquin: not sure. Zones / Zoning etc is on the list of topics that need refactoring. your idea sounds good to me.

Wormbo: Is there any reason, why we should give event methods a special heading in class descriptions like this one?

EntropicLqd: I did it to be consistent with the rest of the stuff I'd already done. Although the distinction between events and functions in UnrealScript is somewhat logical in nature it is a pleasant distinction.

Mychaeel: Besides, events are customarily used for engine notifications (as opposed to "called from somewhere else in the available UnrealScript code"). I think making that distinction has its benefits.

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

Mapping Topics

Mapping Lessons

UnrealEd Interface

Questions&Answers

Scripting Topics

Scripting Lessons

Making Mods

Class Tree

Questions&Answers

Modeling Topics

Questions&Answers

Log In