# Documentation and Help

Alert Games Offical PD page Online FAQ Get More Particles

### Table of contents

Particle Designer
About Particle Designer Whats new in version 2.0? Getting Started How to use the tabs Keyboard Shortcuts Preferences Designing Particles Part Step and Part Death Designing Emitters Attractors, Deflectors, Changers and Destroyers Streaming and Bursting Codebox Codes Importing and Exporting Taking Screenshots
Particle Systems
Inserting Code Into Your Game Functions Extra System Functions

### About Particle Designer

Description
This program allows you to design particles and test other particle system functions. After you are finnished, you can export GML(GM6.1) to the clipboard or a file for your game, or just for the designer. It is faster and easier than testing the game over and over until it turns out right. It is also useful for those who do not know the GML for particles, or hardly any GML. You may also import GML for particles and edit the variables or view it. This can serve as a "load" option for a particle in progress if needed. Keep in mind, Particle Designer takes a lot of memory to run the program, so the effect will probably run faster in your game. This program is made for GML, however, it can make quite interesting effects for just a screenshot or animation.
History
In June of 2006, there were very few, or no programs specifically made for creating particles and importing them into Game Maker. This program was designed to do that. Particle designer 1 was basic, but created a particle and exported GML for Game Maker. Even for those with little GML knowlege. Many scripts were made and version 1 was released a few months later. Although it did have very good interface(according to feedback) compared to other programs made in GM, of course people would like even more goodies to be added. Thus, Particle Designer 2 was started in November 2006. With all of the additions, many more scripts and graphics were needed, so it took a long time to complete. Version 2.0 was released on April 12th, 2007.
Requirements
Windows 98SE 256Mb RAM or greater(recommended) DirectX 8.0 or greater
| Credits
Particle Designer ©2006-2007. All programing and graphics: Alert Games dialog dll programming: Cameron MacGregor menu dll programming: Nintendofreak88 convert.exe: ImageMagick Studio Beta testers: Funky Pancakes Blah 569 Ash And thank you everyone else who supported this project!

^ Back to top

### What's new in version 2.0?

Bug corrections
Fixed the 0fps crash prevention problem. Displays name of the particle and is default for saving. Fixed some of the bugs with the codebox.
Updates
There is a folder for the data files and also one for the particles. The ENTER key can now be used for the 'change' button. Hold SHIFT while moving the emitter to make it follow the mouse. "Full Random" randomizes all settings with less restraints. Ideal random sets some values with better restraints than before. Can load a background with the main types of images, including PNG. Importing now changes the particle automatically. Nicer looking. Multiple particles. The max and min limits are increased to 50. The direction min can now be -359 and greater. Multiple attractors, changers, deflectors and destroyers. Re-Burst time limit greatly reduced. Part-step and part-death are now useable. Save a GML file for attractors, emitters, particles, etc. Record a GIF animation(stop by pressing F10). Press SPACE to pause the game, and click anywhere to continue. You can now export the particle or all particles using the names of the tab as the variable. Save to a PDSF file. Many more keyboard shortcuts. Most, if not all codebox bugs are fixed.

^ Back to top

### Getting Started

When you open Particle Designer for the first time, you should open the preferences to set the options the way you want them(options -> preferences). Once your settings are set, you can begin designing your particle and, if you want, a full particle system. There are always at least two tabs open: emitter and particle. You can now either set all of the settings for the particle manually, or start off by generating a random particle(options -> ideal/full random OR press R/ctrl+R). You can test the particle by pressing the 'burst' or 'stream' buttons(or press 'ENTER' on the keyboard). By default, emitter1 streams the first particle, and emits 10 particles. To change this, click on the emitter1 tab on top. While you are there, you will see other options for the emitter. You can click the 'mouse' button next to the input boxes to use your mouse for the easiest way to set the emitter. Once you are done, you can export a tab, all of the particles, or the whole system to pull up in Particle Designer again(Export menu). See more on Particles See more on Emitters

^ Back to top

### How to Use the Tabs

Using the tabs is very simple. The only thing to consider is the right-click options. Copying the tab creates another tab that is the same, obviously. Deleting will delete the current tab, but if there is a tab or tabs after it, they will be moved so that there are no gaps in the numbering. For example, if there are 3 attractors, and you delete the first one, attractor2 will become 1 and attractor3 will become 2. Reseting the tab restores defaults. Renaming the tab will not only make it easier to identify, but will also be the name of the variable when exporting it.

^ Back to top

### Keyboard Shortcuts

F1 | Display this help file.
F2 | Make a new system. It will reset all settings if you choose 'yes'.
F3 | Take a screenshot of the particle area.
R | Randomize all unlocked settings of the current particle tab. It will randomize the last particle clicked if the current tab is not a particle tab.
Ctrl+R | Same effect as the 'R' key, except it will have less limitations on the values.
E | Exports the current tab as a file.
M | Move system. This is self-explanatory.
Spacebar | This will freeze the program until a key or mouse button is pressed. Could be useful to drop-down a menu.
Esc | A shortcut to end the program.

^ Back to top

### Preferences

Fullscreen Mode | This option will display Particle Designer in fullscreen every time it is started. Fullscreen only scales the window and does not show the start menu.
Advanced Mode | This enables the use of the codebox. Click here to see more on how to use the codebox.
Background Color | The default background color when Particle Designer is started. Has no effect when a background image is loaded.
Crash Prevention | Particle Designer will clear all particles and stop emitting when the FPS(frames per second) is lower or equal to that value.
Particle System Code | This would export the function for creating the particle system in your file/clipboard.
Emitter Code | Exports the emitter code with the particle code when exporting particle(s).
Automatically Move Emitter | When checked, you can move the emitter by hovering your mouse over the center point and hold the left-mouse button and release in a new position.
Color Code Tabs | When checked, the tabs will be colored according to the color the system is drawn in the particle area.
Show Code After Saving | When checked, if you saved a GML file, it will open automatically. You can also choose a program to open to display the exported code. If you don't, it will run the default program, or throw an error if it doesn't have a default program.
Clear Particles When Making Changes | When selected, every time you click 'change' or stop and stream again, the particles on the screen will be cleared before emitting again.

^ Back to top

### Designing Particles

An effective way to create a neat particle is to start with a random particle(if you need an idea). Choose ideal random a few times to find a good effect. Then you may want to 'lock' some settings. To do this, click the checkbox under the lock image's column. To lock or unlock all settings, you can click that lock button. After you lock some settings, you can press ideal random again, or full random to tweak the unlocked settings. This particle may not look good with a moving emitter in a game, however, you can record a GIF and put it in your game as an image instead. You can also just use a regular screenshot, and edit it in Game Maker or in-game.
Using a Sprite for the Shape
In a particle tab, there is a button on the top left of the settings panel labeled "Sprite". The supported image extensions are .gif, .bmp, and .jpg. Gif's can be animated. 'Stretch' is whether or not to make the animation stretch to the full life of the particle. 'Random' is whether to start the animation on the first subimage, or a random one. Finally, the codebox does not support testing with the external image.
Using Random
This option obviously creates a random particle. 'Ideal random' will only change the variables that are most commonly used. It may be useful to start your particle. The other option is to use 'full random'. This will customize most of the settings with less restraints. This may be helpful for a few unlocked options. You may 'lock' a setting to prevent it to change that setting. As a shortcut, you can press 'R' to create an ideal random particle as well. (Use ctrl+R for full random.)

^ Back to top

### Part-Step and Part-Death

The part_type_step() and part_type_death() settings are located on the bottom right of the particle tab's settings. With 'step', each step the indicated particle will be emitted from that particle. Death does the same thing, except when the particle is dead(only from the 'life' setting, not a destroyer). As default, the particle will not do these settings. When you change these, you can not create loops. A loop is when particles have the part-step or part-death as each other, thus the particles will never die unless there is a destroyer, or are manually cleared.

^ Back to top

### Designing Emitters

When creating an emitter, using the mouse is the best way to do it. After using the mouse, the values will appear in the input boxes in that tab. This is where you can tweak the values to be perfect. You can also make the areas outside of the center by adjusting the values.

| This is an example of using the mouse to resize the emitter.
| Here, the emitter is outside of the center. This can only be done by values because the mouse will only adjust the size around the center point.

Also in the emitter tab is the particle emit settings. From here you set how many of which particle to emit. You can set more than one particle, however, it will only emit more than one when it is bursting.

^ Back to top

### Attractors, Deflectors, Changers and Destroyers

Attractors
Attractors can pull particles towards its center, or push them away. There are also different methods of attracting, and force. Different methods include constant, linear and quadratic. Constant uses the force value wherever the particle is in its region, while quadratic uses the least force when the particle is farther away. Quadratic is the weakest kind of attractor. Additive indicates if the motion should be added each step, or just move towards the center with the force value.
Deflectors
Deflectors are the closest you can get to particle collisions. It is possible to have the particles speed up, reverse, and stop. If the particle is travelling the opposette way the 'kind' is, then the particle would stop. If not, it will move with the friction value. You may use a positive or negative value for the particle's motion.
| Changers
For whatever reason you want to change the particle when it reaches an area, you use a changer. This does what it sounds like it would. The confusing part is the 'kind'. Supposedly, selecting 'motion' would only change the motion, and 'shape' would change the visual settings. However, it might not be what you thought. By experimenting, 'motion' will change the shape, but not the scale, and contiue the direction with the 'increase' and 'wiggle' changed. Otherwise, 'shape' and 'all' do what they sound like.
| Destroyers
Destroyers destroy the particle when it enters the region. It is pretty straight forward since there are no addition options for a destroyer. The particles are destroyed in a rectangular region when the particles are outside of the region, but when inside, they seem to be destroyed as expected. This may be a bug with GM6, or just an unexplained detail of the function.

^ Back to top

### Streaming and Bursting

Streaming is another setting to explain. It's obvious that per step it emits the number of particles you inputed. However, inserting a negative value will emit a particle every number of steps. For example, if you insert '-5', then every 5 steps one particle will be emitted, on average. The 'room speed' determines how many steps per second there are. Therefore, there are 30 steps a second for a room speed of 30. By pressing 'ENTER', you can change the particle, as if you pressed the 'change' button. By pressing 'SHIFT', you can make the emitter follow the mouse until set.

^ Back to top

### Codebox Codes

One major improvement in Particle Designer 2 is the codebox. You can use most keys used in a normal textbox: arrows, home, end, delete, backspace, and enter. Using ctrl+v will overwrite any text and paste the clipboard text. You are allowed up to 99 lines, and it executes the code as if it was part of the program. The "Set tabs each step" option will set all of the changed settings and stream the particles, when it is on. Otherwise you would have to set it manually. You can control all of the values of the systems, and there are 50 empty variables you can use. You may also use drawing functions. Some functions that are not allowed are "window_", "file_", "display_", "game_", "sound_", and "cd_". The list of variables for the codebox is below.

step | This is the number of steps since the code was executed. Starts at '1'. You may want to use this to initiate the variables. For example, "if (step = 1) { var[1] = 90; var[2] = 1;}" (It doesn't have to be on one line.)
val[#] | These are the free variables. At default, the values are 0. The array is any number from 1 to 50.
sys | Although "part_system" functions are not allowed, you can use this for other particle functions.
prt[#] | The particles. You can use this for "part_type" functions for example. The array is for each particle(1-3).
emt[#] att[#] chg[#] def[#] des[#] | Same as prt, but for the other functions.
global.op_(size, speed, direction, etc.)_val(min, max, inc, wig, etc.)[#] global.op_(color, alpha, etc.)_val(1, 2, 3)[#] global.op_blend_valadd[#] etc. | The most complicated settings is for the particles. For each type of setting there is "global.op_", then there is its name, and finally "_val" followed by the 3 letter abbreviation for the individual option. Scale uses "valx" and "valy". Others besides alpha and color use min, max, inc, and wig. Orientation uses "valrel" for the relative value(1 or 0). Gravity uses "valamt" and "valdir". Finally, there are different methods for part_step and part_death, but be careful working with these, and be sure to have crash prevention on while you do. "global.op_part_step[#]" is the particle, and "_numb" added to it is the number emitted(a negative value is allowed). "part_death" is the same with 'step' changed to 'death'. Modifying the sprite values is not an option to prevent easy errors. Be sure to inlude the array for the particle!
ex[#] ey[#] | The center point values for the emitter exclusively.
global.e_(x1, x2, y1, y2, shape, distr) | The emitter values. You may use the constants for the shape and distribution.
global.a_(x, y, force, dist, kind, add)[#] | The attractor values.
global.c_(x1, x2, y1, y2, shape, part1, part2, kind, mx, my)[#] | The changer values. The "mx" and "my" are the center points of the dimentions.
global.df_(x1, x2, y1, y2, kind, friction, mx, my) | The deflector values.
global.ds_(x1, x2, y1, y2, shape, mx, my) | The destroyer values

The codebox text can not be exported, but can be copied to the clipboard using ctrl+c.

^ Back to top

### Importing and Exporting

Importing
You may want to import a particle by file. This will read the particle functions in any order. Some functions do not change any settings, and are accepted. This includes functions like "part_type_create()" and the "#define" in GML. When a function is not recognized, a message will show which lines are not understood. If there is the emitter function burst/stream in it, it will set the current emitter to stream that particle with the number from the file. By importing, it will overwrite other existing tabs. It only recognizes one function per line and only variables of the functions. It does not recognize colors or other constants besides 'true' and 'false'.
Exporting
Once you are finnished creating your particle system, you need to export it, or save it for later use. You may export the selected tab, all the particles, or the entire system. Each can save as a GML file, copy to your clipboard, or save the entire system as GML or a Particle Designer file. You can also add to a existing file when exporting a single tab by naming it the same as the file you want to add to. A PDSF will save the tabs, but also the positions, locked settings, macro-tab, etc. The perfected PDSF script is not finnsihed, but this will work somewhat correctly. After exported, all you have to do is paste the code into a code action in an objects' 'create' event. Or, you can import the GML file, and put an 'execute a script' action from the library into the create event. The codes needed are found in the help menu, or exported with your code(if set in the preferences). The files are exported to gml, which normally do not have any program to view them in. To set a program for that file type, go to the Preferences and click the folder. To set the default program in Windows, right-click on any .gml file, and click "open with...". Then select the program you want(such as notepad), and click "always use this program for this file", then click "ok". See more on the code on exporting into the game.

^ Back to top

### Taking Screenshots

Single Image
There are 3 options for taking screenshots(File -> Screenshot). The first two take a single image of either the full designer, or the visible particle area. You can save the result as a JPG, BMP, or both.
GIF animation
Particle Designer supports recording a GIF image with multiple frames. When selecting the framerate, The lower the value, the more images will be recorded. Press F10 to stop recording(if it does not prompt you for a filename, you may need to click anywhere on the program). Keep in mind that because of the large dimensions, the filesize will be 1 Mb or larger in most cases(depending on the time and framerate of the recording). If you want to use them in your game, or possibly even in general, it is recommended to reduce the filesize by resizing the GIF to a smaller size and cropping it. The biggest problem is that the quality will be greatly reduced, even if it is not scaled. It also takes a long time to convert, which is most likely the ImageMagick's program's fault.

^ Back to top

### Inserting Code Into Your Game

You can only put GML into your game. A GML file may not include all of the information to make the particle work(see 'Functions'). If you exported a GML file with one particle or more, you can import this script into Game Maker(Scripts -> Import Scripts). Once imported, you need to add the action "execute script" in the create event, and select that script. Then, you need to make sure that all of the code for your particle system is there. "Sname" can be changed to any varibale name you choose, as long as it is GML valid. You need at minimum: Sname=part_system_create() particle code emitter code(using 'Sname' as the system)

^ Back to top

### Functions

Sname, Ename, and Pname are sample variables. You may change them, but then you MUST make sure the variable that uses it matches. Also, make sure that there are no identical variables. Enjoy using this program, and hope it helps you out in your games! If this code is not in your game, copy this particle system create code and paste in an objects' create event. Be sure that it is called(placed) before other particle functions. Use the variable as an indicator of the system. You only need one system for each depth(usually only one is used). Sname = part_system_create() This is the emitter code in case you have not exported it. If you want to change it during the game, you can put it in the another event for that object: Ename = part_emitter_create(Sname) part_emitter_region(Sname,Ename,x,x,y,y, ps_shape_ellipse,ps_distr_gaussian) If you want the emitter to burst instead of stream, then replace the function with the following(You can place these functions in other events. Stream can be stopped by streaming 0 particles.): part_emitter_burst(Sname,Ename,Pname,10) See extra functions

^ Back to top

### Extra Particle System Functions

In some cases, you may want the particle system to be executed a little differently. For these functions, you may want to look at the Game Maker manual. Here are some common functions with a brief definition. Sometimes you don't want the particle system to draw every step. This function allows you to update it when you need to. (You can also use functions similar to these for drawing. See manual for these functions.) part_system_automatic_update(ind,automatic) When it is not automatically updated, you can update it once by using this: part_system_update(ind) clearing the system of particles is important when changing places, switching rooms, etc. part_particles_clear(ind) Finally, when you are done using the system, you might as well delete it to save space. part_system_destroy(ind)

^ Back to top
©Alert Games 2006-2007 All rights reserved.