Appearance
Architecture
MotionCore adds modular first-person locomotion to existing ACharacter subclasses. A Motion-specific character base class is not necessary.
Build with Motion 2.0
Review the Unreal Engine 5 first-person controller overview, or get Motion 2.0 on Fab.
The architecture includes the Motion first-person item system. UMotionNativeFirstPersonItemConfig, UMotionHeldItemComponent, and UMotionCameraComponent control this system. UMotionCameraComponent owns the final view and native first-person presentation roles.
An empty CameraPivotSocketName selects Stable mode. This mode starts the camera from capsule and ground height. It then uses profile pitch strength to clear the capsule after it adds all camera offsets. The Stable camera / Motion 1.6 camera uses the evaluated full-body MotionCamera socket as a body reference. It does not use the socket as a camera origin. It applies a bounded shared curve correction to FirstPersonUpperBody and the attached item.
A valid nonempty name selects Socket mode. This mode uses the socket as the raw camera origin. It does not use Stable clearance or Stable camera / Motion 1.6 camera correction. An invalid socket causes an error and does not select Stable mode. See First-Person Item Configs.
Architecture Diagrams
High-Level Overview
This diagram shows the core architecture of MotionCore and how components integrate with your character:
Configuration Data
Motion separates shared component defaults from runtime state and item-specific authoring.
Component profiles are UPrimaryDataAsset assets for movement, sound, and camera components. Profiles contain behavior defaults. These defaults include movement, GameplayEffect, camera, sound, surface, and native first-person presentation settings.
The component calculates standing and crouched camera heights from capsule and crouch-height values. Components copy only profile values that change during play. They read constant values directly from the assigned profile. Profile assignment is setup configuration. It is not replicated gameplay state.
The Motion defaults are in Plugins/MotionCore/Content/Motion/Profiles/v2_0_0. Duplicate these profiles into project content before you change Motion behavior. Existing components continue to reference their assigned profile after Motion supplies new defaults.
Native first-person item configs are separate DataAssets. They contain item meshes, held poses, custom graphs, solve settings, transforms, linked layers, and render settings. Camera profiles contain shared settings for the Stable camera / Motion 1.6 camera. They do not contain item configs.
References:
GAS Integration
This diagram shows how the Gameplay Ability System (GAS) integrates with Motion components:
Component Integration
This diagram details how Motion components integrate with your existing character:
Camera Feedback
Movement components cache the MotionCameraComponent on the same actor and call it directly for curve playback or height changes. If no Motion camera is present, movement still works and camera polish is skipped.
Data Flow
This diagram shows how input flows through the system to create movement:
Networking and Multiplayer
This diagram shows the networking architecture for multiplayer games:
The ASC replication mode controls active GameplayEffect detail. Full replicates active effects to every client. Mixed sends active effects only to the local client. Minimal sends no active effects. GameplayTags and GameplayCues replicate in all three modes. Replicated AttributeSet properties use separate replication settings.
Functionality
Each layer in the architecture serves a specific purpose in the overall system:
Standard UE5 Framework Layer
This layer consists of standard Unreal Engine 5 classes that MotionCore integrates with:
- GameMode: Your existing GameMode class - set
PlayerStateClassto a PlayerState that owns or exposes a stable ASC for networked play - PlayerController: Your existing PlayerController. Your project owns the input bindings. A Motion-specific controller base class is not necessary.
- PlayerState: PlayerState ownership is the recommended setup for networked ASC persistence. Expose it through
IAbilitySystemInterfacewhen possible. Motion can also find an ASC through documented character or PlayerState paths. - AbilitySystemComponent: Standard UE5 GAS component, usually on your PlayerState or character and discovered through
UMotionAbilitySystemHelper
Character Core Layer
The foundation layer that MotionCore enhances without modification:
- ACharacter: All character classes operate without inheritance from Motion classes.
- CharacterMovementComponent: Standard UE5 movement component that Motion components modify
- CapsuleComponent: Standard collision component used for crouch height adjustments
- MotionCameraComponent: Advanced first-person camera with procedural effects and curve support
- Animation Blueprint: Your animation system. Motion exposes
UMotionAnimInstance, animation notifies, linked layers, and item integration APIs.
Motion Component System
Modular components add specific movement behaviors to a character:
- MotionComponentBase: Base class that automatically finds necessary components.
- Movement Components: Walk, Sprint, Crouch, Jump - each modifies the standard CharacterMovementComponent
- Support Components: Sound and Breathing add audio and camera movement. Held Item owns active item presentation.
- Components are selected for each character. Each component page lists its necessary and optional companion systems.
Input and Control Layer
Handles player input and component-driven state changes:
- Enhanced Input System: Standard UE5 input system with provided Motion input actions
- Component Input Handlers: Sprint, crouch, and jump components handle input intent, local validation, and server RPCs. Walk gets its state from movement velocity and ground contact.
- GAS Integration: Components apply tags, GameplayEffects, and attributes through the AbilitySystemComponent. GameplayAbility activation is not necessary for these inputs.
Data and Configuration Layer
Content-driven configuration and runtime data:
- MotionAttributeSet: GAS attributes for stamina, movement speeds, and other gameplay values
- Gameplay Effects: Define Motion state tags and attribute modifications
- Curves:
UCurveVectorassets provide camera location and rotation offsets - Sound Data: Surface-based footstep sounds with multi-variant support
- MotionNativeFirstPersonItemConfig: Local first-person item asset. It selects paired presentations, overlays, solve settings, linked layers, transforms, and native render settings.
- MotionNativeFirstPersonItemTuningComponent: PIE/editor tuning bridge that previews and saves native item transforms and render tuning back to the active native config
Local First-Person Item Presentation
The local first-person Motion item path is part of the character stack:
MotionHeldItemComponentowns the replicated active native item config at runtimeMotionNativeFirstPersonItemConfigprovides the content-facing paired mesh setup, automatic tag-driven held pose animations or custom graph overlay mode, and configurable upper-body solve tuningMotionNativeFirstPersonItemTuningComponentprovides the native config saveback workflow for local PIE tuningMotionCameraComponentassigns native first-person primitive roles to the body meshes. Stable mode clears the camera point against the capsule. It then alignsFirstPersonUpperBodyand the attached item with theMotionCamerapresentation reference.FirstPersonLowerBodystays at its authored ground transform. The world and full-body representations stay unchanged.UMotionAnimInstanceexposes the active config, active gameplay tag snapshot, overlay mode, resolved automatic held pose animation, and automatic blend tuning- A
Motion First Person Item Upper Body Overlaynode applies the basic held pose to the configured upper-body region. It then runs the Motion pitch and hand-IK solve. - Linked layers provide optional compatibility and broader pose sets. Custom overlay graph references are separate from the standard linked-layer class.
Content assets contain item transforms, mesh selection, held pose selection, custom overlay settings, and solve settings. The camera profile contains shared settings for the Stable camera / Motion 1.6 camera. Project item actions apply after the basic held pose when they must override it.
Utilities and Validation Layer
Development tools and runtime helpers:
- Profile and item validation: Reports invalid authored profile and first-person item configuration
- Logging System: Debug categories for Motion systems that currently emit logs
- Helpers: Blueprint-exposed utilities for component and GAS operations
Key Design Principles
Universal Compatibility
- A Motion-specific
ACharactersubclass is not necessary - Integrates with standard UE5 components (CharacterMovementComponent, AbilitySystemComponent)
Modular Architecture
- Motion features are split into optional components
- Add only the applicable project components
- Components automatically find necessary actors and systems at runtime
Standard UE5 Integration
- Uses established UE5 patterns and best practices
- Leverages built-in systems (GAS, Enhanced Input, Replication)
- An initialized ASC must have the attributes and GameplayEffects documented for each enabled component. Motion does not have a CharacterMovement-only architecture.
Network-Ready Design
- Server-authoritative movement with the standard CharacterMovementComponent
- PlayerState ASC ownership is the recommended persistent network setup. Documented lookup paths also support an ASC on the character.
- Sprint, crouch, and jump combine local response with server RPC handling
Developer-Friendly
- Comprehensive Blueprint API for visual scripting
- Clear separation of concerns between layers
- Extensive logging and validation tools for debugging
GameplayEffect Integration
Motion components use GameplayEffects directly for state management: