TimelineFX is an application developed by RigzSoft that will help you create a miriad of particle effects that you can either use dynamically within Blitmax nd Monkey, or export to spritesheets for use in just about anything. Visit www.rigzsoft.co.uk for more information, join the community and download effects libraries and shapes for all your particle needs.
Special thanks goes to Bruce Henderson (Brucey) for his amazing array of Blitzmax Modules, Garritt Grandberg (gman) for the zipengine module, Manel Ibanez (Ziggy) for an amazing IDE and Mark Sibly creator of Blitzmax, the language used to make TimelineFX.
To start with, just load an effects library and play about with some of the effects. Timeline particles comes with a few libraries to get you started and show off some of the capabilities of the particle engine and editor.
Begin by going to the file menu and selecting Open Library. Within the installation folder of TimelineFX you will find a Library called "ExampleEffects"
The library then loads in the editor, so you should now see the list of effects in the list box. Click on any effect and it will begin to play in the preview window. To restart an effect, double click in the preview window. Try clicking and dragging the effects about.
You can take a look at how each effect is controlled by double clicking on the effect in the treeview to open up and see the emitters that it's comprised of. You can also click on the attributes of each effect and emitter to see the shape of each graph and how it controls the behaviour of each particle over time. Let's take a look at the effect called simple explosion. Double click on the effect in the treeview to show the emitters it uses.
As you can see it has 2 emitters - Blast and Fire. If you click on each emitter then only that emitter will be played in the preview window. This is useful to isolate emitters so you can work on them more easily. By doing this you should see that the blast emitter emits a single particle that looks like a blast wave, and the Fire emitter emits a number of smokey particle shapes to look like fire. Lets look in detail at the Blast emitter first
Make sure the Blast emitter is selected and then click on the Particle tab. On the Particle tab you can see the shape that the particle uses to make it look like a blast wave and its colour is set to white for the duration of its lifetime. The most important setting for this particular emitter is that it is a Single particle and it is One Shot. This means that only one particle will be emitted and that it will play out its life just once. Its handle is set to the centre so that it emits properly to encompass the explosion. The angle settings are unimportant for this emitter as the shape is such that it will look the same at any angle.
Looking at what the blast wave does, it simply grows in size and fades out over time. To do this 3 of the attributes were used: Size, Size Overtime and Alpha Overtime. Click on the Size attribute in the Attribute list and make sure the Graph tab is selected (it should do this automatically when you click on any attribute). You can see that the graph has one node and that it is set to a size of 850; this is the base size that is scaled using the Size Overtime attribute. Select the Size Overtime attribute and look at the graph. You can see that it has 2 nodes, one at 0 at the beginning of the particle's life and the other set to 1 at the end of the particle's life. So this means that over the life time of the particle its base size is scaled from 0 to 1 making it slowly grow in size. You will see something similar on the Alpha Overtime attribute. On that attribute there are also 2 nodes but this time the first node at the beginning of the particle's life is set to one, and the other at the end of the particle's life is set to 0. This means that over the particle's lifetime the visibility of the particle will slowly decrease from 1 (opaque) to 0 (transparent) making it slowly fade out.
Try swapping them round so that the first node is set to 0 and the second to 1. You will see that rather then fade out, the particle will fade in and abruptly dissapear when the particle dies.
Next let's take a look at the Emitter called Fire. Select it in the effect library list and take a look at the Particle tab. This time you can see that the particle looks like a smoke cloud. Looking at the colour overtime we can see that it changes a lot more over time then the Blast emitter. It starts off white, then changes into orange, then to grey to give it a smokey look at the end. The particles are set to additive to make them a lot more vibrant and the angle settings are set to random with a range of 360 degrees so that the fire particles will spawn at random angles. It's also worth noting that the "Use effect Emission Settings" is checked; more on that in a moment.
Next we can take a look at the attributes this emitter uses. Similar to the blast wave, it also increases in size over time with the exception that if you look at the Size Overtime attribute you will see that it scales up to its base size very quickly - it starts of at 0 and at about 15% of the particle life it's already at full size. Select Velocity and you will see one node set to about 180, so the particle can move should the Velocity Overtime attribute allow it. Click on the Velocity Overtime attribute to see how that base velocity is scaled. You will see that it starts at a value of 1, meaning it will be moving at its full base speed (180 pixels per second), but quickly decreases to 0 within half of the particle's lifetime. This, combined with the size over time, gives a dramatic size and movement away from the centre, just like an explosion. Looking at the Alpha attribute you will see that just like the Blast emitter, it also fades out over time. Finally, the last attribute utilised by this effect is Amount. Click on the amount attribute and you can see that the graph has 2 nodes; the first is set to 500, which quickly reduces to 0 within half a second. This allows the effect to quickly emit a number of Fire particles but only for a limited time so that we don't get a continuous stream of fire.
So how do the particles know which direction to move in? That brings us on to looking at the effect settings.
We mentioned before that the "Use Effect Emission Setting" was ticked. This means that the Effect Attributes control the direction that the particles initially travel in. Select the Simple Explosion effect in the Library list, and click on the attribute called Effect Emission Range. On the graph you will see 1 node set to 180. This means that the particle can travel anywhere from -180 to 180 degrees in direction either side of the emission angle, so a full 360 degrees is possible. Try changing the node to 0 on the graph; you will see that now the Fire emitter travels only in 1 direction, making a fat column of fire. If you also change the velocity to a much higher value, this column of fire will become even more obvious.
And finally lets take a quick look at the Effect tab. Click on the Effect tab and take a look at the settings. You will see that this effect is a "Point" effect, so all particles will be emitted from a single point. The other settings are mostly greyed out, as they don't apply to point emitters, but we can take a look at those in more detail later on. Each setting is also covered in "Effect Properties".
Try selecting other effects and just get stuck in. Try playing around with the different settings and learning how the different attributes can change the look of the effect.
The toolbar for various shortcut buttons including loading, saving, copying and pasting.
Each effect contained within the currently loaded library is listed here as a hierarchy
This list represents different attributes that an effect or emitter can have. Each attribute represents a graph where the attribute can be controlled over time.
The preview area is where you can see how the effect looks, and is updated in realtime as you change the particle effect settings and attributes.
The status bar keeps you up to date with a few bits of information such as the current effect being edited and the number of particles currently in use.
The graph is the main tool where you can describe how the particles in an effect behave over time. The x-axis of the graph will either represent the amount of seconds passed since the effect started or the percentage of time of the particle's life in the case of "Overtime Attributes" (see particle attributes). The y-axis represents the value of whichever attribute you have selected in the attributes list, for example, amount or velocity.
Graphs consist of nodes indicated by red squares and are joined by lines, so in essence it is a line graph. The lines and nodes show you exactly what value that particluar attribute will have at that time.Effects in Timeline Particles consist of emitters contained within an effect
In the example here, the name of the effect is "Simple Explosion" which contains 2 emitters, "Blast" and "Fire". You can have as many emitters for each effect as you want. In this section we will go over each element of an effect and how it controls the outcome of the effect.
For more information on the properties of effects see Effect Properties, Particle Properties, Effect Attributes and Particle Attributes
On the effect properties tab you can adjust various settings to control the effect.
This value determines the effect length before it loops back round to the start. The value is shown in milliseconds (1 second = 1000 milliseconds). Setting this value to 0 will mean the effect does not loop and will continue ad infinitum.
A range of settings exist on the particle tab that allows you to define a number of aspects about how the particle looks and behaves.
The shapes tab shows an icon list with all of the currently loaded shapes in the library. To load more shapes you can select Import Shape, or Import Animation from the file menu.
Right clicking will show a pop-up menu with the following options:
The history tab shows you a list of the all the changes you have made to an effect. To revert back to a previous version of an effect, simply click the history item in the list. The effect you are working on will be replaced with the version in the history. You can also go backwards and forwards in changes by using the edit menu and selecting Undo or Redo respectively.
There is also a pop up menu accessible by right-clicking a history item.
It's possible in Timeline Particles to record animations of the effects you create and save them to disk to access in other programs.
To access the Animation properties of an effect, right click the effect and select Animation Properties from the pop-up menu, or just select an effect and select animation properties from the edit menu. Doing so shows the following animation dialog window.
The animation dialogue has a number of options to fine tune how your animation will be rendered. For animations that are larger then the dialogue window use the scroll bars and zoom slider (directly below the preview) to view the animation properly.
To view each frame in the animation, simply use the slider or just type in the frame you wish to view in the text field to the right hand side of the slider.
The properties box contains the controls you'll need to adjust the animation to your requirements.
Frames
Use this field to adjust the number of frames you need the animation to have. The maximum number of frames you can have is 1024.
Width and Height
Use the width and height to adjust the size of each frame of animation. If you plan your animation to be used in computer games then it's good practice to ensure that you keep each dimension in powers of 2, i.e., 2, 4, 8, 16, 32, 64, 128, 256 and 512. The maximum size is 8192 for either width or height. Width and height are also independant, so you can have a 128 x 512-sized animation, for example. Next to the width and height box you'll find 2 buttons "-" and "+" which will half and double the size of the animation frame respectively.
X and Y
Use these fields to offset the location of the particle effect. You can also click and drag the effect around the preview box using the mouse to move it.
Seed
If an effect uses emitters that utilise variation attributes (see particle attributes) then seed will set the random seed number that the computer will use to generate the variations. This ensures that when you update the effect, the animation will look the same because a new set of random variations have not been chosen. You can change this number to generate a new variation of the effect. If you change the seed value then you will need to click update to see the changes.
Seamless
You can make an animation seamless so that it can be tiled for use in texturing and backgrounds. Simply check the Seamless check box and click update. The animation will then wrap particles on the edge of the animation to the opposite side of each frame making the animation seamless. If you make any changes to the properties of the effect you will need to click on the Update button again to make the animation seamless before exporting as an animation.
Loop Animation
It's possible to create seamlessly looped animations in Timeline Particles. To do this, make sure the Loop Animation tick box is checked. Making changes to this requires that you click update to see the changes. For best results make sure that the Frame Offset is set to 0.
Zoom
Use the zoom to scale the effect. This can be useful to ensure that the effect fits within the animation area. To zoom, either use the slider or type in the zoom amount in the text field for more precise values.
Frame Offset
You can use Frame Offset to change the frame that the animation starts from. Using frame offset can have adverse effects on looped animations. Once you change frame offset, click Update to apply the changes.
Auto Fit
To save you having to mess about with the zoom slider to try and fit the effect into the animation frame, just click auto fit and the effect will automatically be sized to fit into the animation frame size. Note that this option is not available when creating a seamless texture animation.
Play and Pause
Use these buttons to simply start and stop the animation to see it running.
Record
Once you are happy with the animation click the record button to save it to disk. Once you click it you will see the following dialogue box with some options:
From the drop down box you can select how you would like the colours to export. There are 5 different ways to process the colours when exporting an animation:
Full colour
This will simply export the animation as you see it in the editor with full colour.
Grey Scale
Selecting this option will convert the animation to grey scale colours. This is handy if you wish to tint the animation with different colours later on when using it as either an animated particle, or in Blitmax.
1 Colour
This option will convert all colour information in the animation to white. This will create a more vibrant animation then the grey scale option.
1 Colour Alpha
This uses the grey scale version of the animation as an alpha channel, then converts all colour information to white - the same as the 1 Colour option does.
Grey Scale Alpha
Again, this option uses the grey scale version of the animation as an alpha channel but this time exports all colours converted to grey scale.
The second drop down menu enables you to choose the following options:
Save as Sprite Sheet
This will arrange the animation onto a sprite sheet where the animation is organised into columns and rows. The overall width and height of the sprite sheet will be kept in powers of 2 as long as individual frames are powers of 2.
Save as strip
Saving as a strip will save the animation as one long strip keeping all the frames of animation on 1 row.
Save frames separately
If this option is selected then the each frame will be saved as an individual file with the format filename0001.png, filename0002.png... and so on.
To save with transparency make sure the transparency tick box is checked.
Border
If you need your animation to have a border of clear pixels round the edge of each frame then you can use this field to enter the size in pixels of the border.
Frame Step
Using frame step will force the recorder to only record every nth frame. This can be handy if you need to shorten the number of frames saved in a long animation.
Once you have prepared your save options, clicking OK will then present you with the save dialogue where you can either save as a .png file or save as a .tpa file. A .tpa file is exactly the same as a .png file except that information about the size of each frame and the number of frames is saved with the file so that you don't have to remember them when importing them into the editor.
Attributes represent different aspects of an effect that affect how the effect changes over time. Attributes can either change how a partical behaves over its lifetime, or they can define values each time a particle is created. For example, a particle can spawn with a base speed of 400, but the percentage of the speed that the particle will travel at will be defined by the velocity over time attribute.
Effects and Particles have their own sets of attributes. Effect attributes can affect all of the particles that the effect contains by scaling up or down the particle's attributes. Read the following 2 sections to find out exactly how attributes can change the behaviour of the effects you create.
Effect Angle
Controls the angle of the effect over the life time of the effect. Particles that are set to Relative will rotate according to the effect, otherwise they will only take into account the effect angle when they spawn.
Area Height and Area Width
If the effect is of an area or ellipse type then these attributes define their sizes. If the effect is a line then these attributes are replaced with line length. New particles that are created will only spawn within the area defined here.
Effect Emission Range
This specifies the range of direction that particles will spawn and travel. Each degree on the graph represents both sides of the emission angle. So for example if you set it to 10 degrees that means 10 degrees to the left and 10 degrees to the right of the emission angle equally, i.e., a total arc of 20 degrees. So setting an emission range of 180 degrees will mean particles travel 360 degrees randomly around the emission angle.
Emission Angle
Emission angle determines the direction particles will travel initially when they spawn.
Global Alpha
Alpha affects the visibility of all particles within the effect. Global alpha is a scaling factor, so a value of 1 will not affect any of the individual alpha values of particles. A global alpha value of 0.5 will halve the value of all particle alpha values. For example if global alpha is 0.5 and a particle's alpha is 1 then the particle's alpha will be reduced to 0.5 (0.5*1=0.5). Note that this attribute will instantly affect all particles within the effect.
Global Spin
Global spin scales each particle's spin attribute within the effect, thus controlling how fast the particle spins. Note that this attribute will instantly affect all particles within the effect.
Global Weight
This scales each particle's baseweigth attribute within the effect, thus controlling how much the particle is affected by gravity. Note that this attribute only affects the base weight of the particle; therefore only affecting newly spawned particles. It does not affect the particles over their lifetimes.
Global Velocity
This scales each particle's basespeed attribute within the effect, thus controlling how fast the particle can travel. Note that this attribute only affects the base speed of the particle, therefore only affecting newly spawned particles. It does not affect the partciles over their lifetimes.
Global Particle Size
This scales each particle's size attribute within the effect, thus controlling the overall size of the particle. Note that this attribute only affects the base size of the particle, therefore only affecting newly spawned particles. It does not affect the partciles over their lifetimes. By default, only particles are uniform in size, therefore in order to enable adjustment of their width and height independantly, right click on the attributes list and select "Toggle aspect" from the pop-up menu.
Global Stretch
This scales the amount of stretch each particle has. Stretch effects how much a particle is stretched based on how fast it is travelling.
Global Zoom
This attribute affects the overall scale of the effect and can be handy when adjusting how large you want the effect to be. Note that if emitters are not checked as relative, then the scale will only be adjusted at spawn time. So whatever the Zoom is when the particle is spawned, it will keep that level of zoom for the duration of it's life. Check relative on the particles tab to make the particle scale with the effect.
Global Amount
This scales the number of particles that are spawned per second for all particles within the effect.
Global Life
This scales each particle's lifetime attribute within the effect, thus affecting how long the particles last for. Note that this attribute only affects the lifetime as they are spawned and will not extend or reduce the lifetime of particles already in existence.
Base attributes are signified by the blue graph icon. Base attributes set the base level that life overtime values will scale to. The x axis of the graph represents the time in seconds the the effect has been running for. So for example, you may set the velocity to 200 at the start of the effect, then have it slowly reduce to zero over the the time that the effect has been set to run.
Life
This attribute determines how long the particle will live before before dying. You can plot points on the graph so that the life of particles will vary over the lifetime of the effect. The y axis of the graph represents the number of milliseconds that the particle will live for.
Amount
This controls how many particles per second that the emitter will spawn at that point in time of the effect running. The y axis on the graph represents the amount per second spawned.
Size
Size controls the base level that the size over-life attributes scale to. By right clicking the particle attributes list you can toggle "Uniform Size", which will enable the size attribute to split into width and height attributes so that these can be changed independantly from each other.
Velocity
This controls the base speed of the particles being spawned that the velocity over-life attributes scale to. The y axis on the graph represents the number of pixels per second that the particle will travel at.
Spin
Spin controls the base speed with which particles rotate in either direction and determines what the spin over-life scales to. The y axis of the graph represents the degrees of spin per second and has a negative and positive range, enabling you to control the direction in which it spins.
Weight
This controls the base weight of the particle that the weight over-life attribute is scaled to.
Variation attributes represent random values that are added to the base values in order to add some variation and unpredicatability to the particle's behaviour.
Life Variation
This will add a random amount of seconds onto the base attribute of life so that particles that spawn will vary in the amount of time they stay alive.
Amount Variation
This will apply variation to the base amount attribute so that the amount of particles spawned over the effect's lifetime will vary.
Size Variation
Applies a random value onto the base size so the particles spawned will vary in size. Right clicking and selecting Toggle Uniform will enable you to affect width and height variation independantly
Velocitiy Variation
This will vary the base velocity of the particle based on the amount you plot on the graph so that partcicles will spawn and move with varying speeds.
Spin Variation
This will vary the speed at which the spawned particles will rotate.
Weight Variation
Applies a random amount of weight onto the base weight of the particles that are spawned.
Motion Randomness
Motion randomness does not vary any of the base values, but it does dictate to what degree the particle will move about in a random fashion. Motion randomness effects the speed and direction of the particle so the higher this value is, the more erratically the particles will move about.
These attributes control how the particle behaves over the lifetime of the particle. The x axis of the graph represents the lifetime of the particle so you can control exactly how the particle behaves at each stage of its life. The y axis represents a percentage of the base value set in the Base Attributes and Variation Attrbutes. So, if for example you have velocity set at 100 and the velocity overtime is set to 0.5 then the particle will be travelling at half its speed, i.e., 50 pixels per second.
Alpha Overtime
This doesn't actually scale any base attribute, it simply controls the alpha value of the particle, or how visible the particle is. The y axis is a value between 0 and 1 where 0 is transparent and a value of 1 is opaque.
Size Overtime
This enables you to control the size of the particle over its lifetime by scaling the base size attribute.
Velocity Overtime
This enables you to control how fast the the particle travels over its lifetime by scaling the base velocity attribute.
Spin Overtime
This controls the speed with which the particle spins by scaling the base spin attribute.
Weight Overtime
This controls the weight overtime of the particle by scaling the base weight attribute.
Direction Overtime
This dictates the direction that the particle travels in over its whole lifetime.
Motion Randomness Overtime
This scales the Motion Randomness attribute over the particle's lifetime so you can finely tune how erratically the particle moves.
Stretch
This attribute will stretch the particle depending on how fast the particle is travelling. The higher the stretch value the greater it will be stretched. For best results use the property "Lock Angle to Motion" so that the particle angle will align properly when it is being stretched. the example effects file called "StarBursts.eff" that comes with the editor shows a number of examples that utilise stretch.
Frame Rate
If the particle is set to animate then you can use this attribute to control how fast it animates over the lifetime of the particle.
Velocity Adjuster
This attribute scales the speed of all particles currently in existence. The x axis represents the number of seconds the effect has been alive for, so you can change the speed of all particles in unison for some cool effects.