Project Type: Solo Side Project
Languages: C# using XNA4.0
Time: ~6 weeks, Summer of 2014
The Slayer II Particle Editor is a C#, XNA4.0 based Particle Emitter Editor for a Particle System I wrote to use in Slayer II*. The editor allows you to modify a particle emitter in real time with a whole array of options at your disposal. The editor also exports to a file which the particle system can read, making it easy for a game to take particle effects created in the editor and use them.
* Slayer II is a project from a class which I later took and expanded as a side project over the Summer of 2014. It is a 2D combat simulator where you slay monsters.
This is best explained in the video I created for it (for those who want a more in-depth explanation with visuals). Alternatively, you could just fiddle with each individual feature until you figure everything out.
The editor is capable of many different particle effects/emitters and its really only limited by what you can think of. Here are a range of different effects I was able to create (some of them randomly, others by doing it myself).
How to Get It and Use It
The Particle System itself is available for all to use, modify and redistribute for free on Github under the MIT Liscense. The editor’s installer is included with the Github code, just run Slayer II Particle Editor.exe and the installer should help you set it up on your computer. This should be compatible with Windows 7 & 8. I can’t guarantee any other versions of Windows, it will not work on Mac or Linux.
As for using it, this is where it gets more technical. In the video posted above, I walk you through the various features in the editor, but I don’t explain integrating it with an XNA4.0 project. Below is a video which will do just that. It goes through it step by step and should get you on your feet with the particle system and using the .emitter files which the editor exports to.
This project was my solution to a problem I faced while working on a side project over the Summer. While working on Slayer II , I reached a point where I wanted to add some cool effects to the game but had no easy way to do so. I had an artist giving me some assets, but there wasn’t enough time for them to get me as many effects as I would have needed. This is where my idea to add particle effects came to be.
I started by searching around for anything I could use rather than just making my own, but I was never quite satisfied with what I could find, especially considering I was working 2D, not 3D and didn’t want to mess with conversions. In the end I settled on creating my own system, but where in the world would I start? This is when I got inspiration from a class I had taken the previous semester. In the class, I worked on a game in ActionScript 3 with Starling and I had used their Particle System and an editor we had found for it. I remembered finding their system fascinating and I then decided to use their system as an example of what to make mine capable of.
Moving forward, I began programming my Particle System. The system included an enormous amount of options to tweak (just like the one in AS3) as well as the ability to modify values dynamically, allowing interesting possibilities. It took around 4 weeks to create this system since I was working a job during the day and could only work on this in my spare time. There were also many times that I got stuck on various parts of the system due to the complexity of it all. It took me nearly 3 weeks before I could even begin to compile the whole thing together and test everything as one complete system due to how many I was trying to get in from the start. Looking back, It definitely could have been a bit smoother by adding some of these features later.
When I had finally gotten my system in a state that I was proud of (and mostly working), I began working on arguably the best part, the editor. I really enjoy making editors and this one was the holy grail of editors, the epitome of any editor I had created up to this point. It was visual, it had lots of functionality and it was a challenge. I used a XNA based GUI system I found to create the checkbox, combobox and buttons while the sliders I created myself. The texturing for the editor was based entirely off of the AS3 editor I found (mentioned earlier).
Since this project was a big deal to me, I decided to take the time and effort to learn about creating my own installer. I did research and several tests and eventually learned how to create one for it using Inno Setup. This was definitely more difficult than I had thought, but worth the effort. I also put the particle system on github, available for all to use, modify and redistribute for free. If you love something, you should set it free.
Thanks to Scott Franks who developed the Ruminate MonoGame GUI which I used to help create my Editor.
Thanks to my friends and family for support while working on this project, It really does help.