THE ANIMATION QUEST
By Aerisarn and CuteZergling
Animation is about creating the illusion of life. And you can't create it if you don't have one.
As all of you can imagine, creating animations for skywind is a real challenging task. The modern Skyrim engine allows for much more than Morrowind’s one was intended to, and making real reinterpretations of the original creatures and game mechanics is both an artistic challenge, for what, if you follow our blog, we’re definitely well equipped, and a technical one, particularly so due to the fact that authoring new content for the skyrim engine was mainly intended for 3d assets and quests, not for animations and whole new creatures.
When I was assigned with the task of modifying the cliff racer behavior, at first I nearly fainted: there were no examples, no documentation, not a simple entry point: How am I supposed to do such a thing without any direction available? It reminded me of some ancient times when I was a kid playing EOB2 (a dungeon game without automapping), for the sole purpose of enjoying the game dynamic itself: try, fail, try harder. And so I did.
This blog post is about the skywind animation team’s journey into the skyrim engine: to explore strange new worlds, to seek out new life and new animations, to boldly go where no modder has gone before. As we were trying to bend the engine to our will using strange and complicated techniques, we technical artists were called wizards.
1. The Skeleton Mystery:
Any animated object, creature or placeable, has to be animated defining a set of moving bones which actually performs the movements, being coupled (skinned) to the related mesh. Sadly, no tool was available to us poor modders to do a new skeleton in a sane way: most modders just resort to skeleton morphs (just original bones scaled as less as possible due to animations going nuts). T’was our task to do such a thing, in order to make new creatures truly feasible: after a lot of headaches, a new NIF plugin was born that ensure rapid skeleton prototyping. Here’s a sample:
2. The Ragdoll Havo(k)c Horror:
Skeletal animation is nice, but skywind’s engine allows for much much more: a second skeleton, coupled with a simple version of the creature mesh, to calculate real time moving collisions and physics reaction. Ragdoll, for short, is a physical representation of rigid bodies interconnected by contraints: all that jazz, all that math. Sadly, once again NIF plugin wasn’t up to the task: while able to import collisions, it was never intended to represent the data needed to express, for example, how much the leg is able to rotate with respect to the hip. This time was not just about fixing the output from Max, but creating a whole new import/export routine to add this data to the bone skeleton, and then be able to export it both in the NIF and the HKX format; yes, to make things simpler, Beth decided to replicate this data in both its Gamebyro file format and Havok proprietary format. But Skywind won’t bend to difficulties, and once again, after a LOT of trial and error which made us feel like we were coding our way out of an old haunted house, we were successful. Behold the Cliff Racer ragdoll, in all its glory.
3. To Be is to Behave:
In our journey into the undocumented, we reached the point where the animations have to be glued together to the game logic to make the creature move, attack, ando so on. The skyrim engine use the Havok Behavior middleware to decouple game logic from animation logic, and these behaviors have posed quite the challenge to us wizards and to the community at large, testing our every drop of patience and resolve trying to understand how they are defined and how they work. Behaviors are, simply put, a collection finite machines that govern which animation will be played at a given time or event. Since no tools or documentation has been provided by Bethesda regarding how animations actually work in Skyrim, we had no other choice but to reverse engineer our way into the Havok project files, relying on trial and error and Hansel & Gretel tactics.
The problem with the behavior files was that they were compressed into an unreadable/ unintelligible Win32 binary format, so we were forced to convert those to XML, a format that is much more understandable in comparison. After conversion though, editing the behavior files manually posed a great risk of error ( a behavior XML file easily goes over 2K lines), that’s why Aerisarn, the master wizard, wrote a library in Java that was specifically designed to navigate, edit and view the tree in the XML file with ease and eliminated all worry of error … at least from editing the tree part. Working with behaviors, and coding in general for that matter is summed up quite well by the Gif below.
Why? Because when something goes wrong, you don’t really know what causes it and when you finally fix it, other problems arise where previously there were none … and the cycle continues.
But, creating behaviors for custom races, in essence, isn’t that complicated: we base our new creature on an existing Skyrim skeleton / behavior and then add or remove certain animations from the behavior file. That’s how our Guar was born; even if not perfect, we successfully edited an existing behavior to make the puppy behave (almost as intended).
That was not enough for our artists: some of the creatures we need require not only a custom skeleton, but a custom behavior as well; that’s why our research team went further and adapted the output of an old version of the Havok Behavior tool to Skyrim, to accommodate for completely new behaviors as well.
With such tool in our hands, we felt like our journey was complete, but…
4. Did we miss something?
If you’re an animator, or simply searched the depths of the net about new animations in skywind, you surely found out the problem: where is the movement data in skyrim’s animations? Using the famous hkx-cmd, the data is (almost) missing.
After much pain, we discovered that the data is… Elsweyr.
Bethesda surely rushed over the commercialization of the game enough to leave some things in disarray, animations particularly so. In the last months of 2016, we solved this mystery too, and we were able to test a creature from scratch, without the need of additional help like SKSE, FNIS or such.
...and what now?
2017 will be a very exciting year for our department; our wizards are working tirelessly to give animators a leaner workflow and to change the way the game itself is played, acting on the player behavior. We have now the means to innovate as much as possible the gaming experience and insert all kinds of contents, and we are very determined to do so.
We leave you with a little clip. Happy New Year, folks :)