I used to use SPE, and squarefeet and I had a go at a complete rewrite with a lot more features. The scope turned out too high and we were quite busy at the time, so the project just kind of got abandoned. Fast forward to about 6 months ago and I sat down to write a good-enough particle engine for my game, since SPE was not cutting it at the time for me, as I had more requirement by that point than what SPE was intended for.
After about a week of prototyping I had the core for my new engine, that I call “particular” and after almost 3 month of refactoring and debugging I had it pretty much finished.
My particle engine does something a bit different from SPE. Where SPE is intended for rendering huge number of particles and having good flexibility over number of emitter and memory usage, my engine largely ignores particle limits, I didn’t need millions, so it was intended to be super flexible and provide very good frame rates with large number of small emitters - that’s really a more typical usecase for games.
The reason I write this is that after having worked with particle engines for a while now - I feel that my priorities of what’s important in an engine have changed a lot. I believe the following are not very important in a particle engine:
- huge number of particles
- complex simulation model
- simulation stability and reproduceability
Instead, I believe the following are more important:
- support for large number of emitters (you want to be able to add particles to whatever you see and not have to worry if your FPS will tank just because you added an emitter with 5 particles somewhere)
- offer a lot of flexibility in parameterization of particles, both statically and over time
- support a good render model, preferably with soft particles, lighting and shadows are a bonus.