This week I've been working on the particle system I'll be using for Starlight Revolution. Particle systems are one of those high-impact areas of game development, where a lot of beauty can result from very simple initial conditions. That's not the case here, yet, but I'm hopeful that in the future things will look better.
As I mentioned in an earlier update, Starlight is designed to record replays, and play them back both forward and backwards. As a consequence of this, I need effects to work when played either way. My initial idea was to utilize openGL's transform feedback functionality to update particle positions incrementally, but after working out some implementations along those lines I've settled on another solution.
I'm handling particles entirely within the shader. As inputs, the shader is fed a number of particles, a couple of values defining the system, and a time. Future frames are independant of the prior ones, which will likely come in handy in the future. This is actually the simplest way to implement things, though it is not without drawbacks. Some effects might be difficult to do if they require complex movement, but I'm fairly confident I'll be able to use this to make things look good. As a side benefit, because shaders are accessible to modders, adding new particle effects to the game should be a fairly simple endeavour.
If you'd like to chat on this or other topics, feel free to message me on twitter @JeckDev or leave a comment below. You can also subscribe to the mailing list for occasional email updates on what I'm doing. If you'd like to see what kind of content you can expect, you can check it out the latest newsletter here.