Skip to content

Motion 2.0 Preview 2

This version represents the production-ready release of Motion 2.0's universal compatibility architecture. It delivers on the promise of working with ANY ACharacter subclass without inheritance requirements, while providing robust multiplayer support and seamless GAS integration.

DANGER

IMPORTANT: Motion 2.0 Preview 2 is a complete architectural redesign and cannot be used to upgrade existing projects from ANY previous version (including Preview 1).

This is a breaking change that requires a fresh integration. However, the new architecture makes future updates much simpler.

Universal Compatibility Achieved

Motion 2.0 Preview 2 successfully implements true universal compatibility:

  • No Inheritance Required: Works with ANY ACharacter subclass - just add Motion components
  • Standard UE5 Components: Uses standard UCharacterMovementComponent and UAbilitySystemComponent
  • Pure Component Composition: All functionality delivered through modular components
  • Automatic Discovery: Components automatically find and integrate with required actors/systems

Component Architecture

Base Component System

  • UMotionComponentBase: Foundation for all Motion components providing:
    • Automatic ASC initialization with retry mechanism (up to 20 attempts)
    • Input binding with retry system for multiplayer timing issues
    • RPC validation and rate limiting for security
    • Integrated camera curve management
    • Automatic component caching and discovery

Movement Components (All C++ with Blueprint exposure)

  • UMotionBreathingComponent: Velocity-based camera breathing effects
  • UMotionWalkComponent: Base movement speed and acceleration management
  • UMotionSprintingComponent: Advanced sprint system with stamina and direction validation
  • UMotionJumpComponent: Multi-jump support with coyote time and server validation
  • UMotionCrouchingComponent: Hybrid crouch system with smooth transitions
  • UMotionMovementSoundComponent: Surface-based audio with MetaSound integration

GAS Integration

  • UMotionAttributeSet: Comprehensive attribute set with automatic CMC syncing

    • Movement: WalkSpeed, SprintSpeed, JumpVelocity
    • Stamina: Stamina, MaxStamina, StaminaRegenRate
    • Direct sync to CMC properties via PostAttributeChange
    • Full replication support with proper attribute macros
  • AMotionPlayerState: Required for GAS persistence across respawns

    • Owns the AbilitySystemComponent for proper replication
    • Handles attribute initialization and persistence
    • Compatible with any GameMode (just set PlayerStateClass)

Enhanced Camera System

  • UMotionCameraComponent: Advanced first-person camera with:
    • Integrated curve evaluation system (location & rotation)
    • Smooth collision detection and recovery
    • Support for additive camera effects from all components
    • Optimized tick groups for performance

Multiplayer Improvements

Client Prediction & Server Reconciliation

  • Hybrid Movement System: Combines UE5 built-in movement with custom timeline smoothing
  • Immediate Response: Client-side prediction for all movement actions
  • Server Authority: Server validates all state changes to prevent cheating
  • Smooth Reconciliation: Prediction state tracking prevents rubberbanding

Network Optimizations

  • GameplayEffect-based Tag Replication: Efficient state synchronization
  • RPC Rate Limiting: Prevents network spam and exploits
  • Smart Landing Detection: Resolves jump count synchronization issues
  • Attribute-based Speed Sync: Direct CMC property updates via GAS

Stamina System

  • Hysteresis Prevention: Smart exhaustion handling prevents sprint cycling
  • Smooth Regeneration: Configurable delay and regen rate via attributes
  • Multiplayer Ready: Full replication through GAS attributes

Critical Bug Fixes

Multiplayer Issues Resolved

  • Fixed infinite jump exploit through proper server-side validation
  • Resolved RPC processing failures preventing server execution
  • Fixed sprint/crouch state conflicts causing animation issues
  • Eliminated capsule sync issues causing camera stuttering
  • Fixed GameplayEffect application failures on clients

Movement System Fixes

  • Eliminated camera position jumps when crouching
  • Fixed multi-jump direction using character velocity instead of input
  • Resolved coyote time double-declaration
  • Fixed stamina not properly sourcing from GAS attributes
  • Corrected crouch speed penalty application

Input & Initialization

  • Added retry mechanisms for input binding in multiplayer
  • Fixed ASC initialization race conditions
  • Resolved component discovery timing issues
  • Added validation for all RPC requests

Included Gameplay Effects

Motion 2.0 Preview 2 includes pre-configured Gameplay Effects for all movement states:

Movement Speed Effects

  • GE_Motion_WalkSpeed: Base walking speed modifier
  • GE_Motion_SprintSpeed: Sprint speed increase
  • GE_Motion_CrouchSpeed: Crouch speed reduction
  • GE_Motion_JumpVelocity: Jump height modifier

State Tags

  • GE_Motion_Walking, GE_Motion_Sprinting, GE_Motion_Crouching, GE_Motion_Jumping
  • GE_Motion_WantsToSprint, GE_Motion_WantsToCrouch, GE_Motion_WantsToJump
  • GE_Motion_BreathingActive: Camera breathing effect state

Stamina Effects

  • GE_Motion_SprintStaminiaDrain: Continuous stamina consumption while sprinting
  • GE_Motion_SprintStaminiaRegen: Stamina regeneration when not sprinting
  • GE_Motion_SprintStaminiaRegenDelay: Delay before regeneration begins

Migration Guide

To integrate Motion 2.0 Preview 2 into your project:

  1. Remove Previous Versions: Delete all previous Motion content
  2. Install Fresh: Add Motion 2.0 Preview 2 to your project
  3. Configure GameMode: Set PlayerStateClass to AMotionPlayerState::StaticClass()
  4. Add Components: Add desired Motion components to your character class
  5. Setup Input: Bind Enhanced Input actions to Motion components
  6. Configure GAS: Motion components will automatically integrate with your ASC

Known Issues

Motion - Advanced First Person Character Controller