Serfs

The serfs required even less time and work than the wedding guests. For the actual animation, at least. More sprites had to be organized, rescaled and cropped in Photoshop before being implemented but not as much work was necessary in order to animate them. The scene consisted of three serfs working a huge bellow for Ilmarinen’s smithy. They only needed one animation: The serfs had to hold a rod for the bellow, going up and down with it. This animation was converted into four animations: One animation for raising the rod, one for waiting at the top, one for lowering the rod and one for waiting at the bottom.

Wedding guests

As planned from the moment of animating Väinämöinen the sprites of the wedding guests were assigned to a previously existing skeleton. However, they were assigned to the skeleton used to animate Ilmarinen, not Väinämöinen, since Ilmarinen’s skeleton was more sophisticated than Väinämöinen’s. Väinämöinen, for example, lacked a neck, since it would not be visible behind his beard. Rather, the male wedding guests were assigned to Ilmarinen’s skeleton. For the female ones I created a new skeleton exclusively for their models, since they used other sprites. Neither the male nor female guests would be required to have any other animation than an idle, since they technically would not move in the game. Creating new skeletons while referring to previous, similar animations was something I had become efficient at, at this point.

Frog Minion

With the frog minion I had the exact opposite task as with the wolf. In this case the smaller frog enemy had to become lighter than its sibling. Since all animations that were needed for the minion was already created for the boss I merely had to refer to the animations of the latter. Because the anatomy of the two frogs, in terms of the size, scale and shape of the sprites, was different enough to require two separate skeletons I was unable to duplicate the exact animations by cloning the key-frames as I had done when I transferred Väinämöinen’s skeleton to Ilmarinen (or rather when I assigned Ilmarinen’s sprites the clone of Väinämöinen’s skeleton). Some animations, like the melee attack had to be changed though, because of the different personalities of the two enemies. The minion had to be quick and light, whereas the boss was incredibly heavy.

Frog Boss

After having studied the movements and the anatomy of frogs jumping I began animating the frog boss. Because the anatomy of the wolf had not been as correct as it could have been the Character Designer and I worked together to make sure that the frog enemies would be able to be animated properly. The frog boss was the final enemy the players would have to defeat in order to complete the vertical slice. Given that, he had to be big and terrifying. Though I had no part in the creation of the creature it was my duty to bring him to life. I discussed with the Character Designer the idea that the frog boss could be so fat that his limbs would not support the weight of his body. The Character Designer liked the idea and implemented it into the design.

I designed the melee attack of the frog boss to be him crawling forward towards the player characters, trying to pull himself close enough to hit them, dragging his body against the ground. The boss also had a ranged attack, using his tongue as a whip. I decided to emulate the weapon by making the frog bend its head and body back as if to crack a whip that was not there, its tongue not yet protruded. Once it was it simply followed the movement of the invisible whip, cracking in front of it and then returning into the mouth of the giant frog.

Even though the limbs of the frog was not supposed to be able to support its weight, yet alone be able to jump, he needed to be able to jump nonetheless. This to prevent the players to only be able to attack the boss from the left. If the frog could jump over the player characters and perhaps separate them the battle would be more dynamic. By studying the movements of frogs jumping I learned that frogs, particularly moor frogs which we used as a reference for the two enemies, jump by stretching the muscles on the two upper bones of their hind leg, leaving their third, lower bone, and feet on the ground. When the upper legs are stretched fully the lower leg and feet are used to give the frogs the additional push necessary to throw them into the air. I animated the jump of the frog boss accordingly, with the task to still display his weight in mind.

Wolf

One of the first enemies the players would encounter were wild wolves. I managed to acquire template images for running and jumping canines and based my animations on those templates for those specific animations. For the attack, heavy attack, idle, knockback and death animations I was forced to improvise based on the shape and size of the sprites in comparison to the skeleton of the wolf and references consisting of video materials depicting wolves in sanctuaries. I took some liberties when it came to these animations because of the fact that every animation was required to be able to loop. Wolves in the wild and in sanctuaries rarely repeat their movements and almost never stay in the same spot.

One problem I encountered while animating the wolf was this: The wolves in the game were meant to be huge monster versions of wolves, almost as tall as the player characters. Because of the canine in the reference I had used to create the animations, particularly its size and weight, the wolves felt too light. Their walking animation resembled an animal that held its body in roughly the same place as it ran, something that would be impossible due to the proportions of the wolves in the game. As a result I had to take more liberties and revisit the animations in order to visualize the weight the wolves of that size would realistically have. The body of the wolf was lowered and the forelegs primarily were bent further, supporting it. To show that pushing the body up and forward was a strain to the legs of the wolf I let the legs linger bent and close to the ground as the body was raised, delaying the legs straightening and following the body upward. Because there were only four sprites assigned to four bones (canines anatomically have six bones in their fore legs and seven in their hind legs) they had to be animated as best they could to give the illusion of a natural movement while showing the weight of the beast.

Ilmarinen

When all animations for Väinämöinen were completed I duplicated the file I was working in and deleted the sprites used for him. I then replaced them with the sprites created for Ilmarinen. In the Finnish national epic Ilmarinen is the master smith. He is the one who forged the sky, so masterfully that there are no seems or traces of nippers nor hammer, among other magical items. He is also a very close friend of Väinämöinen.

Due to some minor differences in the characters anatomy (in terms for sprites) I had to add or delete certain bones in order to make the character ready for animation. Because Spriter allows the animator to duplicate sprites that are assigned to bones, and align the sprites to the position and rotation of that bone in all key-frames in a specific timeline, I had to put in exceedingly less work when it came to actually create animations for Ilmarinen. Due to reasons unknown to me, however, Ilmarinen’s animation file in particular was infested with various bugs. Because of this I had to put in more hours on identifying and overcoming said bugs than I would have been preferable. Since both Väinämöinen and Ilmarinen were playable characters they had to share all animations required to give visual feedback to every action said characters needed to be able to perform. That said, the characters had some unique actions and abilities. Ilmarinen’s unique action was the ability to use his nippers to grab hold of an enemy, making it unable to move or attack. This movement, similar to the jump- and heavy attack animation, was split into three animations for the same reasons.

Väinämöinen

The first character I provided animations for was Väinämöinen. In the Finnish national epic Väinämöinen is the bard immortal. He is birthed, already an old and wise man, from a celestial being laying in the ocean and washed ashore, where he proceeds to use his magical voice to sing trees and vegetation to the world. Väinämöinen is inherently magical and he uses song to shape the world or summon objects or beings into existence.

He was one of the playable characters in ‘The Runes of Kalevala’ which meant that he would require the highest amount of animations. The animations Väinämöinen required were the following: idle, walking, light attack, heavy attack, jump, fall, knockback, tired, spellcasting as well as a reaction from receiving a sword in the game. Because of this he became a template for the other human characters.

Due to the fact that Väinämöinen was the first character I provided animations for in Spriter, as well as the fact that his movements would be used for the other human characters his animations were not given a lot of personality.

Because we were trying to adopt the aesthetic of classical Finnish stop-motion pictures, this meant that the sprites would not be able to be stretched or scaled up or down. This led to some inconvenience when I was creating the light and heavy attack animations. Since the sprites had to remain the same scale all the time I was unable to make the character move his arm in any direction but x and y in a 2D grid. This is obvious since the characters were all two-dimensional, interacting with a 2.5D environment (the game world consisted of 2D planes in a 3D environment to create depth) but it became difficult to find proper movements for the character to illustrate his light and heavy attacks. In the end Väinämöinen was given attack animations with broad movements of his arms raising and falling to emphasize that he was delivering deadly blows with his sword. I made sure to animate his whole body for these attacks to give them proper movements to avoid the character looking stiff. I made his back bend forward and give his body weight by bending his knees as he attacked.

Väinämöinen’s jump animation was split into three different animations: one for the actual jump, but also one for being in mid-air or falling, and one for landing. In order to make the character move in a way that would work fluidly between the three different animations I creation the entire movement in one animation and then proceeded to copy the key-frames for each part of the movement into their own animation timelines. I did this because we knew that the character would not necessarily be able to land before the jump animation ended. The heavy attack animations was also split into three different animations; preparation, anticipation and strike, in order for the programmers to be able to balance the speed and length of the attack.

Learning Spriter

The first task that was assigned to me was to learn how to properly use Spriter as a tool for animation. For previous projects I had been using both Adobe Flash as well as Adobe Photoshop for animation. Even though neither of said programs provide tools for animating exclusively frame-by-frame, that was how I had primarily operated. What this means is that I had worked by drawing a figure in one frame and then had to draw the same figure in the following frames, with the alterations necessary to portray the intended movement. Fortunately, for the workflow of this project and its schedule, Spriter would not require this of me. Instead Spriter allowed me to build a skeleton by creating bones in succession to each other. These bones were able for me to move and rotate, according to the desired pose of the character. When I was pleased with the shape and pose of the skeleton I was able to attach the various sprites to different bones: The sprite for the thigh of the character was assigned to the corresponding “thighbone” of the skeleton; the hand was assigned to the “hand bone”, and so on. When the sprites were assigned to their designated bones and put in the right z-order I had the ability to pose the character according to the desired movement of their animations.

Beyond offering a more efficient way of producing animations for the characters Spriter provided me with tutorials and referred me to BrashMonkey’s where other Spriter users was able to help each other with solving the problems and overcoming the bugs they would encounter, as well as valuable instructions for how to accomplish certain tasks; like cloning a skeleton and assigning different sprites to the clone, for instance. This would become incredibly useful for me during this project.

I used the tutorials on YouTube referred to by Spriter to learn how to animate the character using the skeleton. In Spriter there is a timeline going from left to right. By moving or rotating bones in the skeleton the animator can add frames on that timeline. If there are two frames on different marks in the timeline Spriter will blend the space between those two frames, and the bones from the left frame will move so that they match their position and rotation in the right frame, moving the shortest distance necessary to align.