Locomotion system design: 2D blend space grid with velocity sample points for walk and run states

Locomotion System Design: Building Movement with Motion Capture

A locomotion system is the beating heart of any third-person or first-person game. It governs how a character moves through the world — walking, running, sprinting, crouching, turning, starting, stopping — and it determines whether that movement feels grounded, responsive, and alive or floaty, disconnected, and robotic. Getting locomotion right is one of the most technically and artistically demanding challenges in game development, and motion capture is the primary tool that makes it achievable at production quality.

This guide covers the complete theory and practice of locomotion system design for game characters using motion capture: the fundamental concepts, the animation setups required, the Unreal Engine and Unity implementations, and the key technical decisions every developer needs to make.

What Is a Locomotion System?

In game development, a locomotion system is the collection of animations, blend logic, state machines, and code that controls how a character moves in response to player input or AI navigation commands. It is distinct from individual action animations (attacks, jumps, emotes) — locomotion covers the continuous movement states: idle, walk, jog, run, sprint, and their directional variants.

A complete locomotion system must solve several interrelated problems simultaneously:

  • How does the character look when moving in any direction (forward, backward, left, right, and all diagonals)?
  • How do transitions between movement speeds look convincing?
  • How do start and stop animations keep the character grounded?
  • How do turns and pivots feel natural rather than mechanical?
  • How does locomotion interact with environmental features (slopes, stairs, obstacles)?

The animation requirements for a AAA locomotion system can easily reach 150–300 individual clips. That scale is only achievable through motion capture — keyframing each of those clips by hand would take months and still not match the naturalism of captured human movement.

Directional Blending

The foundation of most locomotion systems is directional blending — the ability to seamlessly combine multiple directional animation clips to produce movement in any arbitrary direction without needing a unique clip for every possible angle.

The basic concept: if you have a forward walk, a backward walk, a strafe left, and a strafe right, you can blend between them based on the player's movement direction vector to produce a convincing walk in any direction. The blend weights are calculated from the angle between the character's facing direction and the movement direction.

For example, if the player is moving at 45 degrees (forward-right diagonal), you blend roughly 50% forward walk with 50% strafe right. The engine interpolates bone positions and rotations between the two clips, producing a diagonal walk that looks reasonable even though you never explicitly captured it.

More sophisticated directional blending uses more than four clips to reduce interpolation artifacts. Eight-directional setups (adding NE, NW, SE, SW clips) dramatically improve quality at the cost of more capture sessions and more blend logic.

8-Directional Movement Setup

An 8-directional movement setup is the standard for modern third-person character locomotion. It requires the following capture clips at minimum (for a single speed tier):

  • Forward walk (0°)
  • Forward-right walk (45°)
  • Strafe right (90°)
  • Backward-right walk (135°)
  • Backward walk (180°)
  • Backward-left walk (225°)
  • Strafe left (270°)
  • Forward-left walk (315°)

With eight clips covering the cardinal and diagonal directions, the maximum interpolation gap between any movement direction and the nearest captured clip is 22.5 degrees — small enough that blending artifacts are typically not noticeable in gameplay.

In Unreal Engine, this 8-directional set is implemented as a Blend Space 2D, where the horizontal axis is direction (−180 to +180 degrees) and the vertical axis is speed. Clips are placed at their corresponding positions on the grid, and the animation system automatically interpolates between them based on current direction and speed values.

In Unity, the equivalent is an Animator Controller 2D Blend Tree using the 2D Freeform Directional blend mode, which optimizes the blend weight calculation for circular directional inputs.

Start and Stop Animations

Start and stop animations are the transitions between stationary and moving states — and they are one of the most frequently overlooked parts of locomotion systems. Without them, a character appears to teleport from standing still to full speed (or vice versa), breaking the illusion of physical weight and inertia.

Start animations (also called "start steps") capture the moment a character begins to move from idle. A good start animation shows the character's weight shifting, the first foot pushing off, and the body beginning to lean into the direction of movement. Different start directions require different animations — a forward start looks very different from a backward start or a lateral start.

Stop animations capture the deceleration phase — the final one to two steps that bring the character from full speed to standing still. A properly designed stop animation shows the character absorbing momentum, often with a slight forward lean that corrects back to neutral as they halt.

The minimum set for a complete start/stop system at a single speed tier: 4 starts (forward, back, left, right) and 4 stops (same directions), plus optional diagonal variants. Many AAA games capture 8 starts and 8 stops to match their 8-directional movement set.

Pivots and Turns

Pivot animations handle the transition when a player rapidly reverses direction — running forward and then quickly turning to run backward, for example. Without a pivot, the character snaps instantly to the new direction, which looks mechanical and weightless. A good pivot shows the character planting a foot, rotating through the turn, and pushing off in the new direction.

Turn animations handle slower directional changes during locomotion — a wide arc turn when jogging, or an in-place rotation from idle. These are typically implemented as additive animations blended on top of the locomotion cycle, allowing the system to combine a forward run with a left turn additively without requiring a separate "forward run while turning left" clip.

The most important pivot angles to capture are 180° pivots (full reversals) and 90° pivots (right-angle turns). These are the most visually critical and the most likely to look bad without dedicated animations.

Jog, Run, and Sprint Transitions

Most locomotion systems use multiple speed tiers rather than a single continuous speed curve. The transitions between tiers — from walk to jog, jog to run, run to sprint — require careful blending or dedicated transition animations to avoid popping.

In a blend space approach, clips at different speeds are placed along the speed axis, and the system interpolates between them as the character's speed changes. The quality of the interpolation depends on how well the animation cycles are "phase matched" — if the left foot is planted at the same relative point in both the walk cycle and the jog cycle, the blend between them will be smooth. If they are not phase matched, the character's feet will appear to teleport during speed transitions.

Phase matching is achieved in the capture session by having the performer start each speed tier from the same foot and at the same point in the stride cycle. This is one of the most important (and easily forgotten) considerations when setting up a mocap session for locomotion.

Crouch Locomotion

Crouch locomotion systems are a complete duplicate of the standing locomotion set at reduced movement speeds and with the character in a crouched pose. At minimum, this requires a crouch idle, crouch walk (forward, back, left, right), and crouch-to-stand and stand-to-crouch transitions.

The technical challenge with crouch locomotion is the vertical offset — a crouching character needs their entire skeleton shifted downward relative to the standing position. This can be handled through a procedural IK offset or through a dedicated crouch root that shifts the hip bone's vertical position. The choice affects how other animations (like aiming) interact with the crouch state.

Swimming and Climbing

Swimming and climbing are specialized locomotion states that each require their own animation set and blending logic. Swimming involves full-body 3D movement including vertical traversal, and the transition into and out of water needs careful handling (the dive-in and water-exit animations are particularly challenging). Climbing typically uses IK-based hand and foot placement to adapt a base climbing cycle to arbitrary surface geometry.

For most projects, swimming and climbing locomotion are implemented as separate state machines that activate when the character enters the relevant volume or begins the relevant context action, with transition animations bridging to and from the standard locomotion system.

Motion Matching vs State Machines

Traditional locomotion systems use a state machine: a defined set of animation states (idle, walk, run, etc.) connected by transitions with blend conditions. The animator explicitly defines every possible state and every transition between them. State machines are predictable, easy to debug, and work well for games with a limited locomotion vocabulary.

Motion matching is a newer approach, popularized by Ubisoft in 2015 and now natively supported in Unreal Engine 5 as "Motion Matching." Instead of a handcrafted state machine, motion matching uses a database of animation frames and selects the best-matching frame in real time based on the character's current pose, velocity, and trajectory. The system automatically handles starts, stops, pivots, and turns by finding the closest matching animation in the database — no explicit transitions required.

Unreal Engine 5's Motion Matching system (available from UE 5.3 onwards) makes this approach accessible to smaller studios. The key requirements are a large, well-organized animation database (typically 200–600 clips for a full locomotion set) and pose search data baked into the animation assets. The quality of a motion matching system is directly proportional to the quality and coverage of its animation database.

For indie developers: state machines are easier to implement with a smaller clip budget. For mid-to-large studios aiming for AAA locomotion quality: motion matching is increasingly the preferred approach and is the direction the industry is heading.

Blend Spaces in Unreal Engine

A Blend Space in Unreal Engine is a 1D or 2D grid where animation clips are placed at specific coordinates, and the engine interpolates between them based on input parameters. For locomotion, a 2D Blend Space (Blend Space 2D) is the standard setup.

Setting up a locomotion Blend Space in Unreal Engine:

  1. Create a Blend Space 2D asset and set the horizontal axis to Direction (−180 to 180) and the vertical axis to Speed (0 to max speed).
  2. Import your directional locomotion clips as animation assets.
  3. Place each clip at its corresponding direction and speed coordinates on the grid.
  4. Enable "Smooth Transition" for natural blending between clips as input values change.
  5. Reference the Blend Space from your Animation Blueprint and drive its input parameters from the character's velocity vector.

For best results, ensure all clips in the Blend Space are the same length (or the same stride cycle length) and are phase-synchronized. Unreal's Blend Space editor shows a preview of the interpolated result at any point on the grid, which helps identify problematic blends before they reach the engine.

Animator Controller in Unity

Unity's equivalent to the Animation Blueprint is the Animator Controller. Locomotion in Unity is typically implemented using Blend Trees, which are Unity's equivalent of Unreal's Blend Spaces.

Setting up a locomotion Blend Tree in Unity:

  1. Create an Animator Controller and add Float parameters for Speed and Direction.
  2. In the Animator, create a new state with a 2D Freeform Directional Blend Tree.
  3. Add your directional clips to the Blend Tree and position them on the 2D grid by their direction angles.
  4. Set the Blend Tree's parameters to drive from your Speed and Direction float values.
  5. In your character script, calculate the speed and direction vectors from the character controller and update the Animator parameters each frame.

Unity's 2D Freeform Directional blend mode is specifically optimized for circular directional inputs like locomotion, and it handles the edge cases of full 360° movement more cleanly than the Simple Directional mode.

Root Motion vs In-Place Animation Tradeoffs

This is one of the most fundamental technical decisions in locomotion system design.

Root Motion: The animation drives the character's world-space position. The benefit is perfect physical grounding — the character's speed automatically matches the animation's travel distance, so there is never a mismatch between visual movement and gameplay speed. The drawback is that the game engine's character controller must be configured to accept root motion, and blending between clips with different travel speeds becomes complex.

In-Place (Zero Translation): The animation plays in place and the engine's character controller moves the character at a code-defined speed. The benefit is full designer control over movement speed, easy integration with any character controller, and simpler blending. The drawback is that foot slide can occur if the animation's footfall timing does not match the engine's movement speed — a walk cycle designed for 1.5 m/s will look like the character is skating on ice if played while moving at 2.5 m/s.

For Unreal Engine 5's Motion Matching system, root motion is strongly recommended for best results. For traditional state machine-based systems in both Unreal and Unity, in-place animation with careful speed matching is still the dominant approach for most game genres.

Animation Compression

A full locomotion animation set for a AAA game can easily total 500 MB or more of raw animation data. Animation compression is essential to keep memory budgets manageable.

Unreal Engine's Codec settings (Bone Compression Settings and Curve Compression Settings) offer several compression algorithms. The default "Automatic" setting uses an error-tolerant compression that removes keys below a specified tolerance threshold. For locomotion animations, a tolerance of 0.01–0.1 (position) and 0.1–1.0 degrees (rotation) is typically acceptable without visible degradation.

Unity's animation compression is controlled per clip in the import settings. "Optimal" compression uses keyframe reduction and is appropriate for most locomotion clips. Clips that require very precise foot contact timing may need lower compression to avoid artifacts at key contact frames.

For motion matching databases, compression requirements are stricter — motion matching relies on precise pose data for its similarity search, and aggressive compression can reduce matching quality. Use lower compression tolerances for motion matching assets.

FAQ

How many animation clips does a complete locomotion system need?

For a basic third-person locomotion system: 40–80 clips (idle, 8-directional walk/run, starts, stops, basic turns). For a complete AAA locomotion system with multiple speed tiers, crouch states, contextual movement, and motion matching: 200–600 clips. The exact number depends on the game's genre and movement vocabulary.

What frame rate should locomotion animations be captured at?

60fps is the standard for game locomotion animation. It provides sufficient temporal resolution for smooth blending and foot contact precision. 30fps is acceptable for games targeting 30fps on hardware. For motion matching, 60fps is strongly recommended regardless of the target frame rate, as the pose matching algorithm benefits from the higher temporal density.

Is motion matching worth implementing for an indie game?

For a solo developer or very small team, motion matching has a high setup cost (large clip budget, technical implementation complexity) that may not be justified. A well-executed state machine with good blend spaces can achieve excellent locomotion quality. Motion matching is best suited for teams with a dedicated technical animator and a large animation budget.

How do I handle diagonal movement if I only have 4-directional clips?

A 4-directional setup (forward, back, left, right) can produce acceptable diagonal movement through blending, but the quality is noticeably worse than 8-directional — diagonal blends often show foot conflicts and unnatural body posture. If budget allows, adding four diagonal clips is one of the highest-ROI investments you can make in your locomotion system.

What is the best approach for character turns in a root motion system?

For root motion locomotion, in-place rotation turns are the most common approach — the character rotates around their root bone while the root moves forward. The turn animation can be implemented as an additive layer on top of the locomotion cycle, allowing arbitrary turn rates without requiring unique turn-at-speed captures. The rotation rate is typically driven by the angular velocity of the character controller, clamped to a maximum rotation-per-frame value to keep the movement feeling physical.

Build Your Locomotion System with Professional Motion Capture

A great locomotion system starts with great source animation. MoCap Online's library includes professional motion capture packs specifically designed for locomotion systems — walk cycles, run cycles, directional movement sets, starts, stops, pivots, and more, all captured on professional optical systems and delivered in Unreal Engine, Unity, FBX, and BIP formats.

Browse our Walking Animation Packs and Running Animation Packs to find the locomotion clips your project needs.

Related Articles