Hi everyone! In our last blog-entry we explored the creation process of our mobs, starting from gamedesign to prototyping to the final integration in Unity. With this post I would like to tie on to that (textile pun intended) and take it one step further: meet our first boss Razor Raven:
A warning in advance - there will obviously be spoilers of the first boss battle, so proceed with caution!
Designing a boss from scratch can be quite intimidating, so let’s start with the basics. Luckily we already have some limitations and rules in our woven world that help us to narrow down possible ideas. As you know the world of Weaving Tides is made of cloth, and the player can dive through the surface to not only switch surface sides but also create a ribbon stitch. This stitching-ability is our core gameplay mechanic and everything revolves around it. Here are some of the rules that arise because of this:
- 2 surface sides: attacks can either happen above/below or on both sides at the same time
- ribbon stitches: can only be created on woven ground
- dash: can either be used as a short stun or to evade attacks
As some of you might have guessed we have some really big Nintendo fans in our team, so the boss battles in these games are a big inspiration for us. Memorable boss encounters from the Zelda or Mario series use various techniques to offer an epic experience to the player, like exciting character design, multiple difficulty stages or fancy effects.
Boss battles in Weaving Tides should...
- make use of the unique mechanics that are only possible in a woven world
- feel different from normal gameplay (tense, dangerous)
- test the skills that have been learned in the dungeon before
- have multiple stages of difficulty (intro, battle-easy, battle-medium, battle-hard, outro)
Another thing we really like about Nintendo-style boss battles is the visibility of progress: instead of displaying a long health bar, change can also be indicated directly by the boss-model, animations and dynamic music.
As the boss should thematically fit into temple ruins, Verena came up with the idea of a bird-mummy that has a stitchable tail, made up of multiple sections. We really liked that idea and while she was coming up with more refined concepts we thought about what kind of attack patterns such a hovering bird could have:
During this time we tried to generate many different ideas and only kept the good ones. It is important to note that ideas on paper are much faster and cheaper to generate than 3D or gameplay prototypes. These are the three attack patterns we ended up with: slice, stomp & rest. The next step was to create a quick animation prototype, just to test how these phases would look and feel in 3D space:
- boss uses tail to slice through the whole arena in a linear path
- boss hovers above the player for a few seconds and then stomps down
- boss is tired and comes closer to the ground for a few seconds
The strategy to overcome this boss would be:
1) learn Razor’s attack patterns
2) evade the stomp by dashing out of it's attack range
3) evade the slice by dashing or diving
4) as soon as Razor rests, find his weak spot and stitch it down
5) if all tail segments are lost, you can stitch down Razors body directly
There were various other ideas as well, like a crumbling arena roof that let rocks fall onto the ground, so that the stitchable area becomes scarcer as the battle continues:
In the end we realized that this system would make the first boss fight too complex therefore we decided to keep the focus on the boss character itself.
After various iterations Verena arrived at a design she was happy with: the bird itself is now surrounded by magical ribbons, the blade-sections of the tail are connected by a flawed tape. For the battle intro Razor would sleep inside a closed sarcophagus, that slowly opens as the player explores the room. This is the final concept:
One of the main goals for design is that form follows function - so if something is dangerous it should look dangerous, like the swinging razor blades. These blades are also a really good visual indicator for player progress: if you manage to stitch one off, it stays on the ground. During the next attack the bird has to come closer to the ground, so you get closer to the main body too.
At this point it was important to answer a few questions that were difficult to answer in theory only:
- how big should the arena be?
- depending on the size of the arena: can we use a static camera or should we go with the “normal” follow camera?
- does the rest phase also work with the actual endboss model ingame?
...and most important of all:
- is it challenging and fun to play against this boss?
To prototype this boss fight in unity I followed a similar approach to when I created our normal mobs. By using playmaker I soon had a working prototype of a simple cube that could mimic the movements of our slice, stomp and rest. As we had exactly 3 attack patterns Vector3 variables could be used to easily change values depending on the current phase:
A quick example: “secSlicing” is the time in seconds it takes Razor to slice across the whole arena. During the first stage this would require 2 seconds, in the second stage 1.2 seconds and so on. The “num” values are also really useful, for exaple numSlices is the number of slices Razor will perform before resting. This approach allowed us to easily set up and test different attack patterns. It was also a convinient way to balance the difficulty curve and pacing of the entire battle.
This prototype was able to answer most of our questions:
- the arena has to be quite big so that the boss can easily be stitched down and evaded
- using a static camera was no option, as it made the fight much less dramatic and it was too easy to evade the attacks
- additional space would be needed near the border of the arena for healing plants and impenetrable ground patches
...and most importantly:
- even playing against an evil cube was already challenging and a lot of fun!
When we finally switched our placeholder geometry with the actual Razor model a new problem occured: the resting pose required quite complex animation and was difficult to read. It almost looked the same as the normal stomp-animation, and it was not clear that it is safe to approach and stitch:
For a while we tried to solve this problem by using a fixed looking-direction and a lower hover animation height, but this lead to other problems.
Luckily we had a Eureka! moment when we improved some of the old animations: rather than stomping with the tail, the new stomp animation would be with Razors claws and the tail should roll out as soon as it hits the ground:
Instead of having a completely new pose for resting, Razor would just keep sitting on the ground after its last stomp. This saved us a ton of additional animations and integration issues. The other good thing about this approach is the readability: it’s a strong contrast to the normal stomp that players are already familiar with, and because everything happens on ground-level it is much easier to see the weak spot:
Another game-changer is the new boss phases script, that we are currently using to create attack patterns for all our bosses:
The script itself is surprisingly simple, but very powerful: we can quickly create new events, arrange them into patterns, edit variables per difficulty stage and save it as scriptable object. I might make a more detailled post about this system in the future.
Congrats on making it this far! I hope you liked this glimpse into our boss battle design. If you have any feedback for this post or ideas for future posts let me know on our discord.
Here are some impressions of the final Razor Raven battle:
Till next time!