This is copyright to Michael "Bot_40" Rippon blah blah blah. You know the drill :)

How to use:

In actor browser, file -> load ParticleSystem_42
Place Effects -> ParticleSystem_42 somewhere in your map.
Set the properties:

ParticleProperties - Modulated = Should the particle texture be modulated instead of transparent (normally false)

ParticleProperties - ParticleDrawScale = Pretty obvious. What sort of value you need will depend on what size texture you are using!

ParticleProperties - ParticleDrawVarience = How much the drawscale will change from particle to particle. Draw scale can alter by +- this value

ParticleProperties - ScaleGlow = Again, obvious. For smoke you might want something as low as 0.1-0.4 or for something like sparks or fire you probably want it set to 1

ParticleProperties - ParticleTextures = Set up to 6 different textures for the particles. One will be chosen at random for each particle that is spawned. Remember to set a texture for every single slot (even if that means using a texture more than once) otherwise a particle might end up with no texture and be invisible

ParticleProperties - ParticleType = The class of the particle. For most cases you want to leave this alone. However, if you want to use an animated texture (with actual different frames. NOT a water/fire texture) then you need to change this value to Effects -> Particle_42 -> AnimatedSprite using the actor browser otherwise the particles will flicker horribly. Animated textures won't animate (broken for some reason) but you can still use their first frame. Just remeber to change this value so that they don't flicker.

Now the fun stuff :)

ParticlePhysics - bInitiallyActive = Is the particle system on at the start of the match?

ParticlePhysics - EffectArea = The area over which the particles will be spawned. If you set a value of 10 for the x value for example, particles can be spawned up to 16 units away from the particle system actor in EITHER THE + OR - direction. This means if you set values for all of X Y and Z then the particles will be spawned somewhere in an imaginary box surrounding the particle system (not a sphere)

ParticlePhysics - InitialAcceleration = How fast the particles accelerate. For smoke you might want something like 5 or 10 (in the z direction). If you can avoid it, leave all values on 0 because that will save some fps. It's not a major thing, if it makes your particle system look a lot nicer with acceleration then that's ok.

ParticlePhysics - InitialVelocity = How fast the particles move when they are spawned. Again, seperate X Y and Z values.

ParticlePhysics - InitialVelocityRandomizer = Particles will be given a velocity equal to the InitialVelocity +- this value. Good to put something here so that the particles don't all come off at the same speed so it looks more natural. Perhaps set values of around about 5% of the InitialVelocity values.

ParticlePhysics - Numparticles = Number of particles to be spawned every "SpawnTime". Most things will need a value of 1 and a fast "SpawnTime", but it might be possible to save some fps by increasing the NumParticles and decreasing the "SpawnTime" so the particle system waits longer between spawning particles, but spawns them in batches instead of 1 at a time.

ParticlePhysics - ParticleLifeSpan = IMPORTANT! How long the particles exist before they disappear. If you don't set a value then they will go on forever until they hit a surface (would be ok for a rain system or similar) but for things like smoke you want to set a value as low as possible without it looking bad to minimise the strain on the system. For smoke a value or 1 or 2 seconds is usually ok, but sometimes more if it's really slow smoke. If you had some sparks though, you might want a much lower value so they are only there for a short time.

ParticlePhysics - SpawnTime = How long to wait between each particle being spawned. The lower the value, the faster particles will be spawned and the more particles you will have at any one time. This is the thing that affects the fps the most, try to keep it as high as possible without the particle system looking ghey.

ParticlePhysics - SpawnTimeRandomizer = Randomizes the particle spawn delay as much as you want (will be +- this value). I haven't actually tried this setting yet :x but it should work! If you have a particle system with a very low spawn time (eg 0.1-0.3) then using this might affect fps quite a bit. When you do want to use it is if you have a really slow particle system, in which case setting a value here might allow you to slow it down even more, but stop it looking too uniform since particles won't then be created at a uniform rate.

ParticlePhysics - TerminalVelocity = Won't be needed if you didn't set any value for acceleration, it will be completely ignored. Otherwise, this is the maximum speed the particles will go before they stop accelerating. So for something like rain, you might want to set a relatively low terminal velocity, so they accelerate, reach a certain speed, then fall at a constant speed.



Tips:

For smoke, it's better to have a high drawscale and a low scale glow. When the particles get destroyed you get a much smoother transition.
Try to keep particle systems at a distance from the player. They hurt the fps more the closer you get. If you stand right next to a particle system so it fills the entire sceen it can take 20-30 times longer to draw than if you were standing 256 units away. So don't have massive ammounts of foggy smoke that the player can walk through otherwise it will bring the game to a crawl.
I included 1-2 particle textures in Particle_40.utx which I took from Deus-Ex :p which you can try and use if you want. Not sure where the rain texture came from.
I chose to have particle systems always set to trigger toggle since that lets you turn it on and off whenever you want. If you want to have a particle system fire up for a certain time, then you can do that easilly with a dispatcher, triggering the particle system twice with a delay in the middle. Once to turn it on, once to turn it off.
