Back to Tools and scripts

Particle Editor for Solar Flare

This is a project I have been co-developing with Linus Axelsson (Neon Smoke) since sometime last year. While his project group changed to a different way of creating particle systems within Unity, my group has continued to use this editor and will do so for our last project as well. During the early stages of development we tried a couple of different solutions for how to create the interface; we eventually decided to give QT and its Designer program a chance as both of us had previous experience with PyQT. We also chose to use DirectX 11 for that very same reason, plus the fact that all engines at The Game Assembly are using DX11.

While Linus did all of the rendering, I was in charge of implementing the interface and binding the various fields and sliders together, while making sure that the data could be passed on to the graphics part for rendering. I also created our first iteration of the binary file that the editor outputs when you save a particle system; Linus has since then made various changes to those structs due to him adding more functionality to the rendering.

Short demo of the Particle Editor.

All of the fields and sliders are implemented with the Signal and Slots functions that QT provides, which gave us callbacks whenever a value changed. This also made it easier for Linus to reload the entire system in order to let the user see how the different variables change how the particle effect looks.

Interface of the Particle editor
Interface of the Particle editor; the UI file was made with QT Designer and implemented with the QT C++ API.

Final thoughts and lessons learned

For me it was a couple of years since I last touched C++ so this has been a great project to refresh my memory on how pointers work. I also think it's great to learn a new API as I've only used the Python side of QT; this was very interesting. Naturally though, they are very similar in structure and as such it wasn't a daunting task to create and design an interface. It was also simple to connect all of the fields and sliders while storing their values for export to our ".ps" binary file.

Research and development of this project was conducted at The Game Assembly as part of an Advanced Technical Specialization course.

Last updated: 31st May 2018