I just completed the final task today for the PRE-ALPHA 3 Milestone for Pursuit of Power 2. I was really busy at my full-time job this month due to another release milestone. I had to stay up to 3am the past few nights to remain on schedule for my game. It is really tough working overtime at one job and then spending another 4+ hours on my own project. This was an exhausting month! But, I was able to finish the major goals for this milestone, including a new particle effects engine.
In order to improve the visual effects of the game, I needed to first make my particle effects engine more robust. Previously, I just had a very simple design that processed a list of effects. This was very inefficient since the list gets really big when displaying many particles. Plus, it is wasteful to process particle effects that are not on screen.
My new design groups related particles together into particle systems. Each particle system has multiple emitters that can create particles using a variety of behaviors. For example, a spell cast by a troop would emit particles along a path from source to destination. The particles would be emitted at a certain rate and have different attributes that modify the visuals.
That casting effect might also have an area effect as well as other simultaneous effects. These would also be attached to that same particle system. I can then update the bounds of the particle system to include all of those emitters as they become active and go back to inactive. This greatly reduces the size of the effects list, since it just needs to contain the active particle systems. Then each particle system is responsible for its own list of effects for its active emitters.
The most important benefit is that I only need to update the timers for particle systems and emitters. I don’t do any other processing unless the particle system is on screen. This means I could have tens of thousands of “potential” particle effects without crushing the computer since only a fraction will be on screen at once. Therefore, I can push each particle system harder using more particles, which can make the visuals much more impressive.
I had to work through some challenging problems to make everything work correctly. I share one free particle effect buffer pool. If a game is paused, it is very easy to run out of buffers while navigating around the board. I have code that will free active particle systems off screen when the free buffers drop below a certain threshold. Those effects are then rebuilt and advanced to current time if they are displayed on screen again.
It was a lot more work than I anticipated, but now I have a robust particle effects engine. Next I will add some more effects for actions such as summoning a tower using a leader ability. I want to add another effect when banner zealots pulse power too. In addition, I will work on making the visuals more impressive by increasing the attributes and creating more particle behaviors. I will keep working on the visuals while I continue to make progress on the game.
Beside the particle systems, I also worked on more gameplay concepts and fleshed-out the unit design. I am really excited to implement these concepts. I think the gameplay is going to be a lot of fun! I will share more of those details in my next post. I should also be able to show some of the new artwork very soon. Mark has some really cool mock-ups of the pixel art that we are using to determine the right style, perspective, and scale.
Check back again to see the first artwork for Pursuit of Power 2 and to learn more about my progress