Difference between revisions of "Unreal v227 Manual/New mod authoring tools"

From Oldunreal-Wiki
Jump to navigation Jump to search
Line 69: Line 69:
Other options in the mesh browsers include the '''Materials''' list, allowing you to instantly replace the textures of the static-mesh and the bFlipNormal boolean, which lets you instantly invert all the faces, so that all polygons visible from outward become visible from inward and vice-versa.
Other options in the mesh browsers include the '''Materials''' list, allowing you to instantly replace the textures of the static-mesh and the bFlipNormal boolean, which lets you instantly invert all the faces, so that all polygons visible from outward become visible from inward and vice-versa.


== New actors ==
== Jumpers (UJumpPad, UJumpPadEnd, UJumpDest) ==
=== Jumpers (UJumpPad, UJumpPadEnd, UJumpDest) ===
[[File:Jumper.png|350px|thumb|center|Correct way to set up a Jumper]]
[[File:Jumper.png|350px|thumb|center|Correct way to set up a Jumper]]
Jumpers are often the shortest way to move a player (after, maybe, a teleporter). It's an actor with a radius that throws the player in a given direction toward a given navigation point.
Jumpers are often the shortest way to move a player (after, maybe, a teleporter). It's an actor with a radius that throws the player in a given direction toward a given navigation point.
Line 96: Line 95:


Bots seem to be quite incompetent with jumpers and will rarely use them, even when correctly set up. If you are in doubt, check the jumper in UnrealEd: If everything is set up as it should, the UJumpPad should be linked to the UJumpDest by a yellow line when selected. This was added in '''227i'''.
Bots seem to be quite incompetent with jumpers and will rarely use them, even when correctly set up. If you are in doubt, check the jumper in UnrealEd: If everything is set up as it should, the UJumpPad should be linked to the UJumpDest by a yellow line when selected. This was added in '''227i'''.
== Emitter System ==
The Unreal 227 '''Particle Emitter''' (XParticleEmitter > XEmitter) system is a potent tool introduced in v227a for mappers and modders. It allows the addition of a great deal of advanced effects into both environments and actors.
{{Navbox|title=Note!|body=When creating Emitter subclasses for usage in UScript code, subclass the classes prepended with an '''X''', such as ''XMeshEmitter'' etc. For placement in maps, use classes without the X such as ''Emitter'', ''SpriteEmitter'' etc. Triggered emitters should use ''Network'' classes.|color=Red}}
The Particle Emitter classes come in various flavors: [[#Emitter|Normal]], [[#Sprite Emitter|Sprite]] (adds rotation support), [[#Mesh Emitter|Mesh]], [[#Weather Emitter|Weather]] and [[#Beam Emitter|Beam]]. Since 227f, it is also possible to combine multiple emitters into one connected system using the Combiner properties.
=== Emitter ===
This is simplest form of particle emitter with the best in-game performance which can be used for most effects.
'''EmGeneral:'''
*''bDisabled'' - Emitter is disable, no more spawning new particles.
*''bRespawnParticles'' - Respawn particles that have died.
*''bAutoDestroy'' - Auto-destroy emitter actor after all particles have died (can be used for temp effects).
*''bAutoReset'' - Auto-reset emitter after all particles have died and AutoResetTime has passed.
*''bSpawnInitParticles'' - Spawn initial particles, or else wait for possible auto-reset (only when bRespawnParticles is false).
*''MaxParticles'' - Maximum amount of particles.
*''ParticlesPerSec'' - Amount of particles to spawn per second (0 = auto assign the value).
*''LifetimeRange'' - How long time particles should live.
*''StartupDelay'' - Delay in seconds before Emitter activates (can be used for triggered emitters to delay an effect).
'''EmVisibility:'''
*''bStasisEmitter'' - Similar to Actor bStasis, but stop hide particles once player isn't seeing the emitter's zone.
*''bBoxVisibility'' - If enabled, visibility box will be used.
*''VisibilityBox'' - Only update when any parts of this box radius is within player camera sight.
*''bDistanceCulling'' - If enabled, use distance culling.
*''CullDistance'' - If player camera is beyond this distance, don't render.
*''bNoUpdateOnInvis'' - When not rendering emitter actor, do not update the particles either.
'''EmCorona''':
*''CoronaColor'' - Corona color range.
*''CoronaTexture'' - Corona texture.
*''bCheckLineOfSight'' - Should coronas disappear when behind some wall?
*''bParticleCoronaEnabled'' - Whatever if particle coronas are enabled.
*''CoronaFadeTimeScale'' - The time it will take for coronas to fade in/out when falling out of sight or back in sight.
*''CoronaMaxScale'' - Maximum corona scaling.
*''CoronaScaling'' - The scale of the coronas.
*''MaxCoronaDistance'' - Maximum distance coronas should appear in.
*''CoronaOffset'' - Offset of the coronas in the particles.
*''bCOffsetRelativeToRot'' - Whatever if corona offset should be relative to particle rotation.
'''EmRevolution''':
*''bRevolutionEnabled'' - Particle revolving should be enabled.
*''RevolutionOffset'' - Revolving offset for the particles.
*''RevolutionsPerSec'' - Revolving speed.
'''EmVisuals''':
*''ParticleTextures'' - Random/Animation sprite frames for particles.
*''bUseRandomTex'' - Should use random frame or else animate the textures.
*''ParticleStyle'' - The style of the particles.
*''StartingScale'' - Starting scale of the particles.
*''TimeScale'' - Time scaling of the particles (timescale 0-1).
*''PartSpriteForwardZ'' - The particles render forward Z (render trick).
*''ParticleColor'' - The color of the particles.
*''ParticleColorScale'' - Color time scaling.
'''EmFade:'''
*''FadeInTime'' - Fade in time scale (0-1).
*''FadeOutTime'' - Fade out start time (0-1).
*''FadeInMaxAmount'' - Max. scale glow when fully faded in (0-2).
'''EmPosition:'''
*''SpawnPosType'' - Should use Box/Sphere/Cylinder spawn offset?
*''BoxLocation'' - Box spawning offset for particles.
*''SphereCylinderRange'' - Sphere/Cylinder offset range.
*''bRelativeToRotation'' - Spawning offset should be in relative to actor rotation.
*''bUseRelativeLocation'' - All particles location/rotation/velocity should be relative to actor?
'''EmTrigger:'''
*''TriggerAction'' - Emitter actor triggering action.
*''SpawnParts'' - If spawn particles, then how many?
'''EmSpeed:'''
*''SpeedScale'' - Particles speed scale in relative time (0-1).
*''ParticleAcceleration'' - Particles acceleration range.
*''SpawnVelType'' - Whatever it should use Box/Sphere/Cylinder velocity for the particle.
*''BoxVelocity'' - Box velocity for particles.
*''SphereCylVelocity'' - Sphere/Cylinder range.
*''bVelRelativeToRotation'' - Velocity should be relative to actor rotation?
*''bCylRangeBasedOnPos'' - Sphere/Cylinder velocity range should be relative to particle spawn offset?
'''EmCollision''':
*''ParticleCollision'' - Collision type: Nothing/Walls/All Actors/Projectile target actors.
*''ParticleExtent'' - Particle collision size.
*''ParticleBounchyness'' - Bounchyness of the particles (when hitting wall/actor).
'''EmSound:'''
*''ImpactSound'' - Particle impact sound (when hitting wall/actor).
*''SpawnSound'' - Particle spawn sound.
*''DestroySound'' - Particle destroy sound.
'''EmMeshPos:'''
*''UseActorCoords'' - Use this mesh actor's vertex points positions.
*''VertexLimitBBox'' - Box limitation of which vertexes it should only emit in.
*''SingleIVert'' - Single vertex number it should emit on.
*''bUseMeshAnim'' - Whatever if it should use animated frame rather than first static frame (slower option).
'''EmCombiner:'''
*''ParticleSpawnTag'' - Combiner emitter which should spawn an own particle at newly spawned particles position.
*''SpawnCombiner'' - Instanced version of a spawn combiner emitter.
*''ParticleKillTag'' - Combiner emitter which should spawn an own particle at a newly destructed particle position.
*''KillCombiner'' - Instanced version of a kill combiner emitter.
*''ParticleWallHitTag'' - Same as above except spawn at the point where particles hit a wall.
*''WallHitCombiner'' - Instanced version of a wallhit combiner emitter.
*''ParticleLifeTimeTag'' - Same as above except spawn particles constantly at the living particles.
*''LifeTimeCombiner'' - Instanced version of a lifespan combiner emitter.
*''ParticleLifeTimeSDelay'' - The time delay how often lifespan particles should be spawned.
*''CombinedParticleCount'' - When this emitter actor is being used as combiner emitter, spawn this many particles on my combining emitter actor.
*''IdleCombiner'' - An emitter that is simply idle and doesn't interact with other emitters (useful for multi-emitter effect on trigger).
*''ParticleTrail'' - Trail that should appear for each particle.
'''EmForces:'''
*''ForcesTags'' - The tags of the emitter force actors that should be applied on our particles.
'''EmPhysX:'''
*''bEnablePhysX'' - Enable PhysX simulation for particles (Movement - PhysicsData must also be set).
=== Sprite Emitter ===
Basically the same as Emitter, but supports rotating particles.
'''EmRotation:'''
*''RotationsPerSec'' - How fast the particles should rotate.
*''InitialRot'' - The initial rotation of the particles.
*''RotNormal'' - For specific particle direction.
*''ParticleRotation'' - Type of direction the particles should have (i.e.: face the direction they are flying or face normal direction).
*''RotateByVelocityScale'' - If non-zero, RotationsPerSec is scaled by current velocity multiplied by this value.
=== Mesh Emitter ===
This emitter's particles are rendered as meshes and can even be animated.
'''EmMesh:'''
*''ParticleMesh'' - Display mesh of the particle.
*''bRenderParticles'' - Should render mesh in "bParticles".
*''bParticlesRandFrame'' - Should particles mesh use random texture animation frame.
*'''EmRotation:'''
*''ParticleRotation'' - Particles rotation type.
*''bRelativeToMoveDir'' - Particles should have rotation relative to movement direction.
*''RotationsPerSec'' - Rotation rate of particles.
*''InitialRot'' - Initial rotation of the particles.
*'''EmAnim:'''
*''bAnimateParticles'' - Particles should animate.
*''ParticleAnim'' - Particle animation sequence.
*''PartAnimRate'' - Particle animation rate.
*''bPartAnimLoop'' - Particle should loop animation.
=== Weather Emitter ===
An easy way of adding nice weather effect to your map (such as rain, snow or dust).
Note that the emitter is directional; particles move according to its rotation.
'''EmWeather:'''
*''PartTextures'' - Random texture for the particles.
*''Position'' - Spawning offset around player camera.
*''AppearArea'' - Appearance area around actor location (when AppearAreaType is Area).
*''Lifetime'' - Particle lifetime.
*''Speed'' - Particle speed.
*''Size'' - Particle size.
*''WeatherType'' - Whatever the weather type is Rain/Snow/Dust (falling type).
*''ParticleCount'' - Maximum number of particles.
*''PartStyle'' - Style of particles.
=== Beam Emitter ===
=== Trail Emitter ===
=== Particle Forces ===
These forces can be applied to in-level Emitter actors to have some special reactions at specific parts of the map (such as a vent that sucks up smoke).
'''EmForces:'''
*''KillParticleForce'' - Kills any nearby particles.
*''ParticleConcentrateForce'' - Concentrate all particles to fly toward this actor.
*''VelocityForce'' - Force particles to fly toward some specific direction.
=== Triggering an Emitter ===
To add a triggerable emitter, create and set your emitter as desired. In emGeneral, set bDisabled to TRUE, so that it is not on by default, and make sure emTrigger has TriggerAction set to ToggleDisabled. Your effect is now set on and off by the triggering of the emitter via normal triggers. If you want your emitter to be on by default, simply put bDisabled to FALSE, so that the first triggering of the emitter will set it off.
You can also make your emitter emit only once after it is triggered. Set bDisabled to TRUE, and in the emitter properties, still in emGeneral, set bRespawnParticles to FALSE, so that after emitting the number of particles specified in MaxParticles, the emitter stops emitting. I recommend setting bAutoDestroy to true afterwards, so that the actor is destroyed in the game and does not use memory - useful if you have many such triggerable effects.
=== Spawning by bursts ===
If you want all the particles to be emitted at once when the emitter goes on - at the beginning of the game by default, or when triggered if set up this way -, simple set ParticlesPerSec to a huge number greatly superior to the MaxParticles value. If you want to emit 200 particles in one huge burst, set ParticlesPerSec to something like 5000. This will insure the game spawns your 200 particles as quickly as if it had to spawn these 5000 particles in the same second. As soon as one particle is destroyed, however, another one will be spawned, which means you will have several successive bursts. If your lifetime has a wide range (for example Max = 15 and Min = 5), the second burst will be much less immediate and may take some time, as the engine waits for one particle to die to spawn another one. If you want your bursts to be evenly spaced and of the same duration, make sure the difference betweent he Min and Max values of your particles' lifetime is very small or non-existent (same Min and Max). If you set bRespawnParticles to False with this template, your entire emitter will drop its entire load of particles in one go and then be useless - remember to set it to bAutoDestroy.


== Further reading (Wiki only section) ==
== Further reading (Wiki only section) ==

Revision as of 17:33, 27 June 2022

Article stub
The following is an article stub. You can help us by expanding it.
Unreal v227 Manual
Main pageNew maps and itemsNew menu optionsVideo renderersAudio renderersServer admin toolsNew mod authoring toolsFrequently Asked Questions
Unreal v227 Manual
<- Previous Server admin tools
Next -> Frequently Asked Questions

Here we're going to take a look at the new features introduced by the v227 patch regarding mod authoring and editing.

UnrealEd 2.0

Introduction and history

UnrealEd 2.0 is the second version of UnrealEd. Unreal being the first game to use the Unreal Engine (in it's very first iteration) the included editor, UnrealEd (1.0), by the original developers' own admission, was an unsupported beta software developed in Visual Basic. The lack of certain tools prevented level-designers to achieve complex maps.

UnrealEd 2.0, originally introduced for UT99, is a rebuilt editor written in C++ later ported back to Unreal by Smirftsch in order to provide better tools for the community. Subsequent releases of patch 227, with extra involvement from the OldUnreal community, heavily improved the tools, stability and ease of use enough to deem it an almost different version: UnrealEd 2.1, similar in its looks, but significantly improved, with many bugs corrected, new functions and overall better stability.

UnrealEd 2.0 was introduced in Unreal by Patch 227f and replaced by UnrealEd 2.1 in 227h. All information on UnrealEd 2.0 works with 2.1, except for most known bugs and problems which have been fixed. UnrealEd 2 refers collectively to UnrealEd 2.0 and 2.1.

Interface

UnrealEd 2.x features a new and nicer interface

The interface was completely redesigned from UnrealEd 1.0 and is a lot more polished. First, the Browser isn't a sidebar anymore, but a set of dockable windows. When a browser is docked, it can be accessed from other docked windows without opening a new browser, keeping everything at hand. Only the main buttons have been kept on the left side, and the width of this sidebar reduced to two icons. This leaves plenty of extra space for the viewports themselves. These viewports are configurable, lockable and can be set to cover the entire screen if needed. The interface is very easy to configure and very comfortable, and was reused with almost no changes in UnrealEd 3.0 (the version that shipped with Unreal Tournament 2003 and Unreal Tournament 2004) and 4.0 (the version that shipped with Unreal Tournament 3) on later engines.

Features

Among other things, UnrealEd 2 features a Vertex Editing tool which greatly increases the possibilities for designers by allowing them to move not only one vertex at a time but as many as they want.

The 2D shape editor is no longer a buggy beta implementation and can be used to create almost any shape without problems.

One notable feature is the possibility to use OpenGL and several versions of Direct3D rendering in the 3D viewport, which means you won't get surprised by how a map looks in the game compared to what the software rendering shows, as was sometimes the case in UnrealEd 1.0. Although the D3D implementations are not fully supported and might not be fully working, especially if you're using and ATI graphic card, they can be used without a lot of troubles. From 227g onwards, the OpenGL support is fully stable and supported.

Plug-Ins

Though there is no "plug-in" as you might know, UnrealEd 2.0 and 2.1 can both be enhanced and expanded by adding new buttons, new functions, new tools. On the provided screenshot at the top of the page, you may notice purple builder brushes. These are custom builder brushes, the Tarquin tools. A lot of tools have been created over time for UT99's UnrealEd 2.0 and are completely compatible with Unreal 227's UnrealEd 2.1: Quick camera alignment, new stairs builders, round shape creator, easy Skybox, etc...

Static Meshes

Static Meshes are a new feature implemented in 227g. A Static Mesh is, basically, a mesh with a single static frame which can be used for decoration actors. In UnrealEd, they are displayed in the 2d viewports as green wireframe objects. When a Static Mesh is imported or created, it can be viewed in the Mesh Browser, where it has no animation or frame, provided the "Show StaticMeshes" bow is ticked. By default, the second option of the contextual menu when right-clicking in a viewport is the "add static-mesh here" option.

Advantages and Disadvantages over Semi-Solid Geometry

Because the Static Mesh is loaded as an actor, it needs to be loaded only once from the hard drive, and is then kept in memory, which means it is faster than an equivalent BSP object. Static Meshes are also invulnerable to BSP errors, HOMs and BSP Holes. It is not affected by BSP cuts and does not create them. They are easy to convert from format to format, can be edited in UnrealEd without problems. Other advantages are the end of U/V mapping limits which were common with Unreal Meshes (limited to one tile), the possibility to use either a simplified or a per polygon collision instead of the basic cylindrical collision radius of other meshes, and their adaptability: polygon flags can be set and adjusted in-editor from the mesh browser. They are faster to load and more efficient, as a loaded mesh stays in memory for the next time it will be needed.

Static-Meshes are great tools, but they have also several disadvantages: Lighting is calculated differently from brushes, and in the same way it is calculated for meshes, which means complex shadows will usually not affect them - though they can still cast some. They may be glitchy in software mode and clutter the 3D Viewport if you don't use OpenGl or Direct3D rendering. Some bugs may also happen when a brush's pivot is inside a wall, corrupting lighting. It may force you to manually offset the pivot.

Supported conversions

You can convert static meshes between:

  • Brush -> Static Mesh
  • Static Mesh -> Brush
  • Any meshes + Brush -> Static Mesh
  • Export (Static) Mesh as Wavefront .OBJ
  • Import Static Mesh as Wavefront .OBJ

Because Meshes and Brushes can be converted directly into each other, it is possible to create a map with all its meshes inside UnrealEd without using any third-party 3D Software such as Maya or 3Ds Max. However, when doing so, the engine will triangulate - convert all surfaces into sets of triangles - the mesh itself, and may end up with some inefficient results regarding lighting, needing reworking by the designer.

Static Meshes as Movers

Any Static-Mesh can be added as any type of mover: when right-clicking on the Add Mover button in the toolbar, all Mover types can be added as brushes or meshes, using either the Mover or the Mover [mesh] option.

Simple collision model

Static meshes support simple collision model. To create one for a static mesh you do:

  • Add a static mesh to a level and move it to origin (1 scaling, 0 location and rotation).
  • Add simple brush shapes to cover up the parts you want to collide.
  • Now make sure red builder brush is at origin with 1 scaling and intersect the whole brush collision model you created.
  • Then right click on the static mesh actor and select "Create collision model".

Now if you enable "Show skeleton" in mesh browser you should see the simple collision model on the static mesh. To make game use it you can set on static mesh properties:

  • bUseSimpleBoxCollision - Meaning box collision checks (like pawn movement) should collide with the simple collision model.
  • bUseSimpleLineCollision - Meaning the same as above but for simple trace lines (like most projectiles or AI sight checks).

Using this gives performance advantage with complex static meshes as well as prevents you from getting stuck on complex parts of the mesh.

Other options in the mesh browsers include the Materials list, allowing you to instantly replace the textures of the static-mesh and the bFlipNormal boolean, which lets you instantly invert all the faces, so that all polygons visible from outward become visible from inward and vice-versa.

Jumpers (UJumpPad, UJumpPadEnd, UJumpDest)

Correct way to set up a Jumper

Jumpers are often the shortest way to move a player (after, maybe, a teleporter). It's an actor with a radius that throws the player in a given direction toward a given navigation point.

A jumper requires three actors: UJumpPad (NavigationPoint > LiftExit > UJumpPadEnd > UJumpPad), UJumpDest (NavigationPoint > LiftCenter > UJumpDest), and UJumpPadEnd (NavigationPoint > LiftExit > UJumpPadEnd).

  • Put the UJumpPad at the center of the pad.
  • Put the UJumpDest at the point the Jumper is aiming.
  • In the UJumpPad's properties, under the "LiftExit" tab, put something in "LiftTag" property (e.g. MyJumpPad, so LiftTag=MyJumpPad).
  • Put this same name in the UJumpDest's properties, "LiftCenter" tab, in the "LiftTag" field (LiftTag=MyJumpPad).

The point where the UJumpDest is will be the highest point of the pawn's trajectory in the air. If you rebuild and test your map at this point, you will notice that the jumper is working. If you do right-click => View => Show path in the title bar of the 3D viewport, you will see that a path connects the UJumpPad and the UJumpDest. But if you add further pathnodes, the UJumpDest won't be connected to the other paths. In order to allow bots to play normally:

  • Add a UJumpPadEnd at the end of the jump, at the point where the players are supposed to land.
  • In it's properties, LiftExit => LiftTag, put the same thing as you did previously for you UJumpPad and UJumpDest (LiftTag=MyJumpPad).
  • Add other pathnodes, rebuild and test.

The UJumpPad has an "UJumpPad" tab in its properties with a few parameters you can use to fine-tune it's behavior. The most important one is "JumpSound", where you can enter a sound that will be played when a player walks on the jumper (the sound of the jump boots is perfect for that). Other parameters include:

  • bForceFullAccuracy: aims perfectly at the UJumpDest, but may modifiy the speed of the jump
  • JumpZHeightModifier: allows the mapper to modify the height of the jump: a negative value will make the trajectory less high, while a higher value will send the player higher in the sky
  • JumpVelocityModifier: allows you to modify the speed of the player in much the same way.

The Jumper will work online. Bots can use the Jumpers provided you set up a UJumpPadEnd for them. Otherwise, strange behavior may happen (as they land outside of the paths). As the Jumper is a 227 feature, it can only be used on a 227 server or on a 227 installation of Unreal. It will make your map incompatible with previous versions of Unreal.

Bots seem to be quite incompetent with jumpers and will rarely use them, even when correctly set up. If you are in doubt, check the jumper in UnrealEd: If everything is set up as it should, the UJumpPad should be linked to the UJumpDest by a yellow line when selected. This was added in 227i.

Emitter System

The Unreal 227 Particle Emitter (XParticleEmitter > XEmitter) system is a potent tool introduced in v227a for mappers and modders. It allows the addition of a great deal of advanced effects into both environments and actors.

Note!
When creating Emitter subclasses for usage in UScript code, subclass the classes prepended with an X, such as XMeshEmitter etc. For placement in maps, use classes without the X such as Emitter, SpriteEmitter etc. Triggered emitters should use Network classes.

The Particle Emitter classes come in various flavors: Normal, Sprite (adds rotation support), Mesh, Weather and Beam. Since 227f, it is also possible to combine multiple emitters into one connected system using the Combiner properties.

Emitter

This is simplest form of particle emitter with the best in-game performance which can be used for most effects.

EmGeneral:

  • bDisabled - Emitter is disable, no more spawning new particles.
  • bRespawnParticles - Respawn particles that have died.
  • bAutoDestroy - Auto-destroy emitter actor after all particles have died (can be used for temp effects).
  • bAutoReset - Auto-reset emitter after all particles have died and AutoResetTime has passed.
  • bSpawnInitParticles - Spawn initial particles, or else wait for possible auto-reset (only when bRespawnParticles is false).
  • MaxParticles - Maximum amount of particles.
  • ParticlesPerSec - Amount of particles to spawn per second (0 = auto assign the value).
  • LifetimeRange - How long time particles should live.
  • StartupDelay - Delay in seconds before Emitter activates (can be used for triggered emitters to delay an effect).

EmVisibility:

  • bStasisEmitter - Similar to Actor bStasis, but stop hide particles once player isn't seeing the emitter's zone.
  • bBoxVisibility - If enabled, visibility box will be used.
  • VisibilityBox - Only update when any parts of this box radius is within player camera sight.
  • bDistanceCulling - If enabled, use distance culling.
  • CullDistance - If player camera is beyond this distance, don't render.
  • bNoUpdateOnInvis - When not rendering emitter actor, do not update the particles either.

EmCorona:

  • CoronaColor - Corona color range.
  • CoronaTexture - Corona texture.
  • bCheckLineOfSight - Should coronas disappear when behind some wall?
  • bParticleCoronaEnabled - Whatever if particle coronas are enabled.
  • CoronaFadeTimeScale - The time it will take for coronas to fade in/out when falling out of sight or back in sight.
  • CoronaMaxScale - Maximum corona scaling.
  • CoronaScaling - The scale of the coronas.
  • MaxCoronaDistance - Maximum distance coronas should appear in.
  • CoronaOffset - Offset of the coronas in the particles.
  • bCOffsetRelativeToRot - Whatever if corona offset should be relative to particle rotation.

EmRevolution:

  • bRevolutionEnabled - Particle revolving should be enabled.
  • RevolutionOffset - Revolving offset for the particles.
  • RevolutionsPerSec - Revolving speed.

EmVisuals:

  • ParticleTextures - Random/Animation sprite frames for particles.
  • bUseRandomTex - Should use random frame or else animate the textures.
  • ParticleStyle - The style of the particles.
  • StartingScale - Starting scale of the particles.
  • TimeScale - Time scaling of the particles (timescale 0-1).
  • PartSpriteForwardZ - The particles render forward Z (render trick).
  • ParticleColor - The color of the particles.
  • ParticleColorScale - Color time scaling.

EmFade:

  • FadeInTime - Fade in time scale (0-1).
  • FadeOutTime - Fade out start time (0-1).
  • FadeInMaxAmount - Max. scale glow when fully faded in (0-2).

EmPosition:

  • SpawnPosType - Should use Box/Sphere/Cylinder spawn offset?
  • BoxLocation - Box spawning offset for particles.
  • SphereCylinderRange - Sphere/Cylinder offset range.
  • bRelativeToRotation - Spawning offset should be in relative to actor rotation.
  • bUseRelativeLocation - All particles location/rotation/velocity should be relative to actor?

EmTrigger:

  • TriggerAction - Emitter actor triggering action.
  • SpawnParts - If spawn particles, then how many?

EmSpeed:

  • SpeedScale - Particles speed scale in relative time (0-1).
  • ParticleAcceleration - Particles acceleration range.
  • SpawnVelType - Whatever it should use Box/Sphere/Cylinder velocity for the particle.
  • BoxVelocity - Box velocity for particles.
  • SphereCylVelocity - Sphere/Cylinder range.
  • bVelRelativeToRotation - Velocity should be relative to actor rotation?
  • bCylRangeBasedOnPos - Sphere/Cylinder velocity range should be relative to particle spawn offset?

EmCollision:

  • ParticleCollision - Collision type: Nothing/Walls/All Actors/Projectile target actors.
  • ParticleExtent - Particle collision size.
  • ParticleBounchyness - Bounchyness of the particles (when hitting wall/actor).

EmSound:

  • ImpactSound - Particle impact sound (when hitting wall/actor).
  • SpawnSound - Particle spawn sound.
  • DestroySound - Particle destroy sound.

EmMeshPos:

  • UseActorCoords - Use this mesh actor's vertex points positions.
  • VertexLimitBBox - Box limitation of which vertexes it should only emit in.
  • SingleIVert - Single vertex number it should emit on.
  • bUseMeshAnim - Whatever if it should use animated frame rather than first static frame (slower option).

EmCombiner:

  • ParticleSpawnTag - Combiner emitter which should spawn an own particle at newly spawned particles position.
  • SpawnCombiner - Instanced version of a spawn combiner emitter.
  • ParticleKillTag - Combiner emitter which should spawn an own particle at a newly destructed particle position.
  • KillCombiner - Instanced version of a kill combiner emitter.
  • ParticleWallHitTag - Same as above except spawn at the point where particles hit a wall.
  • WallHitCombiner - Instanced version of a wallhit combiner emitter.
  • ParticleLifeTimeTag - Same as above except spawn particles constantly at the living particles.
  • LifeTimeCombiner - Instanced version of a lifespan combiner emitter.
  • ParticleLifeTimeSDelay - The time delay how often lifespan particles should be spawned.
  • CombinedParticleCount - When this emitter actor is being used as combiner emitter, spawn this many particles on my combining emitter actor.
  • IdleCombiner - An emitter that is simply idle and doesn't interact with other emitters (useful for multi-emitter effect on trigger).
  • ParticleTrail - Trail that should appear for each particle.

EmForces:

  • ForcesTags - The tags of the emitter force actors that should be applied on our particles.

EmPhysX:

  • bEnablePhysX - Enable PhysX simulation for particles (Movement - PhysicsData must also be set).

Sprite Emitter

Basically the same as Emitter, but supports rotating particles.

EmRotation:

  • RotationsPerSec - How fast the particles should rotate.
  • InitialRot - The initial rotation of the particles.
  • RotNormal - For specific particle direction.
  • ParticleRotation - Type of direction the particles should have (i.e.: face the direction they are flying or face normal direction).
  • RotateByVelocityScale - If non-zero, RotationsPerSec is scaled by current velocity multiplied by this value.

Mesh Emitter

This emitter's particles are rendered as meshes and can even be animated.

EmMesh:

  • ParticleMesh - Display mesh of the particle.
  • bRenderParticles - Should render mesh in "bParticles".
  • bParticlesRandFrame - Should particles mesh use random texture animation frame.
  • EmRotation:
  • ParticleRotation - Particles rotation type.
  • bRelativeToMoveDir - Particles should have rotation relative to movement direction.
  • RotationsPerSec - Rotation rate of particles.
  • InitialRot - Initial rotation of the particles.
  • EmAnim:
  • bAnimateParticles - Particles should animate.
  • ParticleAnim - Particle animation sequence.
  • PartAnimRate - Particle animation rate.
  • bPartAnimLoop - Particle should loop animation.

Weather Emitter

An easy way of adding nice weather effect to your map (such as rain, snow or dust).

Note that the emitter is directional; particles move according to its rotation.

EmWeather:

  • PartTextures - Random texture for the particles.
  • Position - Spawning offset around player camera.
  • AppearArea - Appearance area around actor location (when AppearAreaType is Area).
  • Lifetime - Particle lifetime.
  • Speed - Particle speed.
  • Size - Particle size.
  • WeatherType - Whatever the weather type is Rain/Snow/Dust (falling type).
  • ParticleCount - Maximum number of particles.
  • PartStyle - Style of particles.

Beam Emitter

Trail Emitter

Particle Forces

These forces can be applied to in-level Emitter actors to have some special reactions at specific parts of the map (such as a vent that sucks up smoke).

EmForces:

  • KillParticleForce - Kills any nearby particles.
  • ParticleConcentrateForce - Concentrate all particles to fly toward this actor.
  • VelocityForce - Force particles to fly toward some specific direction.

Triggering an Emitter

To add a triggerable emitter, create and set your emitter as desired. In emGeneral, set bDisabled to TRUE, so that it is not on by default, and make sure emTrigger has TriggerAction set to ToggleDisabled. Your effect is now set on and off by the triggering of the emitter via normal triggers. If you want your emitter to be on by default, simply put bDisabled to FALSE, so that the first triggering of the emitter will set it off.

You can also make your emitter emit only once after it is triggered. Set bDisabled to TRUE, and in the emitter properties, still in emGeneral, set bRespawnParticles to FALSE, so that after emitting the number of particles specified in MaxParticles, the emitter stops emitting. I recommend setting bAutoDestroy to true afterwards, so that the actor is destroyed in the game and does not use memory - useful if you have many such triggerable effects.

Spawning by bursts

If you want all the particles to be emitted at once when the emitter goes on - at the beginning of the game by default, or when triggered if set up this way -, simple set ParticlesPerSec to a huge number greatly superior to the MaxParticles value. If you want to emit 200 particles in one huge burst, set ParticlesPerSec to something like 5000. This will insure the game spawns your 200 particles as quickly as if it had to spawn these 5000 particles in the same second. As soon as one particle is destroyed, however, another one will be spawned, which means you will have several successive bursts. If your lifetime has a wide range (for example Max = 15 and Min = 5), the second burst will be much less immediate and may take some time, as the engine waits for one particle to die to spawn another one. If you want your bursts to be evenly spaced and of the same duration, make sure the difference betweent he Min and Max values of your particles' lifetime is very small or non-existent (same Min and Max). If you set bRespawnParticles to False with this template, your entire emitter will drop its entire load of particles in one go and then be useless - remember to set it to bAutoDestroy.

Further reading (Wiki only section)

If you're looking for further information and questions about UnrealEd 2.0, you might want to check Unreal v227 Manual/Frequently Asked Questions.

A lot of articles and tutorials have been written for UnrealEd 2.0 by the very large UT99 community, but over the years, much of this content has been lost.

Unfortunately, as they moved to newer versions of the Unreal Engine, a lot of writers just dropped their UEd 2.0 tutorials. In case you need more help, explanations or advice on how to do a particular thing or how to use a tool, ask on the OldUnreal forums.