home games store arcade

Go Back   Atari Forums > All Games > Forum Archive > Unreal Archive > Unreal 2 > Modding

 
 
Thread Tools Display Modes
Old 02-19-2003, 12:43 AM   #1
Scott Dalton
 
Join Date: May 2000
Location: Centreville, VA, USA
Posts: 51
Particle Primer

While I haven't had time to write up a full tutorial for particles, I thought I'd take a moment to describe some of the basics of particle generators in Unreal 2. Particle Salamanders and Particle Radiators are powerful tools and can be used for a variety of effects and functions within the game. We've only scratched the surface of the possibilities with the effects in Unreal 2.

The particle setup within UnrealEd is all crontrolled through editing properties. We chose to put our time into functionality rather than making it pretty, so there is very little idiot proofing in the system. What this means is when you're first learning your way around - save often when working with particles. Certain actions you may take may not be compatible, so things may crash if you do something "bad".
You'll quickly learn what can be used with what, and I'll give a brief list of what can and can't be used. The system has been in place for a number of years and there are a few legacy components in there which no longer are terribly useful.

Okay, so now that I've got that disclaimer out of the way, on to making cool stuff. Once you've learned a few of the basics, you can edit existing systems to get the effects you want or whip up your own effects from scratch.

First a few basics :

Particle Salamanders - these generators emit in a cone that can be specified up to a full sphere (360 degrees).

Particle Radiators - these generators emit from the surface of a Golem mesh. They can emit randomly, linearly, or from a certain index of triangles on the mesh and can come out from the center of the triangle or a random position on the triangle.

The Unreal 2 particle system works by combining Templates (basic particle types) with Forces (things that control what the particles do). You can have any number of templates within a single system, and any number of forces affecting those templates. This allows you to stack as many parts to a system as you need within a single generator.

Templates - templates are a basic particle type. The most common are rotating particles (a sprite with a controllable rotation), textured streaks (a ribbon type of particle with a texture applied along its length), View Velocity Particles (a single quad particle that stretches depending on its velocity relative to the players view), and particle decals (a flat plane particle, often used for decals where it derives its name). There are many other types of particles, but these are the basic types used for many effects.

Forces - forces control what a particle does. Forces can be just about anything from a resize force, to gravity, friction, collision, damage, color, rotation, fade, etc. Many forces have a "phase." The phase determines how many times it moves back and forth within a particles lifespan. For example you can resize a particle to make it grow. With a phase of one it will always grow. With a phase of two it will grow until half of its life is over then begin to shrink at the same rate. A phase of three with make it grow, then shrink, then grow again, etc. Multiple forces of the same type can be applied to a template to achieve interesting effects, especially when combined with each using different phases.

Ranges - almost every variable within the particle system allows for a range. This means that when determining how something will behave, it will randomly choose a number in the range between what you supply it with. For example a particle can have a lifespan range of 1 and 5 seconds. Any variable that allows for ranges will have an A and B component. There is no Max and Min, it is simply a number between the two values, so it makes no difference which is which.


Okay - now jumping into our first particle. Go to UnrealEd and call up a level or COD (Cube Of Death - empty cube). Right click in the world and select the "add particlesalamander" option. You'll see the icon for the particle salamander appear. Right click on it and bring up its properties.

First go to ParticleSalamander tab. You'll note the Spread defaults to zero. This means that particles will fire out in a straight line from the direction the arrow is pointing. Lets make them shoot at a 30 degree arc, so change that number to 30. Now we don't have any particles yet, but you'll also notice a volume here. Volume is the number of particles spawned per second. Let's set that to 25 to start.

Now click on the ParticleGenerator Tab. You'll notice that there are forces and particletemplates. Click on the '...' to the right of ParticleTemplates. A dropdown box will appear, underwhich you can select a template type. Open the dropdown and select Rotating Particle Template. This will add a rotating particle template to your template list. Click to the left of the Rotating Particle template box. You'll see three boxes pop up Edit, Duplicate, and Delete. These may cover up the in-line editing + box, in which can you can simply slide the divider bar to the right. Now either click on the Edit button (which will bring up a seperate window) or click on the + box (which will in-line the properties into the same window.

You'll see a variety of possibilties here, but first things first, we want to supply it with a texture so we can see the sprite. Open up the texture browser, select the SpecialFX package, and go to the Glows group. Here, select flare_01.

Now click on the Rotating Particles tab and you'll see a range for the Initial Rotation. We'll want our flare to be able to start at any rotation, so we'll set A to 0 and B to 360. Now if you go to your 3D window and enable realtime mode (click on the joystick or hit P), you'll see the beginnings of our system - a glowing orb.

Particles are blinking on and off rather jarringly so far, so let's make them fade in and out. For this example let's have them rapidly fade in and slowly fade away. For this, we'll need to add some forces to our system. Click on the rotating particles name (RotatingParticleTemplate'MyLevel.ParticleSalamander0.RotatingParticleTemplate0'). You'll see a list a dropdown box appear - this allows you to add a force to this particular particle template. Drop down the box and select FadeInForce.

You'll see a window pop up. Click on the FadeInForce tab. By default, the range is set to one second. Change the range to be between .1 and .2 seconds. Close the window and go back to your 3D view in realtime. You'll see the flares are now fading in, but still blinking out. We want them to slowly fade out, so go click on the template again and this time add a fadeout force.

Let's set the range on the Fadeout Force to be between .4 and .7. Now close the window and you'll see our orb taking on more of a gentle pulsing in appearance. However, it doesn't really have quite the right look yet. Let's make it appear to be pulsing outward by having each particle start small and grow. So let's return to the templates properties and find the SpriteParticleTemplate -> Initial Size range. Let's set that to .1 and .2.

Now we'll add a resize force to make it grow. Repeat the force adding steps above, but select a resize force. Set the range to be .6 and .75 and return to the 3d view. Ah, much better outwards pulsation.

Now let's give them a bit of rotation, so go and add a RotationForce to the template (Note : unfortunately Rotation force -only- works on rotating particles. Trying to add it to other template types may cause problems). Let's go for a subtle rotation here, so set the range to 50 and -50 to make them move between 50 degrees clockwise and 50 degrees counter clockwise over a second.

Now would be a good time to save.

Okay, so we've got a basic effect going, now let's spiff it up a bit with some textured streaks. Click to the right of the ParticleTemplates tab again and bring up the drop-down box. Select the TexturedStreak template type. You'll see it appear below your rotating partilce template in the list.

Open up its properties. Textured streaks come with a default texture assigned, so for now we'll leave that. Let's instead go to its ParticleTemplate Tab (This tab is under all particle types, so what you use here can be applied elsewhere). Let's open up the InitialSpeed range and set it between 100 and 400.

Looking back at our 3D window, you'll see streaks shooting out of the system, in a 30 degree cone. Let's up the cone to 360 so we can see the streaks fly out in every direction. Better, but we can do some more to make it interesting. Let's give this textured streak some gravity. For this we can use a variety of forces such as a global accelerator (which allows for X, Y or Z acceleration) or perhaps a per-particle gravity force (which allows a range of per-particle gravity). Let's use a PerParticleGravity here. Select the TexturedStreak name to open its force drop-down box and select the PerParticleGravity Force. Let's set the range to be 700-1200 for now. Now let's give it some collision, but first we should save.

Add a GeometryCollider force to your textured streak. If your particle salamander is near a wall or floor, you'll see the streaks begin to bounce around. Geometry colliders have a lot of fun properties you can play with. You can give them a range of bounciness (Elasticity), make them stop on contact, make the bounce angle random (bDiffuse), delete the particles on contact, make the particles play a sound when they hit, make them spawn new particle templates (Impact Effects), collide with actors, or only apply the above factors at certain angles (MinIncidence).

Let's make our streaks leave a little mark every time they hit a surface, so click to the right of ImpactEffects in the geometry collider. Note - if you try to do this from within the Inline editing properties, it will crash (this is a known bug with the inline code - sorry!). So be sure to be working in a seperate window when you add this new template (do this by clicking on the force's edit button rather than the inline + box). Let's select a ParticleDecal from the list of templates so we can leave a decal behind.

Okay, for our little decals, lets select the lensflare7a1_tw128 in the glows catagory of the SpecialFX texture package. Like most particle templates, the texture goes under the SpriteParticleTemplate tab of the ParticleDecalTemplate. They're going to be a bit big to start, so let'set their size. Decals are in absolute world size, so lets make ours 3 to 4 units in size.

We want them to last longer than their default 1 second, so lets go to the ParticleTemplate section and set their InitialLifeSpan to 10-15 seconds. To make them fade out, repeat the fadeout force adding steps above, but give it a much higher time, say 9 or 10 seconds. Let's also make them grow slightly as they fade out so also give the decals a resize force of about 1.

Now our streaks are leaving little blue puddles of color behind that melt away. Let's save it before we continue. How about we make it a bit more dangerous? Let's add a particle damage force to the textured streak. We can leave it weak for now. Under the particle damage force you'll notice momentum settings. These can be used to knock around damaged characters. Note that Unreal's momentum settings tend to have to be quite high, so you'll usually have to set a number in the thousands to achieve the effect you want. You'll also notice a damagetype setting. This is used for all the various kinds of damage in the game. Let's make these guys light people on fire when they hit them - so set the damage type to be Thermal.

You may notice that the streaks some times make it outside the world and fall away, leaving decals as they go. Some times due to the physics, a particle can make it through a wall completely before it registers that it has hit the surface. In this case we simply wish to remove the particle from existance. To do this, add a VoidDestroyer force to the textured streak. This simply prevents any unnecessary overhead.

Okay, so now let's test the fruits of our labor. Save the map and fire it up. You'll see that as you touch the streaks in game they cause you to take damage as well as light on fire. You'll notice that the particles don't bounce off of you or get destroyed when they hit you. These are options you can of course change (for actor collision set bCollideActors under the GeometryCollider force, for having the particles be destroyed when they hit someone, which is good for bullets and such, set bDeleteOnContact to true under ParticleDamage's AcotrCollisionNotifier tab)...

To edit any of the existing forces on a template, you can find the forces under the ParticleTemplate -> Affecting Forces array. You can also find them under the forces list, which lists all forces for all templates, but for complex systems this can get to be a big list of forces to find the one you need in.

I've only scratched the surface of what is possible with particles here, but this should at least give you an eye into how they work. I hope to have time to do a full blown tutorial and reference of particle types, forces, and variables that can be used.


As another note - you can also globally apply forces to all current templates by adding them under the forces tab (much like you'd add a new template type). This will add the force to all current templates, but no templates added after the force was added. You can apply any existing force to all existing templates by going to the Forces Force tab and setting bIterateAll to true. Generally, the best procedure is to add forces to individual templates as you need to. This allows you the most control over the particles themselves and generally is not a performance cost.

When deleting particles, you should clean up their forces by first deleting the forces from the forces array and then deleting the template itself. This prevents forces from hanging around which are no longer effecting any templates.


More to come. This first primer was just to take you through a few of the different template and force types with no real end purpose for the system. If people have requests for some particular sort of effect, post a suggestion and I'll see what I can do to demonstrate the effects and make sample maps available.

Scott
Scott Dalton is offline  
Old 02-19-2003, 01:13 AM   #2
[HJ]-RedRaven
Guest
 
Posts: n/a
Wow.

This is exactly the sort of support the mapping community needs - cheers Scott!

/me wonders if U2Ed crashes as often as the actual game does
 
Old 02-19-2003, 05:51 AM   #3
yakkern
Kiss my Monkey
 
yakkern's Avatar
 
Join Date: Oct 2002
Location: between the Devil and the Deep Blue Sea
Posts: 2,655
Thanks for the tutorial Scott, salamanders / radiators are one aspect of editing that i found quite daunting when I first looked, Are emitters used at all in this build, i have been able to load the emitter tutorial maps from UDN and the emitters worked however I have not been able to get them working when trying to recreating the effects?

Again cheers for the info
yakkern is offline  
Old 02-19-2003, 10:08 AM   #4
saturn_v
Guest
 
Posts: n/a
yep: thanks a lot for the info, can't wait to get playing with those.
 
Old 02-19-2003, 11:24 AM   #5
JHol
Guest
 
Posts: n/a
Template Application?

Hey Scott,
Thanks for the tutorial, and it works great mostly, but I was wondering just how I go about setting the RotationForce so that it only applies to the RotatingParticleTemplate? Because every time I go through the tutorial, it seems to be trying to apply that force to <i>both</i> templates, and it crashes as soon as I try to Real-Time Preview the Salamander after adding the TexturedStreakTemplate. Please help, I'm not getting through this thing!
 
Old 02-19-2003, 01:05 PM   #6
Scott Dalton
 
Join Date: May 2000
Location: Centreville, VA, USA
Posts: 51
Emitters are not used at all in Unreal 2. We had our particle system in place a good year before emitters were even started.

As for your rotation force question, JHol, (and this applies to -all- forces) : As I mentioned in the tutorial, you can add forces in two ways. You can click on the forces array to add a global force. Or you can click on the template's name to add a force just to that template. The latter method is, in general, the better way to handle things as it gives you a lot more control over the individual particles. Forces added globally will apply to all current templates, but not templates added after the force was added (unless you go into the force and explicitly add the new template or set bIterateAll to true).

Scott
Scott Dalton is offline  
Old 09-03-2003, 04:27 PM   #7
TsN|Byte
Lost a Zen Egg...
 
TsN|Byte's Avatar
 
Join Date: Jun 2002
Posts: 205
Just bumping this into view, for those who are interested in doing som stuff with U2 XMP and want some starting information on Particles
TsN|Byte is offline  
Old 09-03-2003, 04:44 PM   #8
hillgiant
Member
 
Join Date: Aug 2003
Posts: 57
I have been having problems making my particle
Salamanders Triggerable.
I have Bon=false
and under trigger support i have
initially on=false

Other than changing the name of the Particle Salamander
to the event of my trigger, what else do I need to do
to make my Salamander Triggerable, and not constantly on?
__________________
-The Hillgiant
hillgiant is offline  
Old 09-03-2003, 05:01 PM   #9
TsN|Byte
Lost a Zen Egg...
 
TsN|Byte's Avatar
 
Join Date: Jun 2002
Posts: 205
I am just now getting into the U2 side of things (XMP Testing), but if i recall... InitiallyOn should actually be set to true... but it could be different for U2, as I am use to UT2k3 and other engines.

but in reality thats all that should have to be set.. would be tag/event
TsN|Byte is offline  
Old 09-03-2003, 05:09 PM   #10
hillgiant
Member
 
Join Date: Aug 2003
Posts: 57
Well, I am using particle salamanders, which have virtually
nothing in common with Emitters.
I am using the particle salamanders in CS_Outro as a guide,
the ones which cause explosions on the dorian gray,and
these are all set like this

under trigger support binitialy on is false
and under Particle Generator
bon is false.



So im trying to model my salamander after these explosions.
__________________
-The Hillgiant
hillgiant is offline  
Old 09-03-2003, 05:18 PM   #11
hillgiant
Member
 
Join Date: Aug 2003
Posts: 57
Woot! I figured it out, Got to love answering my own questions, hehe. Ok, here it is for anyone else who wants to make
a triggerable particle salamander.

change the parameters in
particlegenerator
bon=false

and

trigger support
initialyon=false

than (here is the part i missed)
go to object
and change the state to
triggertimed
(or trigger control,triggertoggle however you want to
trigger it, triggertimed works good for explosions)


And thx for the Primer this is a good thread

*bump
__________________
-The Hillgiant
hillgiant is offline  
Old 09-03-2003, 06:02 PM   #12
TsN|Byte
Lost a Zen Egg...
 
TsN|Byte's Avatar
 
Join Date: Jun 2002
Posts: 205
Ah yes, forgot about that part
TsN|Byte is offline  
Old 02-07-2004, 01:02 PM   #13
dandeloreon1984
Member
 
Join Date: Jan 2004
Posts: 87
Duplicating Particles....

I would like to know how I can make multiple copies of it from one map to another map, or make multiple copies in the same map.

An example involves the teleporter in the map XMP-Garden.
dandeloreon1984 is offline  
Old 02-07-2004, 03:12 PM   #14
debussy
Level Designer
 
Join Date: Nov 2003
Location: Montreal, Quebec
Posts: 52
After testing tons of parameters and finding the right effect, how to transfer or copy one particule salamander to another map ? is there no way to do this ? U2Ed seems to be unable to export particules... Should we write a specific script ? Create an actor ?

Scott, we need your help !!
debussy is offline  
Old 02-08-2004, 02:36 PM   #15
Circus
Gamer!!
 
Circus's Avatar
 
Join Date: Dec 2003
Posts: 1,097
Great tutorial for Unreal2! Unfortunatly XMP editor doesnt afford us the option to add particle salamander here in our COD via simple right clic. Particle system is available there but try to add it to your world with a simple right clic, you will see nothing. And for a novice digging a PS out of the actor class browser can be quite a challange. But this is what you must do in order to see a particle salamander in XMP! Also once you figure out where to add the texture you chose in "the sprite particle template" you still wont be able to see it in real time by just changing the volume to 25 and spread to 30! You need to set the "min volume" to 25 or something to see it in real time.

How about a nice tutorial on XMP particle salamanders because I might be wrong here but I think more people are interested in making the online multiplayer maps and not Unreal 2 SP maps!.

I think its very important to establish the differents between the XMP editor and the Unreal 2 editor as far as how they work and what you can and cannot do in XMP versus Unreal 2.

The other issue is how things work in online play versus single player or in editor playmap. Its like that Lightning manager you got in the CBP map. It may work in a single player or in the editor playmap but I dont see it or hear working in online dedicated play.
And I think there might be quite a few things in the XMP editor that might have been brought over from Unreal 2 that just dont work the same when it comes to online play.
Circus is offline  
Old 02-08-2004, 03:14 PM   #16
dandeloreon1984
Member
 
Join Date: Jan 2004
Posts: 87
I concure, there is a lot of differences, and one is how do i make my own loadable particle syste..
dandeloreon1984 is offline  
Old 02-09-2004, 01:44 PM   #17
chipV2
Community Veteran
 
Join Date: Dec 2003
Location: off kilter
Posts: 721
Quote:
Originally posted by Circus
Unfortunatly XMP editor doesnt afford us the option to add particle salamander here in our COD via simple right clic. Particle system is available there but try to add it to your world with a simple right clic, you will see nothing.
i found that although a ParticleSalamander placed from the Particles browser does not show in the editor window when first placed, it is nonetheles present in the map. i've even had them work properly (a few times) immediately after placing. however, more often than not, getting them to show & work properly takes a bit of clumsy workaround:

after placing (with a right-click) a ParticleSalamander from the browser, save the map (i usually use a different & sequential filename to insure i don't lose any previous work) and then quit the Editor. chances are this will cause a GPF, but not always. however, on re-launching XMP UEd, the placed ParticleSalamanders have always been there, visible and working.

i know that risking a GPF isn't everyone's cup'o'java, but i've yet to have a map saved this way turn out corrupted or otherwise unuseable, and it saves having to plug in all the ParticleSalamander specs. use at your own risk, though.
chipV2 is offline  
Old 02-09-2004, 11:21 PM   #18
dandeloreon1984
Member
 
Join Date: Jan 2004
Posts: 87
I cound out how to copy particles... In the u2xmp faq over here...

http://www.myunreal.com/thread.php?id=17794

Just look under the following heading.

Adding Locations
dandeloreon1984 is offline  
Old 02-10-2004, 06:04 AM   #19
chipV2
Community Veteran
 
Join Date: Dec 2003
Location: off kilter
Posts: 721
Quote:
Originally posted by dandeloreon1984
I cound out how to copy particles... In the u2xmp faq over here...

http://www.myunreal.com/thread.php?id=17794

Just look under the following heading.

Adding Locations
???
that link doesn't seem to have the info you mention. am i missing something?
chipV2 is offline  
Old 02-10-2004, 11:27 AM   #20
dandeloreon1984
Member
 
Join Date: Jan 2004
Posts: 87
You are missing something... You have to download the faq posted in this post by shifty...

it is a compressed file and the document is in word format.
dandeloreon1984 is offline  
Old 02-10-2004, 12:28 PM   #21
chipV2
Community Veteran
 
Join Date: Dec 2003
Location: off kilter
Posts: 721
either the attachment has been removed, or it has restricted access or something, 'cause i see no attachment link in any of Shifty's posts. can you post a link to the faq zipfile (or whatever the compressed archive is)?

edit:
i went to unrealed.info (German siite) and found "UED3 U2XMP NewbieFAQ" by Mr. Dalton -- if this is what you're referring to then it has no new info, just the "select Particle system in Particle browser & right-click to place" routine, already known to be a bit flaky.

Last edited by chipV2; 02-10-2004 at 02:41 PM.
chipV2 is offline  
Old 02-10-2004, 04:26 PM   #22
dandeloreon1984
Member
 
Join Date: Jan 2004
Posts: 87
This may not be much to say, but did you log in to the site... The reason i ask is because you can register and log in for free.

I reccomend reading their editing forums because they have lots of info and links.
dandeloreon1984 is offline  
 

  Atari Forums > All Games > Forum Archive > Unreal Archive > Unreal 2 > Modding

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


All times are GMT -4. The time now is 10:41 AM.



Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Copyright © 2000-2009 Atari Inc. All Rights Reserved.