Appearance
Feature Overview
This page provides a comprehensive overview of all features available in the Motion, organized by system and component.
Core Architecture Features
| Feature | Description |
|---|---|
| Universal Compatibility | Works with ANY ACharacter subclass |
| No Inheritance Required | Component-based, add only what you need |
| GAS-First Design | All state via GameplayEffects and tags |
| Network-Ready | Server RPCs, client prediction, proper replication |
| Decoupled Systems | Event bus pattern for camera effects |
| Blueprint Friendly | Full Blueprint API exposure |
Movement Components
MotionWalkComponent
Base walking state management with directional awareness.
| Feature | Description |
|---|---|
| Automatic Detection | Detects walking state based on velocity threshold (WalkSettings.MinWalkVelocity) |
| Directional Speed Multipliers | Forward/backward/strafe speed modifiers for realistic movement feel |
| Movement Direction Analysis | IsMovingForward(), IsMovingBackward(), IsStrafing() helpers |
| GAS Speed Modification | GameplayEffect-based speed changes via WalkSpeedEffect |
| Camera Bob Integration | Optional WalkCameraEffect curve for procedural head bob |
| Local Prediction | Client-side speed prediction via IsLocallyPredicting() (inherited from base class) |
| Event Broadcasting | Delegates for walking state, direction, and speed changes |
MotionSprintingComponent
Sprint speed enhancement with optional stamina system.
| Feature | Description |
|---|---|
| Additive Speed Modifier | SprintWalkSpeedModifier adds to base walk speed |
| Stamina System | Optional drain/regen system via bUseStaminaSystem |
| Stamina Regeneration Delay | RegenDelayDuration pause after exhaustion |
| Hold vs Toggle | bRequiresContinuousInput for hold-to-sprint behavior |
| Hysteresis Thresholds | Separate MinStaminaToSprint and MinStaminaToStopSprinting |
| Camera Shake | SprintCameraShake curve for sprint feedback |
| Server RPC | ServerRequestSprint() with rate limiting |
| Event Broadcasting | Delegates for sprint state, stamina depletion, and recovery |
MotionCrouchingComponent
Enhanced crouching with height transitions and collision detection.
| Feature | Description |
|---|---|
| Enhanced Input Binding | Manual input binding via BindCrouchInput() for crouch toggle/hold |
| GAS Speed Modification | CrouchSpeedEffect for crouch walk speed |
| Capsule Height Management | CapsuleHalfHeightWhenCrouching configuration |
| Ceiling Collision Detection | IsUncrouchBlocked() prevents standing into geometry |
| Camera Height Events | Broadcasts height changes via event bus |
| Server RPC | ServerRequestCrouch() with validation |
| Event Broadcasting | Delegates for crouch state, blocking, and transition completion |
MotionJumpComponent
Jump mechanics with multi-jump, coyote time, and buffering.
| Feature | Description |
|---|---|
| Jump Velocity Modification | JumpVelocityMultiplier and JumpVelocityModifier |
| Multi-Jump Support | MaxAdditionalJumps with AdditionalJumpVelocityMultiplier |
| Coyote Time | CoyoteTime grace period after leaving ground |
| Jump Buffering | JumpBufferTime queues input before landing |
| Camera Shake | JumpCameraShake and LandingCameraShake curves |
| Landing Sound Integration | bAutoTriggerLandingSound with MotionMovementSoundComponent |
| Server RPC | ServerRequestJump() with multicast feedback |
| Event Broadcasting | Delegates for jump state, performed, landed, coyote/buffer expiry |
MotionBreathingComponent
Idle breathing camera effect for immersion.
| Feature | Description |
|---|---|
| Automatic Activation | Activates when character is NOT walking (event-driven via Walking tag) |
| Camera Curve Effect | CameraBreathingCurve for subtle idle motion |
| Gameplay Tag Tracking | BreathingActiveTagEffect for state queries |
MotionMovementSoundComponent
Animation notifier-driven movement sounds with surface detection.
| Feature | Description |
|---|---|
| Animation Notifiers | TriggerFootstepSound(), TriggerJumpSound(), TriggerLandingSound() |
| Physical Material Detection | Line trace for surface type via bEnableSurfaceDetection |
| Speed-Based Modulation | Volume/pitch varies with movement speed |
| MetaSound Support | Surface sounds configured via FMotionSoundVariants (part of SurfaceSoundDataTable rows) |
| DataTable Mapping | SurfaceSoundDataTable (row type: FMotionSurfaceSoundDataRow) for surface sound configuration |
| 3D Spatial Audio | FootstepAttenuation USoundAttenuation asset for spatial settings |
| Master Volume Control | SetMasterVolumeMultiplier() for global adjustment |
Camera System
MotionCameraComponent
First-person camera with curve management and height interpolation.
| Feature | Description |
|---|---|
| Independent Height Management | Camera height separate from capsule via CurrentCameraHeight |
| Smooth Height Interpolation | HeightInterpolationSpeed for crouch transitions |
| Motion Curve System | AddMotionCurve(), RemoveMotionCurve() for procedural effects |
| Static Offset System | Persistent position/rotation adjustments via named offsets |
| Ceiling Collision | CeilingCheckDistance prevents camera clipping |
| View Angle Limits | ViewPitchMin/Max, ViewYawMin/Max, ViewRollMin/Max |
| Shake Disable Tag | Camera shake effects disabled when Motion_Camera_DisableShake active |
MotionCameraEventBus
Decoupled event broadcasting between movement and camera systems.
| Feature | Description |
|---|---|
| Curve Events | Add, Remove, Pause, Resume via EMotionCameraAction |
| Height Events | BroadcastHeightEvent() for camera height changes |
| Blueprint Delegates | OnMotionCurveEvent and OnCameraHeightEvent |
Animation System
MotionAnimInstance
Animation instance with GameplayTag integration.
| Feature | Description |
|---|---|
| Tag-to-Variable Mapping | GameplayTagPropertyMap syncs tags to animation variables |
| Ground Distance Detection | GetGroundInfo() with frame caching |
| Automatic ASC Discovery | InitializeWithAbilitySystem() with retry logic |
| PlayerState ASC Support | Works with ASCs on PlayerState |
GAS Integration
MotionAttributeSet
Default GAS AttributeSet for movement attributes.
| Attribute | Description |
|---|---|
WalkSpeed | Base walking speed (replicated) |
SprintSpeed | Additive sprint speed modifier (replicated) |
JumpVelocity | Jump velocity override (replicated) |
Stamina | Current stamina value (replicated) |
MaxStamina | Maximum stamina capacity (replicated) |
StaminaRegenRate | Stamina regeneration per second (replicated) |
StaminaDrainRate | Stamina drain per second when sprinting (replicated) |
Helper Functions:
GetStaminaPercent()- Returns stamina as 0-1 percentageHasEnoughStamina(float)- Checks if stamina meets requirement
Universal Attribute Discovery
Find and modify attributes on ANY AttributeSet.
| Function | Description |
|---|---|
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 walkingMotion_State_Sprinting- Character is sprintingMotion_State_Crouching- Character is crouchedMotion_State_Jumping- Character is in air from jumpMotion_State_WantsToCrouch/Sprint/Jump- Input intent tagsMotion_State_MovementHalted- Character movement is completely haltedMotion_State_StaminaDepleted- Stamina exhaustedMotion_State_StaminaRegenBlocked- Stamina regeneration blocked (during cooldown)Motion_State_StaminaRegenerating- Stamina recovering
Ability Tags
Motion_Ability_CanJump- Jump ability availableMotion_Ability_CanCrouch- Crouch ability availableMotion_Ability_CanSprint- Sprint ability available
Camera Tags
Motion_Camera_BreathingActive- Breathing effect activeMotion_Camera_DisableShake- Suppress camera shake
Attribute Tags
Used for identifying attributes in GameplayEffects and AttributeSet synchronization:
Attribute_Movement_WalkSpeed- Base walking speed attributeAttribute_Movement_SprintSpeed- Sprint speed attributeAttribute_Movement_JumpVelocity- Jump velocity attributeAttribute_Stamina_Current- Current stamina attributeAttribute_Stamina_Max- Maximum stamina attributeAttribute_Stamina_RegenRate- Stamina regeneration rate attribute
SetByCaller Magnitude Tags
Used for runtime magnitude customization in GameplayEffects:
SetByCaller_Magnitude_WalkSpeed- Walk speed modification magnitudeSetByCaller_Magnitude_CrouchSpeed- Crouch speed modification magnitudeSetByCaller_Magnitude_SprintSpeed- Sprint speed modification magnitudeSetByCaller_Magnitude_JumpVelocity- Jump velocity modification magnitudeSetByCaller_Magnitude_StaminaCost- Stamina cost magnitudeSetByCaller_Magnitude_StaminaDrain- Stamina drain magnitudeSetByCaller_Magnitude_StaminaRegen- Stamina regeneration magnitude
Subsystems & Orchestration
MotionSubsystem (LocalPlayerSubsystem)
Central orchestration for Motion components.
| Feature | Description |
|---|---|
| Component Registry | RegisterComponent(), UnregisterComponent() |
| Automatic Ability Granting | GrantMovementAbilities() on initialization |
| Visual Logger Integration | LogFloat(), LogVector(), LogAttribute() histogram logging |
| Component Lifecycle | SetComponentEnabled() for runtime control |
| Query Functions | GetActiveComponents(), GetComponentByClass() |
Debug & Development Tools
Gameplay Debugger Category
Real-time component state inspection via showdebug Motion.
| Display | Description |
|---|---|
| Component States | Active/inactive status for all Motion components |
| Movement Values | Current speed, direction, velocity |
| Stamina State | Current/max stamina, regen state |
| GAS State | Active gameplay effects and tags |
| Camera State | Active curves, height, offsets |
Visual Logger Integration
Per-frame state logging for Unreal's Visual Logger.
| Log Type | Description |
|---|---|
| Speed Histograms | Movement speed over time |
| Stamina Histograms | Stamina drain/regen visualization |
| Camera Height | Height changes over time |
| Tag State | Gameplay tag additions/removals |
Logging Categories
Granular logging control via log <Category> <Level>:
LogMotionCore- Plugin initializationLogMotionWalking/Sprinting/Crouching/Jumping- Per-componentLogMotionCamera/CameraCurves- Camera systemLogMotionReplication- Network synchronizationLogMotionAbilitySystem- GAS integrationLogMotionVisual- Visual Logger output
Utilities
MotionAbilitySystemHelper
Blueprint function library for GAS operations.
| Category | Functions |
|---|---|
| ASC Discovery | GetAbilitySystemComponentFromActor() - searches actor, PlayerState, controller |
| Tag Management | AddGameplayTagToActor(), RemoveGameplayTagFromActor(), ActorHasGameplayTag() |
| Effect Application | ApplyGameplayTagEffect(), RemoveGameplayTagEffect() |
| Initialization | InitializeCharacterAbilitySystemWithAttributeSet(), InitializeAttributeSetFromDataTable() |
| Movement | GetPlatformRelativeVelocity(), GetPlatformRelativeSpeed() |
MotionCurveFunctionLibrary
Blueprint nodes for curve evaluation.
| Function | Description |
|---|---|
GetCurveVectorValue() | Evaluate UCurveVector at time |
GetCurveVectorTimeRange() | Get curve duration |
GetRuntimeVectorCurveValue() | Evaluate FRuntimeVectorCurve |
GetRuntimeVectorTimeRange() | Get runtime curve duration |