The term PARTICLE SYSTEM refers to a computer graphics technique to simulate certain fuzzy phenomena, which are otherwise very hard to reproduce with conventional rendering techniques to produce realistic game physics. Examples of such phenomena which are commonly done with particle systems include fire, explosions, smoke, flowing water, sparks, falling leaves, clouds, fog, snow, dust, meteor tails, or abstract visual effects like glowy trails, etc.
Typically the particle system's position in 3D space or motion therein is controlled by what is called the emitter.
The emitter is mainly characterized by a set of particle behavior parameters and a position in 3D space. The particle behavior parameters might include spawning rate (how many particles are generated per unit of time), particle initial velocity vector (i.e. which way will it go when it is emitted), particle life (how much time does each individual particle live before being extinguished), particle color and variations throughout its life, and many more. It is common for all or most of these parameters to be fuzzy, in the sense that instead of absolute values, some central value and allowable random variation is specified.
A typical particle system update loop (which is performed for each frame of animation) can be separated into two distinct stages, the parameter update/simulation stage and the rendering stage.
During the simulation stage, the amount of new particles that must be created is calculated based on spawning rates and interval between updates, and each of them is spawned in a specific position in 3D space based on emitter position and spawning area specified. Also each of the particle's parameters, like velocity, color, life, etc, are initialized based on the emitter's parameters. Then all the existing particles are checked to see if they have exceeded their lifetime, in which case they are removed from the simulation. Otherwise their position and other characteristics are modified based on some sort of physical simulation, which can be as simple as adding the velocity to the current position, and maybe accounting for friction by modulating the velocity, or as complicated as performing physically-accurate trajectory calculations taking into account external forces. Also it is common to perform some sort of collision checking with specified 3D objects in order to make the particles bounce off obstacles in the environment. However particle-particle collisions are rarely used, as they are computationally expensive and not really useful for most of the simulations.
A particle system has its own rules that are applied to every particle. Often these rules involve interpolating values over the lifetime of a particle. For example, many systems have particles fade out to nothingness by interpolating the particle's alpha value (opacity) during the lifetime of the particle.
After the update is complete, each particle is rendered usually in the form of a textured billboarded quad (i.e. a quadrilateral that is always facing the viewer). However, this is not necessary, the particle may be rendered as just a single pixel in small resolution/limited processing power environments, or even as a metaball in off-line rendering (isosurfaces computed from particle-metaballs make quite convincing liquid surfaces). Finally 3D meshes can also be used to render the particles.
theverymany within particles dynamics...