Skip to content

Feature Overview

This page provides a comprehensive overview of all features available in the Motion, organized by system and component.

Core Architecture Features

FeatureDescription
Universal CompatibilityWorks with ANY ACharacter subclass
No Inheritance RequiredComponent-based, add only what you need
GAS-First DesignAll state via GameplayEffects and tags
Network-ReadyServer RPCs, client prediction, proper replication
Decoupled SystemsEvent bus pattern for camera effects
Blueprint FriendlyFull Blueprint API exposure

Movement Components

MotionWalkComponent

Base walking state management with directional awareness.

FeatureDescription
Automatic DetectionDetects walking state based on velocity threshold (WalkSettings.MinWalkVelocity)
Directional Speed MultipliersForward/backward/strafe speed modifiers for realistic movement feel
Movement Direction AnalysisIsMovingForward(), IsMovingBackward(), IsStrafing() helpers
GAS Speed ModificationGameplayEffect-based speed changes via WalkSpeedEffect
Camera Bob IntegrationOptional WalkCameraEffect curve for procedural head bob
Local PredictionClient-side speed prediction via IsLocallyPredicting() (inherited from base class)
Event BroadcastingDelegates for walking state, direction, and speed changes

MotionSprintingComponent

Sprint speed enhancement with optional stamina system.

FeatureDescription
Additive Speed ModifierSprintWalkSpeedModifier adds to base walk speed
Stamina SystemOptional drain/regen system via bUseStaminaSystem
Stamina Regeneration DelayRegenDelayDuration pause after exhaustion
Hold vs TogglebRequiresContinuousInput for hold-to-sprint behavior
Hysteresis ThresholdsSeparate MinStaminaToSprint and MinStaminaToStopSprinting
Camera ShakeSprintCameraShake curve for sprint feedback
Server RPCServerRequestSprint() with rate limiting
Event BroadcastingDelegates for sprint state, stamina depletion, and recovery

MotionCrouchingComponent

Enhanced crouching with height transitions and collision detection.

FeatureDescription
Enhanced Input BindingManual input binding via BindCrouchInput() for crouch toggle/hold
GAS Speed ModificationCrouchSpeedEffect for crouch walk speed
Capsule Height ManagementCapsuleHalfHeightWhenCrouching configuration
Ceiling Collision DetectionIsUncrouchBlocked() prevents standing into geometry
Camera Height EventsBroadcasts height changes via event bus
Server RPCServerRequestCrouch() with validation
Event BroadcastingDelegates for crouch state, blocking, and transition completion

MotionJumpComponent

Jump mechanics with multi-jump, coyote time, and buffering.

FeatureDescription
Jump Velocity ModificationJumpVelocityMultiplier and JumpVelocityModifier
Multi-Jump SupportMaxAdditionalJumps with AdditionalJumpVelocityMultiplier
Coyote TimeCoyoteTime grace period after leaving ground
Jump BufferingJumpBufferTime queues input before landing
Camera ShakeJumpCameraShake and LandingCameraShake curves
Landing Sound IntegrationbAutoTriggerLandingSound with MotionMovementSoundComponent
Server RPCServerRequestJump() with multicast feedback
Event BroadcastingDelegates for jump state, performed, landed, coyote/buffer expiry

MotionBreathingComponent

Idle breathing camera effect for immersion.

FeatureDescription
Automatic ActivationActivates when character is NOT walking (event-driven via Walking tag)
Camera Curve EffectCameraBreathingCurve for subtle idle motion
Gameplay Tag TrackingBreathingActiveTagEffect for state queries

MotionMovementSoundComponent

Animation notifier-driven movement sounds with surface detection.

FeatureDescription
Animation NotifiersTriggerFootstepSound(), TriggerJumpSound(), TriggerLandingSound()
Physical Material DetectionLine trace for surface type via bEnableSurfaceDetection
Speed-Based ModulationVolume/pitch varies with movement speed
MetaSound SupportSurface sounds configured via FMotionSoundVariants (part of SurfaceSoundDataTable rows)
DataTable MappingSurfaceSoundDataTable (row type: FMotionSurfaceSoundDataRow) for surface sound configuration
3D Spatial AudioFootstepAttenuation USoundAttenuation asset for spatial settings
Master Volume ControlSetMasterVolumeMultiplier() for global adjustment

Camera System

MotionCameraComponent

First-person camera with curve management and height interpolation.

FeatureDescription
Independent Height ManagementCamera height separate from capsule via CurrentCameraHeight
Smooth Height InterpolationHeightInterpolationSpeed for crouch transitions
Motion Curve SystemAddMotionCurve(), RemoveMotionCurve() for procedural effects
Static Offset SystemPersistent position/rotation adjustments via named offsets
Ceiling CollisionCeilingCheckDistance prevents camera clipping
View Angle LimitsViewPitchMin/Max, ViewYawMin/Max, ViewRollMin/Max
Shake Disable TagCamera shake effects disabled when Motion_Camera_DisableShake active

MotionCameraEventBus

Decoupled event broadcasting between movement and camera systems.

FeatureDescription
Curve EventsAdd, Remove, Pause, Resume via EMotionCameraAction
Height EventsBroadcastHeightEvent() for camera height changes
Blueprint DelegatesOnMotionCurveEvent and OnCameraHeightEvent

Animation System

MotionAnimInstance

Animation instance with GameplayTag integration.

FeatureDescription
Tag-to-Variable MappingGameplayTagPropertyMap syncs tags to animation variables
Ground Distance DetectionGetGroundInfo() with frame caching
Automatic ASC DiscoveryInitializeWithAbilitySystem() with retry logic
PlayerState ASC SupportWorks with ASCs on PlayerState

GAS Integration

MotionAttributeSet

Default GAS AttributeSet for movement attributes.

AttributeDescription
WalkSpeedBase walking speed (replicated)
SprintSpeedAdditive sprint speed modifier (replicated)
JumpVelocityJump velocity override (replicated)
StaminaCurrent stamina value (replicated)
MaxStaminaMaximum stamina capacity (replicated)
StaminaRegenRateStamina regeneration per second (replicated)
StaminaDrainRateStamina drain per second when sprinting (replicated)

Helper Functions:

  • GetStaminaPercent() - Returns stamina as 0-1 percentage
  • HasEnoughStamina(float) - Checks if stamina meets requirement

Universal Attribute Discovery

Find and modify attributes on ANY AttributeSet.

FunctionDescription
FindAttributeByName()Get FGameplayAttribute by property name
GetAttributeValueByName()Read attribute value by name
SetAttributeValueByName()Modify attribute value by name
HasAttributeByName()Check attribute existence

Gameplay Tags

State Tags

  • Motion_State_Walking - Character is walking
  • Motion_State_Sprinting - Character is sprinting
  • Motion_State_Crouching - Character is crouched
  • Motion_State_Jumping - Character is in air from jump
  • Motion_State_WantsToCrouch/Sprint/Jump - Input intent tags
  • Motion_State_MovementHalted - Character movement is completely halted
  • Motion_State_StaminaDepleted - Stamina exhausted
  • Motion_State_StaminaRegenBlocked - Stamina regeneration blocked (during cooldown)
  • Motion_State_StaminaRegenerating - Stamina recovering

Ability Tags

  • Motion_Ability_CanJump - Jump ability available
  • Motion_Ability_CanCrouch - Crouch ability available
  • Motion_Ability_CanSprint - Sprint ability available

Camera Tags

  • Motion_Camera_BreathingActive - Breathing effect active
  • Motion_Camera_DisableShake - Suppress camera shake

Attribute Tags

Used for identifying attributes in GameplayEffects and AttributeSet synchronization:

  • Attribute_Movement_WalkSpeed - Base walking speed attribute
  • Attribute_Movement_SprintSpeed - Sprint speed attribute
  • Attribute_Movement_JumpVelocity - Jump velocity attribute
  • Attribute_Stamina_Current - Current stamina attribute
  • Attribute_Stamina_Max - Maximum stamina attribute
  • Attribute_Stamina_RegenRate - Stamina regeneration rate attribute

SetByCaller Magnitude Tags

Used for runtime magnitude customization in GameplayEffects:

  • SetByCaller_Magnitude_WalkSpeed - Walk speed modification magnitude
  • SetByCaller_Magnitude_CrouchSpeed - Crouch speed modification magnitude
  • SetByCaller_Magnitude_SprintSpeed - Sprint speed modification magnitude
  • SetByCaller_Magnitude_JumpVelocity - Jump velocity modification magnitude
  • SetByCaller_Magnitude_StaminaCost - Stamina cost magnitude
  • SetByCaller_Magnitude_StaminaDrain - Stamina drain magnitude
  • SetByCaller_Magnitude_StaminaRegen - Stamina regeneration magnitude

Subsystems & Orchestration

MotionSubsystem (LocalPlayerSubsystem)

Central orchestration for Motion components.

FeatureDescription
Component RegistryRegisterComponent(), UnregisterComponent()
Automatic Ability GrantingGrantMovementAbilities() on initialization
Visual Logger IntegrationLogFloat(), LogVector(), LogAttribute() histogram logging
Component LifecycleSetComponentEnabled() for runtime control
Query FunctionsGetActiveComponents(), GetComponentByClass()

Debug & Development Tools

Gameplay Debugger Category

Real-time component state inspection via showdebug Motion.

DisplayDescription
Component StatesActive/inactive status for all Motion components
Movement ValuesCurrent speed, direction, velocity
Stamina StateCurrent/max stamina, regen state
GAS StateActive gameplay effects and tags
Camera StateActive curves, height, offsets

Visual Logger Integration

Per-frame state logging for Unreal's Visual Logger.

Log TypeDescription
Speed HistogramsMovement speed over time
Stamina HistogramsStamina drain/regen visualization
Camera HeightHeight changes over time
Tag StateGameplay tag additions/removals

Logging Categories

Granular logging control via log <Category> <Level>:

  • LogMotionCore - Plugin initialization
  • LogMotionWalking/Sprinting/Crouching/Jumping - Per-component
  • LogMotionCamera/CameraCurves - Camera system
  • LogMotionReplication - Network synchronization
  • LogMotionAbilitySystem - GAS integration
  • LogMotionVisual - Visual Logger output

Utilities

MotionAbilitySystemHelper

Blueprint function library for GAS operations.

CategoryFunctions
ASC DiscoveryGetAbilitySystemComponentFromActor() - searches actor, PlayerState, controller
Tag ManagementAddGameplayTagToActor(), RemoveGameplayTagFromActor(), ActorHasGameplayTag()
Effect ApplicationApplyGameplayTagEffect(), RemoveGameplayTagEffect()
InitializationInitializeCharacterAbilitySystemWithAttributeSet(), InitializeAttributeSetFromDataTable()
MovementGetPlatformRelativeVelocity(), GetPlatformRelativeSpeed()

MotionCurveFunctionLibrary

Blueprint nodes for curve evaluation.

FunctionDescription
GetCurveVectorValue()Evaluate UCurveVector at time
GetCurveVectorTimeRange()Get curve duration
GetRuntimeVectorCurveValue()Evaluate FRuntimeVectorCurve
GetRuntimeVectorTimeRange()Get runtime curve duration

Motion - Advanced First Person Character Controller