One staple of the Nightingale announcement trailer was a very dynamic swing while gliding - hoping to reproduce this motion and make an umbrella glide that didn't feel like a pre-canned animation (and that truly
responded to player input) I built a custom component to handle player swing while in the glide state. Not wanting to rely on an entirely physics-driven setup, which can be unpredictable, I created a hybrid setup
which took input from a simple physics constrained dummy (activated only when gliding), which I used to drive a custom blueprint rotation setup for the skeletal mesh. The blueprint setup could have a custom pivot
point specified in local space (to accommodate different size/shape gliders), and would rotate the player character skeletal mesh around that pivot simulating the physical swing on the character without rotating
the player capsule.
For the animation on the body I created a series of swinging poses for the full body, as well as an additional set of additive poses for the legs to simulate the overlapping / layered motion they'd have when
swinging. The full-body poses were driven by angular velocity, while the additives were driven by a simple spring float setup to give them a nice feeling delay behind the body poses. Custom traces are done while
gliding to predictively detect a landing and alpha out any body rotations, so the player lands upright without an unsightly snap.
Climbing in Nightingale was unique to systems I've built in the past because it needed to be fully supported in first-person view. I helped design the initial logic for the system along with our Animation Programmer,
and took over full ownership of the system once our AP departed. On the design side I handled adding functionality to GAS abilities (to support advanced movement like exiting onto ledges, attaching from
ground/in-air/grapple hook), replication, and expanding the Camera Constraint and Head Simulation setup to better support first-person.
On the Animation side I did all animations and graph work required for the system, which consisted of a fairly flat stateflow with several transitions tracking the player's movement between body positions/directions and their
mirror state.
The system was concepted as a 'point-to-point' movement system, so rather than smoothly sliding the character along the climbing surface the system looks forward in the desired direction of movement and finds a valid point up
to a set maximum distance, then transitions to that point via the transition animation and motion-warping. This gives players a free-form movement that doesn't require manual markup on climbing assets while also not feeling like
you're attached and sliding along the surface. I would have loved to have gotten to finish this, but ultimately the system was de-prioritized and the point-to-point logic never finished before Early Access launch.
For Nightingale we needed a way to give animators the ability to animate the camera shake while giving players the option to turn down or remove the motion entirely in settings. To solve this, I created
a custom PlayerCameraManager in UE4 with advanced constraint modes that could manipulate the camera at runtime to have it follow any bone (location only or full transform), along with options to limit the camera's
rotation along pitch and yaw rotation. It could be driven by curves in an animation or via custom AnimNotifyStates to dynamically control the constraint weights and rotation limits, and would smoothly interpolate back to
base camera transform and functionality when disabled.
Later in the project we realized we needed more advanced motion on the camera to simulate the head and neck movement when looking down, especially during climbing in first-person. I amended the PlayerCameraManager
to have optional head simulation offsets, all driven by curve values from the Animation Graph without any need to add or animate special head rigs in the first person. These curve-driven values allowed animators
to adjust how the camera translated in independent X/Y/Z channels when looking away from a configurable neutral rotation value. This allowed the first-person climbs to re-use the 3rd person climbing animations
without unsightly clipping as the player looks around, and helped eliminate clipping issues in normal first-person when looking down.
A late change to the inventory design on Nightingale made it so that players could equip two independent items at the same time, prompting me to quickly refactor our third and first-person graphs to support the new functionality. This update allowed the 'off-hand' overall motion to be driven by animations on the main-hand, keeping us from having to create special offhand animations for existing actions like attacks.
The desire to have a weightier feel to the weapons in first-person prompted me to create a component to drive a slight procedural delay on the first-person arms. The system is fully configurable for the amount of delay, bounce back response, recovery time, 'dip' amount, and can be either set on the item's Data Asset or controlled via curves in the animation. It has configurable profiles for each alertness level, allowing items to have a custom feel in different modes (such as having zero delay when aiming).
In the early development of Nightingale (early UE4) there was a desire to provide a central repository for Animators to link all of their animations for a particular character/weapon/item to make it easier to track and complete. At the time there was no way to link external graphs, or template them, so I created an 'AnimBank' setup to fit this purpose. It had the ability to asynchronously load new animation banks at runtime, and smoothly blend between new banks rather than popping or requiring transition animations. The system was intelligent, only requiring a base 3 animation poses to get an item holdable by the player, but providing a full range of optional animations that would only be used if they were present in the bank. This allowed Animators to work iteratively, checking in their progress daily without breaking the item in-game if they didn't have every animation.
For Anthem I worked on much of the early character movement prototyping for the player characters (ground, flight, and swimming) through the various stages of the games evolution. This includes several movement modes which were removed prior to launch, such as climbing, sliding, and an early gliding system which evolved into full flight. These tasks involved creating the required animations and stateflow setups, while working with designers to get things feeling and playing correctly in Frostbite. The prototype flight and swimming systems were further polished by the Austin team to the final versions that shipped while Edmonton shifted focus on creature work.
Anthem was the first BioWare title to start making use of EA's Motion/Pose-Matching setup, and I was tasked with getting large creatures like the Ursix running on the new tech. This task required hand-keying all the required animation 'dance cards' the system needed to work, building out the required engine-side assets, and tweaking/refining until the motion was smooth. Before departing BioWare I had also begun moving the 'High-Dragon' to the system as well (for DA4).
For DAI I handled all player and party traversal tasks and worked with engineering on implementing advanced traversal techniques like mantles/vaults. This work included hand-keying all non-combat movement animation for masculine/feminine body types and building/maintaining all stateflows for the characters.
Along with the player and party work I also handled many of the Large Creatures in the game as well - most notably the High Dragon. This work involved creating the creature's movement animations and base movement stateflows, as well as working with Design and Engineering on advanced and boss type behaviors.
Along with player and enemy animation work I also built and maintained most of the state flows used in the game.
After Fracture's release I was shifted to a small prototype team which was tasked with creating multiple prototypes for major publishers. Most of these prototypes were then taken to vertical slice with the intent of going fully into production. During this time, I worked with engineering to help improve the studio's internal engine to support advanced animation techniques, and built multiple fully-functioning systems such as advanced 3rd-person climbing (inspired by Assassins Creed) and 3rd-person cover mechanics (Gears of War).