Animation Programming

An animation programmer builds systems that control, blend, and synchronize character animations with gameplay, ensuring smooth, responsive movement.
I worked as the lead animation programmer on Mickey & Minnie Mouse on a Disney-licenced artwork as well as Baron Nashor on a League of Legends: Wild Rift game for Riot Games.
I have also worked on Our Life On Water for Different Tales/Focus Entertainment.

Case Study: Our Live On Water

I used all the below techniques during the development of Our Life On Water. Unfortunately, Focus Entertainment pulled their investment out of the project and the project was binned.

There were 4 core poses; Standing, Sitting, Crouching and Lying Down.

My work was purely on producing a robust and stable backend. A second round of mocap was planned before beginning frontend animation (how the animation looks and feels).

The player could climb, swim, row a boat (from multiple poses and all directions) and jump between platforms and onto boats.  The player could also be involved in group dialogues and perform daily routines.

I added animation functionality to the dialogue system that the narrative team worked with daily. This consisted of automatic dialogue animations with the option of specifying specific animations. The automatic animations took context from emotion, age and gender.

Designers placed action points around the map, which NPCs would assume during their daily routines or in quests.

The accompanying videos are those that I was allowed to share. They were taken during early production; so out of date but help to get the point across.

Warping Techniques

Techniques that modify or adapt existing animations to better fit gameplay or procedural constraints.

Matching Techniques

Techniques that select, align, or match animations based on pose, timing, or gameplay requirements.

Supporting Systems

Systems that enable, assist, or enhance techniques like matching, warping, or blending.

Locomotion Pose Warping (Umbrella Term)

Process of dynamically altering or interpolating a character’s pose. It adapts to real-time changes in terrain, obstacles and targets.

Orientation Warping

The automatic separation of upper body and lower body when the upper body should face a different direction to the direction that it is moving in e.g. strafe.

Stride Warping

Where motion data is built into the animation and spacing of the feet is auto-calculated based on current motion speed. This is used generally for walking and running.

Acceleration Warping

The automatic rotation mainly of the upper body to lean into or away from the direction of movement when there is a sudden change of speed e.g. starting/stopping.

Slope Warping

The placement and rotation of feet based on floor normals e.g. up and down hill or uneven ground.

Bank Warping

The automatic rotation mainly of the upper body to lean in a certain direction e.g. changing direction whilst moving.

Distance Warping

Procedurally modify the playback of an animation so it stretches or compresses in space to hit a distance target.

Motion Warping

The automatic adjustment of the root to better fit the desired target orientation/position without overshooting or snapping e.g. opening doors, or climbing ladders. Warping Windows are added through notifies on the clips.

Look-At/Head Warping

Rotates eyes, neck and spine bones to look at dynamic points of interest or nearby characters. Useful for dialog.

Hand/Two-Hand IK Warping

Adjusts arm positions for weapon grip or object interaction.

Distance Matching

Ensure that the timing of an animation (usually root motion) matches the distance to a target in the game world. Where motion data is built into the animation and keyframes are extracted based on the desired pose using distance curves (from or to a target) instead of the animation time. This is used generally for stopping, starting, landing and taking off where a precise sample of the animations needs to happen.

Motion Matching

A database of poses and every few frames the animation system will try to find the best-fit pose to play from based on the current pose and desired trajectory.

Time Matching

Ensures precise timing of transitions, useful for syncing to gameplay (e.g., combat moves).

Interaction Matching

Syncs animation to dynamic objects or positions (e.g., align hand to grab lever).

Pose Matching

Finds and transitions to a pose that matches a desired goal pose (e.g., sitting pose before entering chair).

Locomotion Matching (Umbrella Term)

Process of selecting an animation that is based upon the predicted locomotion.

Trajectory Matching

Aligns movement animation to match a predicted trajectory (e.g., turning around a corner).

Gait Matching

Selects appropriate locomotion style (walk, jog, run) based on movement speed.

Emotion Matching

Selects animations that reflect emotional state (e.g., aggressive idle vs scared idle).

Inverse Kinematics (IK)

Solves joint chains (e.g., legs or arms) to reach target positions. Used for foot planting, hand placement, reaching and aiming.

Edge Detection

Raycasts or traces to detect the edge of terrain and platforms. This helps predicts jump locations or can push the player back to prevent them falling off when entering under a certain threshold.

Sync Groups

Used to automatically synchronize the related animation’s lengths and playback during the blend. This can be useful when blending between walking and running cycles of different lengths.

Group-Based Syncing

Group animations in the AnimGraph together by name.

Graph-Based Syncing

Applies a single Sync Group to various sub-graphs and child nodes.

Marker-Based Syncing

Synchronize playback based on the relative position between markers placed along the timeline of animation sequences.

This can be useful for a variety of blending conditions:

  1. When general body movement does not have a matching number of steps. For example, when blending a run cycle that has the right foot touching the ground four times, and the walk cycle’s foot only touches the ground two times.
  2. When the stride lengths are not the same. For example, when blending a time-rigid marching walk animation to a time-loose scramble running animation.
  3. When blending with non-looping animations, such as run and walk starts and stops. Additionally with this case, the start and stop animations should be set to Always Leader.