The Spell-Zerker: Part 1
Since the start of June, I've had several different sources make it clear to me that, in order to successfully pursue a career in game animation, I would need to up my game when it comes to getting my animation work set up in-engine. And by "up my game," I really mean "get anything done at all."
I'd done some in-engine animation setup in Unreal Engine 4 during my time at Champlain, so I wasn't entirely unfamiliar with the setup and process, but anything more complex than a 4-direction-and-idle locomotion blendspace and a single-button-press attack was beyond me. During my senior captsone, I'd been lucky enough to have a dedicated AO programmer on my team who took on the responsibility of actually implementing the animations I had made, but that had left my technical animation skills woefully underdeveloped.
Still, there's no time like the present, so I forged ahead, and decided to use some basic first-person attack animations from my senior reel as the basis for a full gameplay suite in Unreal Engine 4.23. With the help of lots of tutorials and Unreal's excellent documentation, by the end of June I had a four-animation-and-idle locomotion blendspace, as well as the attack animations implemented with new camera-shake and in-engine VFX. Well, look - turns out this wasn't as terrifying as I thought it would be!
Still, I wanted to do more. During my downtime, I sketched out some gameplay elements for a "spellzerker," that would draw upon my love of rad viking stuff and first-person melee gameplay in the style of Skyrim, Dishonored, and Far Cry Primal. I knew I wanted to provide a choice between a sword-and-spell option where the player would wield a Viking sword in one hand and utility magic in the other a la Dishonored, and a "full Palpatine" option where the player uses both hands to hurl spells using the previously-implemented magic attacks.
One key gameplay idea that really stood out in my mind was having that choice be more than just a "weapon switch" - it would be a key gameplay loop, an in-game "statement" that the player would make. The player would begin with the sword-and-spell mode, but could choose to hurl their sword away like Kratos on 2015's God of War, and thus change modes to throwing lightning from their hands. Holding another button would resummon the sword to their hand, switching back to sword-and-spell. In this way, players could choose their gameplay style based on their personal preferences, or their needs in game. Sword-wielders could use the sword as their main ranged attack, hucking it decisively at their targets and resummoning it immediately, while those with a preference for Supreme Chancellors and Thunder Gods could open up an engagement by burying the sword into the chest of the first enemy they see before pummeling the rest of their foes with magic bolts.
To clarify, I don't plan to implement a whole suite of AI enemies, at least not for now. That's a goal for another day! But I'm gonna get this core loop of player gameplay together, because that sounds rad.
Over the last two weeks, I've switched gears to creating and implementing the sword-and-spell gameplay animations. If I can get the logic together to call the animations when necessary, then the vast majority of the framework will be set up, and I can add the actual effects of specific gameplay elements later.
With that in mind, here's the list of animations I've done in some form or another - most at varying levels of "placeholder" quality.
WEAPON MODE BASE LOCOMOTION
WEAPON MODE ATTACKS
WEAPON MODE UTILITY SPELL
One handy thing I've done to make things easy on myself is use several animation layers in Maya that I can turn on and off as needed. I've got one layer with a single keyframe for whether or not the right hand is holding the weapon or not, and three layers with a single keyframe each to shift the direction of the hands for locomotion anims to the left, right, and back. As I figure out more details of Unreal, I hope to shift from using separate anims for each locomotion direction, to additive poses blended on top of the current animations.
As of Thursday the 22nd of July, I fully implemented the animations for the weapon attacks and the utility spell, a time-slow effect that was covered in a tutorial I stumbled across. The logic flow for the controls for the attacks and the spell is set up to perform as envisioned, with each able to be called independently of the other without cancelling or interfereing - you can use the slow-time animations in the left hand while you attack with the sword in the right hand, in any sequence you want. The sword attacks are hooked up to sections in two Anim Montages, one for each attack variant, and the blueprints call one attack per button press, with timing limits to require that each attack's initial "Strike" section is completed before another attack can be performed. While I don't have the 3rd or 4th weapon attack animations created or implemented, the logic structure is such that I can easily extend the current setup to implement them once they're created.
All animations are placeholder.
For my next step, I'll look into how to switch modes and anim blueprints, and hook that up to a single button press, like switching a weapon in a standard first-person shooter. After that, I'll implement the placeholderanimations for the weapon throw as needed, around the necessary functionality for the mode.
So far, I've really enjoyed my work in-engine. There's something truly magical about having your work respond to input and seeing it come to life like your favorite games, and I'm already getting the hang of a lot of the workflow. I was able to complete nearly all of the weapon-mode work using my own knowledge and some quick reference of the UE4 documention, rather than needing to follow a tutorial that I didn't yet understand, and that's a hugely empowering feeling!
Big shout-outs to Jonathan Cooper for his helpful advice and for taking his time to mentor me as part of the ADF mentorship program, and to Xavier Coelho-Kostolny for their inspiring and accessible Twitter threads detailing their own exploration of in-engine work!