Nowadays almost all games feature some form of particle systems. Particle systems are simple effects that add enormous detail to a game. Particle systems are used to model effects that are otherwise very hard to model. Think of things like explosions, fire, portals, sparks, etc. Ronimo’s upcomming game Awesomenauts is packed with particle effects and it really adds to the feel of the game.
For a previous project I also created particle systems. The system worked beautifully from a programmers perspective. I pulled all optimization techniques from my bag of optimization techniques; from being task based multithreaded to very ugly pointer hacks (which can still be beautiful). However, in the end the system was way to complicated for our artist (Adriaan). Mostly because he had to modify a XML file, rerun the application and see if the changes he made looked good, this took way to much time. Here is a screenshot of the end result:
Creating a particle effect requires a lot of itererations and therefor doing a single iteration has to be fast. Very fast. Ideally, the way to do this is by using a WYSIWYG editor. So I went looking around for what is available on the webs. There are quite a few good particle system engines available like Mercury Particle Engine, Particle Universe and the particle system in Ogre3D. Mercury Particle Engine is a great library for XNA but it lacked a lot of features we were looking for (emitters emitting emitters for example). In the end I decided I’d build the system myself simply because I could very easily integrate it in our technology and support all the features we want. I have also build a WYSIWYG editor so our artists can create these effects in a super short time. All in all it took me about a week to create the system and the tool (although its not completely finished). Anyway here are some screenshots from simple particle systems created with the editor and one of a particle systems in the editor.
That’s all folks! Let me know what you think! 🙂