Unreal Engine: Character Movement

With last week’s visual and audio effects wrapped up, this week was all about how players actually move: the Character Movement Component (CMC) – the machinery that’s been quietly doing all my movement work since week two – and the Mover Plugin, the experimental system slated to eventually replace it.
There’s also a link to a repository demonstrating the practical half of the week: implementing wall-running.
Commits for this week:
- Character animation demo repository: sawnoff-studios/character-animation-demo
- Wall-running demo: sawnoff-studios/wall-running-character-demo
Notes below – with the caveat that much of this week’s content is drawn more heavily than usual from the course material itself.
The foundation of player movement in Unreal Engine is the Character Movement Component (CMC), a sophisticated system that handles character locomotion, physics interactions, and network replication. Understanding this component is crucial for creating responsive and engaging player movement.
The Character Movement Component is an actor component that resides within the Unreal Engine character-based class. Its primary function is to take input vectors, typically from the character, and use these to manipulate the character’s transformation – effectively determining how the character moves through and interacts with the game environment.
Core Functionality
The CMC governs an array of movement states – walking, running, jumping, flying, and swimming – providing seamless and realistic movement dynamics for characters. Its notable advantages:
- Advanced physics and collision handling – accurately simulates physical interactions so movement responds naturally to the world
- Network-ready movement with client-side prediction – smooth, responsive multiplayer movement that predicts the character’s position before the server confirms it
- Automatic navigation over steps and slopes – characters traverse uneven terrain smoothly, without manual intervention
- Integration with navigation systems – works with navigation frameworks for pathfinding
- Support for custom movement modes – adaptable to bespoke movement styles for specific gameplay
- Root motion and replay compatibility – animations can drive movement, and recorded movement replays accurately
When to Extend the CMC
Developers extend the CMC to introduce custom movement mechanics beyond the defaults:
- Advanced movement mechanics – wall running, dashing, or unique gravity effects
- Multiplayer games – handling server-client interactions, preventing cheating, and ensuring smooth networked gameplay
- Non-standard characters - tanks, birds, and other non-humanoids need tailored movement
Game Feel
The CMC allows fine-tuning of movement responsiveness, weight, and fluidity. Speed, acceleration, and deceleration influence whether movement feels snappy or sluggish; gravity, jump velocity, and air control determine the weight of airborne motion; friction and braking values affect whether movement feels tight or slippery.
Different genres call for different tunings:
- Fast & responsive (FPS, platformers) → high acceleration, high air control, low deceleration
- Realistic & weighty (survival horror) → low acceleration, low air control, high deceleration
- Floaty & exaggerated (sci-fi shooters, zero-G) → low gravity, high air control
Extending the CMC
Beyond the standard modes (walking, swimming, falling, flying), the CMC can be extended with custom movement modes such as sliding, climbing, and wall running – though this is challenging, and making a custom mode replicate correctly adds another layer of complexity.
The main steps:
- Create a custom movement component class inheriting from
UCharacterMovementComponent - Create a custom movement mode enum
- Add configurable properties
- Override the
PhysCustomfunction - Override relevant virtual functions
Mover Plugin
The Mover plugin is an experimental tool for modular actor movement with rollback networking, leveraging the Network Prediction Plugin or Chaos’ networked physics. Also known as the Character Motion Component, it aims to let developers create complex motion behaviours without deep networking expertise – and is positioned as the next-generation approach that will eventually replace the CMC.
Key differences:
| Character Movement Component | Mover | |
|---|---|---|
| Actor type | Must be ACharacter | Any AActor |
| Collision | Must be capsule | Box, sphere, capsule - any |
| Non-standard modes | Via the “Custom” movement type | Movement modes added/removed dynamically via code |
| Extension | C++ | C++ and Blueprints |
The Mover system comprises the MoverComponent (managing movement and state queries), movement modes defining behaviours like walking or climbing, and layered moves – temporary movement influences such as forces or root motion. It supports transitions for mode switching, composable inputs and states, and is actor-type agnostic.
Its main goals:
- Support all actor types, not only characters
- Let gameplay programmers focus on movement rather than networking complexity
- Improve extensibility through modularity, empowering non-engineers to craft their own movement
Outro
This week felt less like learning a feature and more like being handed the map of something I’d been using blind. The CMC has been carrying my characters since the first project – it’s sobering to learn that MaxWalkSpeed tweaks I treated as tuning knobs are the tip of a subsystem that handles prediction, replication, and slope navigation before breakfast.
The interesting tension is that the course teaches the CMC deeply and introduces Mover as its eventual replacement. My takeaway: the concepts transfer – movement modes, prediction, the physics of feel – even if the implementation details churn.
Related Posts
2025-08-20
2025-08-06
2025-07-30