Skip to content

Visual Logger & Rewind Debugger

Motion integrates with Unreal Engine's Visual Logger to provide rich debugging visualization of movement state, component status, and GAS (Gameplay Ability System) data. This guide covers how to use these debugging tools with Motion.

What is Visual Logger?

Visual Logger is Unreal Engine's built-in tool for recording and visualizing runtime data. It captures:

  • Text logs - Timestamped messages with categories
  • 3D shapes - Arrows, spheres, capsules drawn in the world
  • Histograms - Values plotted over time
  • Snapshots - State captured at specific moments

Combined with the Rewind Debugger, you can scrub through recorded data to analyze exactly what happened during gameplay.

Visual Logger excels at debugging movement issues, GAS state problems, timing issues, and multiplayer desync.

Enabling Visual Logger

Console Command

VisLog

This toggles the Visual Logger window.

Window > Developer Tools > Visual Logger

Recording

  1. Open Visual Logger
  2. Click the Record button (red circle)
  3. Play the game
  4. Stop recording when done
  5. Scrub through the timeline to analyze

Automatic Logging

Motion's UMotionSubsystem automatically logs comprehensive state data every tick. No configuration required for basic usage.

What Gets Logged

CategoryDataVerbosity
MovementVelocity, Speed, Movement Mode, Grounded stateLog
ComponentsActive/Inactive state of all Motion componentsVerbose
GAS TagsAll owned gameplay tagsLog
GAS AttributesValues from configured whitelistLog
GAS EffectsCount of active gameplay effectsVerbose
3D ShapesVelocity arrow, Character capsuleLog/Verbose

Filtering by Category

In Visual Logger, filter by LogMotionVisual to see only Motion-related entries. This dedicated category keeps Motion logs separate from engine noise.

State-Based Colors

3D debug shapes use colors to indicate movement state at a glance:

StateColorWhen
Walking/IdleGreenDefault grounded movement
SprintingBlueSprint component active and moving fast
CrouchingYellowCharacter is crouched
Falling/JumpingRedCharacter is airborne

The velocity arrow and capsule outline both reflect the current state color.

Configuring Tracked Attributes

By default, Motion logs general movement state. To track specific GAS attributes (like Stamina), configure the whitelist:

In C++

cpp
// Get the subsystem
UMotionSubsystem* Subsystem = GetLocalPlayer()->GetSubsystem<UMotionSubsystem>();

// Add attributes to track
Subsystem->TrackedAttributes.Add(UMotionAttributeSet::GetStaminaAttribute());
Subsystem->TrackedAttributes.Add(UMotionAttributeSet::GetWalkSpeedAttribute());

In Blueprint

  1. Get the Motion Subsystem from your Local Player
  2. Access the Tracked Attributes array
  3. Add the FGameplayAttribute entries you want to monitor

Tracked attributes automatically generate histograms in Visual Logger, showing value changes over time.

Blueprint Logging Functions

Motion exposes typed logging functions for custom Blueprint debugging:

FunctionParametersUse Case
LogVectorKey, FVectorPosition, velocity, direction
LogRotatorKey, FRotatorRotation, aim direction
LogFloatKey, floatSpeed, stamina, cooldowns
LogGameplayTagKey, FGameplayTagSingle tag state
LogGameplayTagContainerKey, FGameplayTagContainerMultiple tags
LogAttributeFGameplayAttributeGAS attribute value
LogTextCategory, MessageCustom text messages

Example Usage

cpp
// Log custom data from your Blueprint or C++
UMotionSubsystem* Subsystem = GetLocalPlayer()->GetSubsystem<UMotionSubsystem>();
Subsystem->LogFloat(FName("CustomSpeed"), MyCustomSpeed);
Subsystem->LogText(FName("AI"), TEXT("Started chase behavior"));

All custom logs appear with [BP] prefix in Visual Logger for easy identification.

Histograms

Visual Logger displays histograms for:

  • Speed - Character velocity magnitude over time (under "Motion" graph)
  • Tracked Attributes - Each configured attribute gets its own histogram (under "Attributes" graph)

Viewing Histograms

  1. In Visual Logger, select your character actor
  2. Look for the histogram graphs in the bottom panel
  3. Hover over data points to see exact values and timestamps

Histograms are invaluable for spotting:

  • Sudden speed changes (sprint activation/deactivation)
  • Stamina drain rates
  • Unexpected value spikes or drops

Rewind Debugger

Motion provides a debug description for the Rewind Debugger timeline:

Motion: Speed=450 Mode=MOVE_Walking Components=5

This summary appears in the Rewind Debugger actor list, showing:

  • Current movement speed
  • Movement mode (Walking, Falling, etc.)
  • Number of registered Motion components

Using Rewind Debugger

  1. Enable Rewind Debugger: Edit > Editor Preferences > Rewind Debugger > Enable
  2. Record gameplay with Visual Logger
  3. Open the Rewind Debugger panel
  4. Scrub through the timeline
  5. Motion state updates in real-time as you scrub

Network Filtering

In multiplayer, Motion intelligently filters logging to prevent duplicate entries:

Network RoleLogs?Reason
Authority (Server)YesAuthoritative state
Autonomous Proxy (Owning Client)YesLocal player state
Simulated Proxy (Other Clients)NoWould duplicate server logs

Splitscreen Support

Each local player has their own UMotionSubsystem instance, so splitscreen scenarios log correctly for each player without interference.

Performance Notes

Visual Logger is automatically disabled in Shipping builds. The ENABLE_VISUAL_LOG macro is set to 0, and all logging code compiles to empty functions.

Build Configuration Behavior

BuildENABLE_VISUAL_LOGOverhead
Editor1 (enabled)Normal logging overhead
Development1 (enabled)Normal logging overhead
Shipping0 (disabled)Zero overhead

The logging functions still exist in Shipping builds (for API compatibility) but do nothing, ensuring no runtime cost in your packaged game.

Console Commands Reference

CommandDescription
VisLogToggle Visual Logger window
log LogMotionVisual LogSet Motion VLOG verbosity to Log
log LogMotionVisual VerboseSet Motion VLOG verbosity to Verbose

Troubleshooting

No Motion Logs Appearing

  1. Verify UMotionSubsystem is active (check your game mode uses Motion)
  2. Ensure you're not in a Shipping build
  3. Check the Visual Logger category filter includes LogMotionVisual

Logs Only on Server, Not Client

This is expected behavior. SimulatedProxy characters don't generate logs to prevent duplicates. If you need client-side debugging, play as the owning client (Autonomous Proxy).

Histograms Not Showing

  1. Ensure Visual Logger is recording (red dot should be filled)
  2. Select your character actor in the Visual Logger actor list
  3. Scroll down in the details panel to find histogram graphs

Motion - Advanced First Person Character Controller