In its most elemental form, particle systems are composed by two main objects: A particle object, which will represent every individual particle, and a generator, which will generate particles themselves. For the sake of simplicity we're going to approach some things unconventionally. In reality, a particle system can be an inmensely complex system. So what exactly is a "particle"? In computer science and game development a particle could be described as a small localized object that stores physical properties, such as volume or mass, and dynamic properties such as its position in the X and Y axis (and also Z, if you're working in 3D) as well as its velocity in all two or three axis. The main purpose of a particle generator is to generate the particles themselves (well, D'Oh!) and to control some properties about the generation, such as the number of particles to generate, their initial speed, spread, etc. This two definitions will form the basis of our particle system, so let's translate them into a practical and real-world context.