Appearance
Quick Start Guide
Hello and welcome! This guide helps you set up Motion 2.0 Preview 3.
Engine Requirement
Motion 2.0 Preview 3 requires Unreal Engine 5.6 or later.
Setup
Add the Plugin to Your Project
- Download Motion 2.0 Preview 3 from Motion's Fab.com page.

- Copy the
MotionCorefolder to your project'sPluginsdirectory - Restart the Unreal Editor
- Enable the plugin in Edit → Plugins → MotionCore
Configure Your PlayerState with Gameplay Ability System (GAS) (Required)
- Motion requires a PlayerState that implements
IAbilitySystemInterfaceor - Use any PlayerState class / blueprint that provides an AbilitySystemComponent
- To get started, you can also just use the
B_MotionPlayerStatethat ships with Motion.
- Motion requires a PlayerState that implements
Set the PlayerState in your GameMode (Required)
- Either use
B_MotionGameModethat ships with Motion or - Add your configured PlayerState class to your GameMode.

- Either use
Load the Demonstration Map
- Open the default demonstration map at
Plugins/MotionCore/Content/Motion/Maps/Default
- Open the default demonstration map at
Using the Pre-made Character
Find the Demo Character
Enable "Show Plugin Content" in the Content Browser to see plugin assets.

- Locate
B_MotionCharacterinPlugins/MotionCore/Content/Motion/Blueprints - This character demonstrates all Motion components pre-configured
- Drag it into your level or set it as the default pawn in your GameMode

Play the Demo
Press Play to test the character with all movement components:
Basic Controls:
- WASD: Movement
- Space: Jump
- Shift: Sprint
- Ctrl: Crouch
- Mouse: Look around
Exploring Pre-made Components
The B_MotionCharacter includes these pre-configured C++ components:
Movement Components
- MotionWalkComponent: Base walking mechanics, movement direction analysis, and walking state
- MotionSprintingComponent: Sprint mechanics with optional stamina management (disabled by default)
- MotionCrouchingComponent: Smooth crouching with collision detection
- MotionJumpComponent: Enhanced jump mechanics with landing detection
Support Components
- MotionCameraComponent: First-person camera with camera animation curves
- MotionCameraEventBus: Central event broker for camera effect communication in Motion
- MotionBreathingComponent: Camera animation when standing still
- MotionMovementSoundComponent: Surface-aware footsteps and movement audio
GAS Integration
- MotionAttributeSet: Movement attributes (speed, acceleration, etc.)
Network Features
- Test with multiple players:
Play->Number of Players: 2 - Select
Play as ClientinNet Modeto test client-side prediction - Movement states properly replicate across clients

Adding Motion to Your Own Character
Add Motion components to any existing ACharacter:
Option 1: Blueprint Setup
- Open your existing character Blueprint
- Add all required Motion components from the Components panel:
- Movement Components (add what you need):
MotionWalkComponent- Base walking speed management (recommended as foundation)MotionSprintingComponent- Sprint with staminaMotionCrouchingComponent- Smooth crouchingMotionJumpComponent- Enhanced jumping
- Support Components:
MotionCameraComponent- First-person camera with curvesMotionCameraEventBus- Required for camera effect communicationMotionBreathingComponent- Idle camera breathing (optional)MotionMovementSoundComponent- Footsteps and movement audio (optional)
- Movement Components (add what you need):
- Set up your Animation Blueprint:
- Create an Animation Blueprint that uses
UMotionAnimInstanceas its parent class, OR - Implement GAS tag-to-variable mapping in your existing AnimBP (strongly recommended for proper state sync)
- Create an Animation Blueprint that uses
- Initialize the Ability System in BeginPlay:
- Call
Initialize Character Ability System with Attribute Set(from Motion Ability System Helper) - Pass
MotionAttributeSetclass (or your own AttributeSet that includes Motion attributes)
- Call
- Configure Enhanced Input bindings to trigger abilities
- Motion components automatically find and integrate with your CharacterMovementComponent

Option 2: C++ Setup
cpp
// In your character header (.h)
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Motion")
TObjectPtr<UMotionWalkComponent> MotionWalkComponent;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Motion")
TObjectPtr<UMotionSprintingComponent> MotionSprintComponent;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Motion")
TObjectPtr<UMotionCrouchingComponent> MotionCrouchComponent;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Motion")
TObjectPtr<UMotionJumpComponent> MotionJumpComponent;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Motion")
TObjectPtr<UMotionCameraComponent> MotionCameraComponent;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Motion")
TObjectPtr<UMotionCameraEventBus> MotionCameraEventBus;
// In your character constructor (.cpp)
MotionWalkComponent = CreateDefaultSubobject<UMotionWalkComponent>(TEXT("MotionWalk"));
MotionSprintComponent = CreateDefaultSubobject<UMotionSprintingComponent>(TEXT("MotionSprint"));
MotionCrouchComponent = CreateDefaultSubobject<UMotionCrouchingComponent>(TEXT("MotionCrouch"));
MotionJumpComponent = CreateDefaultSubobject<UMotionJumpComponent>(TEXT("MotionJump"));
MotionCameraComponent = CreateDefaultSubobject<UMotionCameraComponent>(TEXT("MotionCamera"));
MotionCameraEventBus = CreateDefaultSubobject<UMotionCameraEventBus>(TEXT("MotionCameraEventBus"));cpp
// In BeginPlay - Initialize GAS with Motion attributes
void AYourCharacter::BeginPlay()
{
Super::BeginPlay();
// Initialize the Ability System with MotionAttributeSet
UMotionAbilitySystemHelper::InitializeCharacterAbilitySystemWithAttributeSet(
this,
UMotionAttributeSet::StaticClass(),
true // bLogErrors
);
}Configure Input Bindings
Motion uses Enhanced Input with Gameplay Abilities:
- Create Input Actions for movement abilities or use the ones that ship with Motion.
- Call
Add Mapping Contexton theEnhancedInputof your player controller. - Use
BindSprintInput,BindCrouchInput,BindJumpInputto bind inputs to their respective components

Customization
Adjust Movement Parameters
Each Motion component exposes properties for customization:
- SprintWalkSpeedModifier: Absolute speed value added when sprinting (default: +300)
- CrouchWalkSpeedModifier: Absolute speed value added when crouching (default: -200)
- JumpVelocityMultiplier: Multiplier for jump velocity (1.0 = default)
- JumpVelocityModifier: Additional velocity to add to jumps
Camera Curves
The MotionCameraComponent uses curves for procedural effects:
- Location curves for camera position offsets
- Rotation curves for camera angle adjustments
- Access via functions like
AddMotionCurve(),AddStaticLocationOffset(),AddStaticRotationOffset()

Surface Sounds
Configure the MotionMovementSoundComponent:
- Edit
DT_MotionMovementSoundsDataTable for surface-specific sounds - Supports MetaSound integration for dynamic audio

Next Steps
Create Custom Abilities
- Design new movement abilities using the Gameplay Ability System
- Create Gameplay Effects to modify movement attributes
- Implement custom input bindings for your abilities
Extend Components
- Inherit from Motion components to add custom behavior
- Override virtual functions for specialized logic
- Add new curves for unique camera effects
Optimize for Your Project
- Remove unused Motion components to reduce overhead
- Configure logging verbosity:
log LogMotionCore Verbose
Test Multiplayer
- Enable dedicated server mode for production testing
- Monitor replication with
showdebug net - Validate attribute synchronization across clients
Troubleshooting
Common Issues
Character doesn't move:
- Ensure your PlayerState implements
IAbilitySystemInterface - Check that Motion components are added to your character
- Verify Enhanced Input is configured
GAS not working:
- Confirm Gameplay Abilities plugin is enabled
- Check that your PlayerState creates and owns an AbilitySystemComponent
- Verify attributes are properly granted on your AttributeSet
Camera issues:
- Ensure MotionCameraComponent is attached to character
- Check curve assets are properly referenced
Debug Commands
log LogMotionCore Verbose // Enable detailed logging
showdebug abilitysystem // View GAS stateLearn More
- Architecture Overview - Understand Motion's component system
- Movement Components - Detailed component documentation
- Changelog - What's new in Preview 3
Need Help?
Join the community Discord for support!