What is Runewatch?
Runewatch is a Single-Player Roguelite First-Person Shooter with Role-Playing Game elements for PC. The player controls an elementalist who makes use of their magic abilities while exploring randomly generated dungeons, defeating enemies, and progressively becoming a master elementalist through exploration, killing, death and repetition.
After choosing which spell we should work on, the first thing we need to do is to understand what it does, and what the effect needs to convey: Black Hole is an intermediate spell, of the Umbra element, that deals high damage in an AoE after a short delay.
From that, we can gather the following key points:
- It should use a black and purple color scheme because of the element
- Needs to clearly impact a given area
- Has an anticipation period before the climax, which deals damage
- Has to feel good to use, and reflect the high damage profile
With that in mind, we can gather references. References are an amazing way to further visualize what you have in mind, and on some more abstract concepts, can even give you different ideas of how to approach the effect. In this case though, we already had a pretty clear picture that it should look like a black hole expanding, followed by an explosion.
Having that in mind, we can start creating the effect in unity. At this first stage, the most important thing is to get the basic shapes and colors right, so that we can improve on them later. We started with the black hole shape, composed of just 2 layers: The Black sphere in the middle with a glowing edge, and the vortex around it:
After the shape, we blocked the animation, that consists of the black hole expanding, and then disappearing for the explosion:
At this first iteration, the black hole itself already had a pretty good aspect, but the animations and explosion were still lacking. Still, it is enough to convey the basic idea of an area damage skill.
Following the initial stage, we just need to keep iterating and improving upon it. This process consists of a lot of trial and error, changing values, restarting the particle system, seeing how it changes, and repeating this process over and over. Sometimes you try an idea, and it ends up looking awful, and then you just change the parameters a bit, and the result gets way better.
On the black hole, we added some purple and black particles, that are common to our Umbra spells, so that it fits nicely with the other spells.
We did the same on the explosion, while also adding an extra layer of stretched particles, to show the velocity caused by the spell impact.
Here's how it looks so far in motion:
Even though the effect is already usable in the game, there's still room for more improvement, to make it feel better for the player to use it. If you have studied animation, you may have heard of the principle of Overshoot. Simply put, it says that "any object that is stopping, will miss the stop point a bit before stopping eventually". You can see an exemplification here:
We can apply this principle to our effect, by making the black hole grow more and then suddenly collapsing, before the explosion:
We also changed the explosion a bit. The growing sphere is now black instead of purple, and has a dissolve shader attached to it. This creates a bit more contrast in the effect, and also touches more into the darkness themes of the spell element.
For this spell, the area effect was the main part. After that was done, we just had to plug it into our tools, so we could use it in game, and add a area indicator so the player can cast it:
Here's the final look of what it looks like in Runewatch:
That's it for this dev log. We hope you enjoyed the read, and that it can help someone out there adding VFX to their games! Be sure to comment what topic you would like to see explored in our next post!