Last August 15, 2011 we uploaded 2 videos of our tech demos for Phlyndir. Needless to say we had so much negative feedback we had to run back to our holes and think of a way to make things better. It was emotionally and mentally scarring for us, but, despite the trauma, we decided to give it another go because we wont be able to go far with out feedback, positive or negative, after all. Looking at our work we’ve identified some areas which we can drastically improve; particles, terrains, and *sigh* almost everything. Anyway, I’ll be talking about our improvements to the particle system, like the title of this post states.
Our previous particle system only had one controller with a ton of parameters, around 30 or so, to control the characteristics of the particles the system throws out. It seemed OK because the tons of parameters allowed us to make the basic particle configurations; fire, rain, smoke, etc. It became painfully clear, however, that making the more advanced particle configurations was impossible. The different particle configurations from the basic to the more advanced ones have common properties, however, there are properties that are specific depending on the desired characteristics of the particles.
Here is where this post becomes a little technical. What I did is to abstract the particle system into 3 parts; the particle, the emitter, and the controller. The emitter would contain information regarding the number of particles and the texture used by those particles. The controller would contain information regarding the parameters that will control the particle’s characteristics, and the particle would contain information regarding its characteristics at a given point in time. I also further abstracted the controller into a base controller and child controllers which inherit from the base controller. This allowed me to define the common properties in the base controller and the specific properties in the child controllers. Since the child controllers are inheriting from the base controller it becomes easy to extend the characteristics of the particles by defining more complex child controllers. As a result, we now have a more dynamic and extensible particle system. Below is a demo of the new particle system. The lag is due to the recording and converting of the video.