In this week's Dev blog, we discuss a major animation overhaul we have been working on, this work will affect how smooth and polished the game feels, adding immersion to the character while interacting with the world. The player needs to be able to get lost in the gameplay and feel as if the character they are playing is not simply a pawn, but an extension of the player themself.
This update will be a large step towards full release, we have prepared this blog full of information on what this work entails, and we are happy to provide yet another inside look into Fault development!
In order for our character workflow to stream data in & out smoothly, but also to limit the art, technical art, and programming time spent per character in our pipeline, the number of movement animations used in our use case received a trim compared to what is used in a typical third person shooter.
For instance, most main characters (and also main AIs) in story-based third-person shooters have walk, run and sprint animation packs. Due to the rare movement speed variations (slows & boots) in Fault, we decided to take the art compromise of not using the travel mode & walk animations found in some heroes’ assets. This is where Speed Warping shines.
Another instance would be that blending forward running and left strafing (or backward running and right strafing) together can cause some weird leg clipping using UE4 Animation Blendspaces for direction blending. This is where Orientation Warping shines.
Despite the semi-static movement speed in Fault, there are still some use cases where we might need to limit the hero asset’s “slide effect” while they’re running at low speed but still using the full-on jogging animation. This usually happens when the player uses a controller and slows down with their left analog stick or when a slow CC is in effect.
To fix this issue, we can vary the actual speed of the animations, but any value that goes on top of 1.1x or 1.2x (& vice-versa) the initial speed of the mocap makes it look either extremely sped-up or boringly slowed down in an action-based game.
In order to keep the dynamism and fast pace of the animations, speed warping is used to widen or narrow the stride of the character’s steps during any movement animation.
Since the characters can not only move forward, right, left, and backward but can also move in any mix of those with analog or keyboard input, it is necessary to have a direction blending solution that can seamlessly blend between all of them.
In a typical UE4 animation setting, we would use blend spaces as a way to change directions, as it is just a matter of plug-n-play. You add your forward, right, left, backward animations and the engine takes care of blending the cases that fall in-between seamlessly. Yet we can notice in the video showcase when blend space blending breaks (fwd/left & bwd/right).
Orientation warping has been introduced as a dynamic way to fix this problem without manually adding two totally new animations for the broken cases, which can quickly scale up to be countless hours spent by animators instead of a solution that always applies to any creature that moves in the 4 cardinal directions (N, E, W, S)
Lowering the movement animations directions from 6 to 4 doesn’t seem like a big problem to focus on, but once scaled up to dozens if not a hundred or more heroes in the future as in other mainstream MOBAs, we can quickly notice the big impact a procedural method has over manually creating new assets.
Orientation Warping works by altering the spine and leg directions depending on the difference between your main cardinal movement direction and velocity.
Let me explain using a QWERTY layout keyboard as an input method for this example :
[ Orientation Warping Angle: Velocity Angle - Cardinal Direction. ]
These resulting degrees are the same because the velocities for both W&A and S&D are parallel to one another, sharing the same direction but having opposite scalars.
Due to the near-instant responsiveness that Fault requires as a competitive game, characters can suddenly and quickly shift directions, this change causes a big variation in both acceleration (dictated by player input) and velocity.
Lean warping is a technique that has been introduced in order to dynamically shift the character’s weight depending on the change in movement direction that can be caused by both turning your mouse/ Right analog or switching directions entirely with WASD/Left analog.
In order to have a believable stop that doesn't result in a slide back to the forward facing idle animation we have, we decided to dynamically add the idle animation on top of the stopping movement. The gradual blending on the idle animation increases as the player character’s velocity decreases.
At a full stop, the full idle animation runs on top of the final pose of the “run_stop” animation. This enables the character to keep their pose towards the last direction they were moving towards.
Distance matching is an advanced animation technique that is designed to evaluate the character’s velocity and use it to drive the animation following baked animation data queried during mocap recording.
In each movement animation, there’s a distance animation curve that contains multiple keys, each key gives the distance reached at a certain time during the motion capture.
By querying the distance traversed by the character during movement start or by predicting when the character will stop or pivot, we can dynamically run those animations on a frame-by-frame basis to give the most realistic result possible.
By using Distance Matching on compatible heroes that have the distance curve data baked into their animations, we can reach a really high level of animation fidelity.
Distance Matching is currently used when:
We use IK to finalize the application of both:
We will use IK in the future to most likely simulate weapon collisions with the world (limiting clipping of characters through walls, especially during melee attacks) or for future creatures/characters.
Most of the features discussed above are already implemented in an experimental state. Keep in mind that the animation system in Fault is nowhere near its full release version and is currently being actively developed in parallel with many other gameplay and art features needed for the game to reach its envisioned potential.
We would also like to announce that we plan to begin monthly posts on top of our dev blogs to keep everyone fully updated on our progress and plans, we will begin these posts soon and they will replace our Trello as our new form of official roadmaps.
The production team is focusing on many things as we lead up to full release, including the animation overhaul, item rework, and HUD. This could mean that things like cosmetics and new heroes may not release during the month of November, as we buckle down to ensure we get all the needed changes and awesome content in players hands as soon as possible.
The absolute best way to keep up with the community, devs and news. Join our Discord channel for all the info about Fault.
We'll keep you in touch with any new announcement on our Twitter feed such as patch notes, dev streams and more.