DGUnreal Home

Site

Home

Map Portfolio
Mesh Portfolio

Map Awards and Reviews
Map Hosting Sites

Old News:
2007
2006
2005
2004
2003
2002
2001

LCS·AVS online Resumé

See our Readme page for information regarding installing and playing our maps, and use of our custom content.





Red Orchestra

David's Maps:

Petros coming soon

Level Design:

Information & Tutorials


Tribes:Vengeance

David's Maps:

MP-Assassinate-DGSP
MP-Mercy-DGSP
MP-Truth-DGSP


Unreal II and XMP

David's Maps:

XMP-DG_Alaska

Level Design:

Meshes
Textures


Unreal Tournament

David's Maps:

DM-DG_Dyscus
DM-DG_Illusion
DM-DG_Io
DM-DG_Octagon
DM-DG_SkyScraper
DM-DG_Vapour

Jason's Maps:

DM-DG_Haunted
DM-DG_Ruins

Level Design:

Custom Scripts
Custom Sounds
Custom Textures



The Team

David R. Green
- mapper, mesher, audio/music,
- scripter, texturizer

Jason 'FRaK' Dudley - tester
See the map Readme for other testers


Contact

You can email us at
dgunreal@lilchips.com

 

Unreal Tournament 2004 Level Design - xWeatherEffect Actor


Actor Classes - Actor - *xWeatherEffect

The xWeatherEffect actor provides your map with a fast rendering rain and snow particle effect.  The xWeatherEffect is basically an emitter that generates particles in a cube area that follows around the player regardless of his map location.


Adding the Actor

Select the *xWeatherEffect actor in the Actor Classes browser, go to your map [T]op view and right-click at the map center or origin, and choose "Add xWeatherEffect here" from the popup menu.

The inserted actor looks like a dragon head:

xWeatherEffect

Make sure that the editor's grid settings are at least 16 or smaller, otherwise the actor may not place in the map or it may place in an odd location.

I recommend setting the actor's Advanced.bEdShouldSnap property to True so that if you change its location it snaps to the grid, and set the Advanced.bLockLocation property to True after it has been inserted so that it cannot be accidentally moved around the editor.
I normally place either the main world ZoneInfo or TerrainInfo at origin location 0:0:0, so I normally move the xWeatherEffect and other global actors slightly offset such as Location 64:64:0.  This can be set precisely in the actor's Movement.Location.X/Y/Z properties.


Notes

The xWeatherEffect and any anti-weather Volumes, if you are using them, should normally be inserted as the final objects in a map.  While you can insert them at any time during map development, the xWeatherEffect and especially the anti-weather Volumes may stop working after adding a large amount of additional CSG brushes and Actor objects and performing multiple Builds and Build Alls.
If the xWeatherEffect itself stops working, the best recourse is to delete the actor, do a Rebuild All, save the map, exit the editor, re-run the editor, open the map, and re-insert the xWeatherEffect actor and re-set up its properties.

The xWeatherEffect actor will also usually appear as an icon in the center of your UnrealEd Dynamic Light viewport, that rotates as you move the camera around.

Sometimes the actor will not show up in the Dynamic Light viewport, but can be found in the [Top], [F]ront and [S]ide Viewports.

The xWeatherEffect emitter effect can be previewed in the Dynamic Light viewport using Realtime Preview (P) on the Dynamic Light viewport toolbar.

Real-time Preview


Anti-weather Volumes: Preventing Weather Indoors

To prevent the weather from occuring indoors, place a standard Volume as required within buildings or rooms and set the xWeatherEffect.Events.Tag and relevant Volume.Events.Tag to the same value.  The text for the Tags can be anything such as "NoRain", "NoRainHere", "NoSnow", BlockWeather", "AntiWeather" or whatever you prefer so long as the text is unique.

xWeatherEffect Properties  Volume Properties

To place a Volume, move the red Builder Brush to the location in question, set its shape to a Cube or Cylinder that totally encompasses the building or room where the xWeatherEffect is to be blocked, then right-click on the Volume Tool and choose the Volume item on the popup menu.

Volume tool


Note that the xWeatherEffect anti-weather function is a bit flakey.  Sometimes simply rebuilding the map will cause this to stop working, and the xWeather will again appear when the player is within the Volume area.

Fixing it may require re-entering the Tag texts as different text values, doing a cut/paste of the xWeatherEffect actor, changing the Volume order to Last (right-click, Order, To Last), resizing the Volume slightly larger or smaller using Vertex-Editing, or simply deleting and re-creating the Volume.

Note that if you delete and re-insert the xWeatherEffect actor, or delete and re-create any anti-weather Volumes, you should always do it in this order: delete actor or Volume, Rebuild All, save the map, exit UnrealEd, restart UnrealEd, open the map, re-insert the actor or re-create the Volume.

Also note that in many instances if you change the xWeatherEffect.spawnVelX/Y to anything other than the default values of 0, you may cause the weather to occur within your anti-weather Volumes (indoors).


Snow and Dust guidelines

Snow and Dust typically have a longer lifespan than Rain because they fall at a slower speed.  This has the typical side-effect of the player starting to out-run any "new" visible falling particles in front of him.  As each particle falls, no new particle is spawned in front of the player until the previous ones reach the end of their Life value.

The only ways to compensate are:

- Increase Speed and decrease Life, to decrease the individual particle lifespan and allow for new particles to be available for rendering in front of the player.

- Increase the emitter Position values (emitter cube area) to somewhere between ±4096 and ±8192.  This will normally require an increase in numParticles to prevent thinning of the effect,  and a change to the maxPclEyeDist property.

- Increase the total particles to 2048 or higher.  Watch for framerate hits with this.

- Keep the maxPclEyeDist at about 60% of the total cube diameter (eg: XY Min/Max of ±8192 = 16384 cube diameter, so 60% = ~9216).

If you are trying to get a blizzard, watch out for framerate impact.
If you set the map Distance Fog really thick, that will help lend to the visual effect of thick Snow or Dust, requiring less from the xWeatherEffect particles.  End values between 8192 and 10240 are fine, such as DistanceFogStart=1 and DistanceFogEnd=9500.

See VCTF-DG-Arctika (snow), CTF-DG-PineRidge (rain), ONS-DG-FalloutIsland (dust) and ONS-ArcticStronghold (snow).


Properties

Display
Skins.[0] Displayed particle texture.
Default = None

This should be a DXT3 or DXT5 Alpha Texture.
The UT2004 EmitterTextures package has good textures to use such as RainFB.
xWeatherEffect
deviation Particle motion deviation (range is 0.0 to 1.0).
Default = 0.4.

0.0 is no particle rotation, 1.0 is maximum particle rotation.
Most effective for adjusting WT_Snow falling style (default is 0.4, try 0.2 through 0.8 for variation).
EyeSizeClamp unknown...
Default: Max=0.0 Min=0.0.
Life How long each particle will live in seconds.
Default: Max=4.0 Min=3.0.

If too short, the particles won't hit the ground.  If too long, processing is wasted as particles fall below the world, and the weather effect may look "thinner" as it will take more time before particles are recycled in front of the player.

The best way to adjust this value is in UnrealEd by looking below the terrain and seeing how far the particles are falling below you, if they are falling for a long time below the terrain, that portion of life is wasted and will thin out the effect.
maxPclEyeDist I haven't looked at the scripts/code, but I believe this has to do with distance from player camera/controller that the particles appear (particle rendering fade distance?).
Default = 590.0.

Values below the default 590 will pull the particles up to your face, values above the 590 will cause the particles to bias towards the player camera frustum depending on the cube size.
Normally this is set to about 60% of the cube diameter specified in the xWeatherEffect.Position property.
numCols and .numRows Number of columns/rows in the source texture.
Default: Max=4.0 Min=4.0.
numParticles Number of emitted particles.
Default = 1024.

When particles reach the Life value they are recycled.
A typical game computer can render up to between 1024 and 4096 particles with only a few frames-per-second hit.
Position Size of the cube in Unreal Units that surrounds the player where emitted particles occur.
Default: XMax=300.0 XMin=-300.0, YMax=300.0 YMin=-300.0, ZMax=300.0 ZMin=-100.0.

X and Y are the cube length and width, Z is the cube height.
The X and Y values are normally identical, eg: X.Min = -2048, X.Max = 2048, Y.Min = -2048, Y.Max = 2048.
Z.Max can be the same as X/Y.Max but usually is fine around 384 to 512.  Z.Min should only be around -100 to -256 as there is no reason to spawn particles far below the player. Typical XY values will be about ±512 through ±768 for most weather.  Dust and Snow may require XY values up to ±4096 or more.
Size Size of the particles.
Default: Max=5.0 Min=4.0.

In other words this determines how large the particles are, such as small or large snow flakes.
spawnVel Velocity/direction that the particles are spawned at.
Default: X=0.0 Y=0.0 Z=-1.0.

XY are normally 0:0, but you can put positive or negative values here to angle the particle falling direction as desired.  Note that non-0 XY values can sometimes result in the weather entering into non-weather Volumes.
Z should be a negative value so that the particles fall downwards.
Speed Speed the particles move at.

Default: Max=200.0 Min=100.0.
If this is too fast the particles will not be visible.
WeatherType Simulates the weather type, Rain, Snow, or Dust.

This determines the behaviour of how the particles fall (spin, rotation, etc.).



Example preset for Rain

Display.Skins.[0] FinalBlend'EmitterTextures.MultiFrame.RainFB'
xWeatherEffect.deviation default (0.4)
xWeatherEffect.EyeSizeClamp default (Max = 0.0)
default (Min = 0.0)
xWeatherEffect.Life default (Max = 4.0)
default (Min = 3.0)
xWeatherEffect.maxPclEyeDist default (590.0)
xWeatherEffect.numCols 2.0
xWeatherEffect.numParticles default (1024)
xWeatherEffect.numRows 2.0
xWeatherEffect.Position X Max = 1024.0
X Min = -1024.0
Y Max = 1024.0
Y Min = -1024.0
Z Max = default (300.0)
Z Min = default (-100.0)
xWeatherEffect.Size default (5.0)
default (4.0)
xWeatherEffect.spawnVel X = default (0.0)
Y = default (0.0)
Z = default (-1.0)
xWeatherEffect.Speed Max = 3000.0
Min = 2000.0
xWeatherEffect.WeatherType WT_Rain



Example preset for Snow

Display.Skins.[0] FinalBlend'EmitterTextures.MultiFrame.SnowFB'
xWeatherEffect.deviation default (0.4)
xWeatherEffect.EyeSizeClamp default (Max = 0.0)
default (Min = 0.0)
xWeatherEffect.Life default (Max = 4.0)
default (Min = 3.0)
xWeatherEffect.maxPclEyeDist default (590.0)
xWeatherEffect.numCols default (4.0)
xWeatherEffect.numParticles default (1024)
xWeatherEffect.numRows default (4.0)
xWeatherEffect.Position X Max = 2048.0
X Min = -2048.0
Y Max = 2048.0
Y Min = -2048.0
Z Max = default (300.0)
Z Min = default (-100.0)
xWeatherEffect.Size Max = 3.0
Min = 2.0
xWeatherEffect.spawnVel X = default (0.0)
Y = default (0.0)
Z = default (-1.0)
xWeatherEffect.Speed Max = default (200.0)
Min = default (100.0)
xWeatherEffect.WeatherType WT_Snow



Example preset for Dust

Create a FinalBlend for the dust particles with the following properties:

- Package = myLevel
- Group = Particles
- Name = RockFB

- FrameBufferBlending = FB_Translucent
- ZWrite = False
- ZTest = True
- AlphaTest = False
- TwoSided = False
- AlphaRef = 0
- Material = Texture'EmitterTextures.MultiFrame.rockchunks02'
- FallbackMaterial = Texture'EmitterTextures.MultiFrame.rockchunks02'
- SurfaceType = EST_Dirt

Display.Skins.[0] FinalBlend'myLevel.Particles.RockFB'
xWeatherEffect.deviation default (0.4)
xWeatherEffect.EyeSizeClamp default (Max = 0.0)
default (Min = 0.0)
xWeatherEffect.Life default (Max = 4.0)
default (Min = 3.0)
xWeatherEffect.maxPclEyeDist default (590.0)
xWeatherEffect.numCols default (4.0)
xWeatherEffect.numParticles 512
xWeatherEffect.numRows default (4.0)
xWeatherEffect.Position X Max = 2048.0
X Min = -2048.0
Y Max = 2048.0
Y Min = -2048.0
Z Max = default (300.0)
Z Min = default (-100.0)
xWeatherEffect.Size Max = 6.0
Min = 3.0
xWeatherEffect.spawnVel X = default (0.0)
Y = default (0.0)
Z = default (-1.0)
xWeatherEffect.Speed Max = 100.0
Min = 50.0
xWeatherEffect.WeatherType WT_Dust





0703.30 · 2026 page accesses · Copyright ©2008 David R. Green · All Rights Reserved.