GregOrigin - OmniWalk: Arbitrary Gravity & Surface Adhesion Framework

Watch the promo video
Read the manual

OmniWalk is a high-performance C++ middleware framework for Unreal Engine 5.4+ that delivers "Impossible Locomotion." Designed to replicate the high-fidelity magnetism found in titles like Ratchet & Clank and Dead Space, it allows any character to traverse arbitrary geometry — walls, ceilings, pipes, and planets — with zero technical friction.

While UE5.4 introduced native multi-directional gravity, OmniWalk solves the remaining "showstopper" problems: camera gimbal-lock, control inversion, triangle-normal jitter, and complex input remapping.

🚀 The "Zero-Config" unified component

Unlike competing frameworks that require rebuilding your character from a specific parent class, OmniWalk Pro features a unified component architecture.

  • Drop-In Integration: Drag the OmniWalkPro component onto any ACharacter (Pawn, MetaHuman, Synty, etc.).

  • Auto-Hijack Logic: Upon BeginPlay, the component automatically configures Pawn settings (Yaw usage, floor angles), injects a Camera Stabilizer, and intercepts the Input Buffer to project world-space movement onto local surface planes.

🧠 Key Technical USP's

  • Native 5.4+ Gravity Integration: Leverages the re-designed CharacterMovementComponent gravity architecture for frame-perfect physics — not forces-based hacks.

  • Gimbal-Free Camera Solver: A custom C++ Camera modifier resolves the "Euler Singularity." Mouse/Stick look remains intuitive and non-inverted, even when standing upside down on a ceiling.

  • Arbitrary Surface Adhesion: No Volumes required. Walks on any StaticMesh, DynamicMesh, or Landscape normal via optimized trace-averaging.

  • Input Projection Technology: Automatically "steals" world-space movement input and flattens it against the current surface normal, preventing the character from becoming "stuck" against vertical walls.

  • Slate Telemetry Debugger: A dedicated Editor window (Window > OmniWalk Debugger) provides real-time telemetry on gravity vectors, alignment strength, and trace hits.

🛠 Technical Specifications

  • Performance: All core logic is written in C++ and executes in TG_PrePhysics, ensuring zero latency between surface detection and movement integration. Requires the Enhanced Input plugin to be enabled.

  • Orientation Math: Uses Quaternions (QInterpTo) and Slerp-normalization to handle 360-degree transitions without gimbal flips.

  • Procedural Demo Included: Includes a C++ Helix-Generator that constructs "impossible" walking paths at runtime to demonstrate system stability across extreme centripetal forces.

📋 Package Contents

  • Runtime Module: Core Adhesion Component, Camera Stabilizers, Input Hijacker, and World Subsystem.

  • Editor Module: Slate UI Telemetry and Debugging tools.

  • Source Code: Fully commented C++ code.

  • Example Content: Procedural demo level and a "Zero-Touch" implementation guide.

Please take note of the correct setup of this plugin, especially on UE 5.7:




Hi how we get the character to stop strafing?

Hi there, it is done by the Orient Rotation toggle on the OmniWalk component. An update to facilitate it all is coming soon btw.

UnrealEditor_MDUJd226Rk

1 Like

Other settings or assets can also hijack Mouselook from OmniWalk. By default, IMC_Default should be set like this:

Updates and bugfixes are continuous for this plugin, and new features are expected to be added, including vertical wall sliding and wall-to-wall jumps.
An update was submitted today. Thanks for reading.

0.4 Changelog

Setup Wizard (2026-04-23)

  • Reworked the Setup Wizard from an example-level wrapper into a real onboarding tool with separate Project Setup and Example Tools modes.
  • Added current-project audit coverage for Enhanced Input, starter asset presence, current-level GameMode readiness, and selected Character actor readiness.
  • Added starter Blueprint planning, path validation, and non-destructive creation for:
    • BP_OW_PlayerController
    • BP_OW_FirstPersonCharacter
    • BP_OW_ThirdPersonCharacter
    • BP_OW_FirstPersonGameMode
    • BP_OW_ThirdPersonGameMode
  • Added relinking so generated GameMode Blueprints automatically point to the generated Character and Controller Blueprints.
  • Added one-click actions to assign the generated first-person or third-person GameMode to the current level.
  • Added selected-Character tagging workflow for OmniWalk.Enabled, including cleanup of blocking tags such as OmniWalk.NoAutoInject, OmniWalk.Disabled, and OmniWalk.Ignore.
  • Added direct actions to open the manual, support page, and Fab listing from the wizard.

Files:

  • Plugins\OmniWalk\Source\OmniWalkEditor\Public\SOmniWalkSetupWizard.h
  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\SOmniWalkSetupWizard.cpp
  • Plugins\OmniWalk\Source\OmniWalkEditor\Public\OmniWalkSetupWizardUtility.h
  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\OmniWalkSetupWizardUtility.cpp
  • Plugins\OmniWalk\Source\OmniWalkEditor\OmniWalkEditor.Build.cs

Example Tools Safety + Scope

  • Split optional demo-content actions out of onboarding so the example workflow is clearly separate from real project setup.
  • Made the example asset root configurable instead of hardcoding everything to /Game/OmniWalkExamples.
  • Added example asset preview and root-path validation before create, rebuild, or cleanup actions run.
  • Reworked cleanup and rebuild so they only touch the managed generated assets:
    • OW_Example
    • BP_OW_CreateExampleLevel
  • Stopped deleting the entire target folder during cleanup or rebuild, which preserves unrelated assets placed in the same directory.
  • Kept the legacy no-argument utility entry points as wrappers around the new path-aware implementation.

Files:

  • Plugins\OmniWalk\Source\OmniWalkEditor\Public\OmniWalkExampleLevelUtility.h
  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\OmniWalkExampleLevelUtility.cpp
  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\SOmniWalkSetupWizard.cpp

Docs + Marketplace Metadata Sync

  • Updated the docs to send users through Window -> OmniWalk -> OmniWalk Setup Wizard instead of the removed direct example-level commands.
  • Replaced stale auto-inject guidance with the current OmniWalk.Enabled tag.
  • Corrected the example setup docs to reference AOmniWalkFirstPersonCharacter instead of the stale AOmniWalkExampleCharacter claim.
  • Updated plugin metadata URLs so the manual, support page, creator site, and Fab listing all resolve correctly.
  • Updated the editor menu tooltip copy so it matches the new setup-first workflow.

Files:

  • Plugins\OmniWalk\Docs\index.html
  • Plugins\OmniWalk\OmniWalk.uplugin
  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\OmniWalkEditor.cpp

Automation + UE 5.7 Verification

  • Added editor automation coverage for content-path validation and starter asset plan drift.
  • Added KismetCompiler as an editor dependency for starter Blueprint configuration and compile steps.
  • Fixed UE 5.7 Slate/API compatibility issues discovered during live verification:
    • SWrapBox now uses UseAllottedSize
    • LeftChopInline now uses EAllowShrinking::No
  • Verified OmniWalkDevEditor builds successfully against UE 5.7.
  • Verified both setup-wizard automation tests pass:
    • OmniWalk.Editor.SetupWizard.PathValidation
    • OmniWalk.Editor.SetupWizard.StarterPlan
  • Observed a non-blocking Unreal warning that Visual Studio 2026 toolchain 14.50 is not the engine’s preferred compiler version, but the build completed successfully.

Files:

  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\OmniWalkSetupWizardTests.cpp
  • Plugins\OmniWalk\Source\OmniWalkEditor\OmniWalkEditor.Build.cs
  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\SOmniWalkSetupWizard.cpp
  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\OmniWalkSetupWizardUtility.cpp
  • Saved\AutomationReports\SetupWizard\index.json
  • Saved\Logs\OmniWalkDev.log

Input + Movement Fixes

  • Added bUseInternalInputFix to gate internal remapping and avoid double-mapping.
  • Added one-time warning when input already appears gravity-plane-aligned.

Files:

  • Plugins\OmniWalk\Source\OmniWalk\Public\OmniWalkPro.h
  • Plugins\OmniWalk\Source\OmniWalk\Private\OmniWalkPro.cpp

Blueprint Helper Node

  • Added UOmniWalkBlueprintLibrary::AddGravityRelativeMovement for gravity-relative input.
  • Added one-time warning when used without AOmniWalkPlayerController.

Files:

  • Plugins\OmniWalk\Source\OmniWalk\Public\OmniWalkBlueprintLibrary.h
  • Plugins\OmniWalk\Source\OmniWalk\Private\OmniWalkBlueprintLibrary.cpp

Example Runtime Classes

  • Added AOmniWalkExampleCharacter with gravity-relative input wiring.
  • Added AOmniWalkExampleGameMode that uses OmniWalk controller + example pawn.

Files:

  • Plugins\OmniWalk\Source\OmniWalk\Public\OmniWalkExampleCharacter.h
  • Plugins\OmniWalk\Source\OmniWalk\Private\OmniWalkExampleCharacter.cpp
  • Plugins\OmniWalk\Source\OmniWalk\Public\OmniWalkExampleGameMode.h
  • Plugins\OmniWalk\Source\OmniWalk\Private\OmniWalkExampleGameMode.cpp

Editor Utility: Example Level Creation

  • Added editor utility UOmniWalkExampleLevelUtility for generating example maps.
  • Auto-creates Editor Utility Blueprint: /Game/OmniWalkExamples/BP_OW_CreateExampleLevel.
  • Added toast notifications for success/failure.
  • Added cleanup + rebuild workflows with confirmation dialogs.

Files:

  • Plugins\OmniWalk\Source\OmniWalkEditor\Public\OmniWalkExampleLevelUtility.h
  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\OmniWalkExampleLevelUtility.cpp

Editor Menu Integration

  • Added menu entries under Window -> OmniWalk:
    • Create OmniWalk Example Level
    • Create Example Level and Open
    • Remove OmniWalk Example Assets
    • Rebuild Example Level and Open

File:

  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\OmniWalkEditor.cpp

Editor Module Dependencies

  • Added dependencies for editor utility creation and scripting.

File:

  • Plugins\OmniWalk\Source\OmniWalkEditor\OmniWalkEditor.Build.cs

Documentation

  • Added and expanded example setup instructions with menu shortcuts.

File:

  • Plugins\OmniWalk\Resources\ExampleMap_Instructions.md

Wall Movement + Dismount Controls

  • Added camera upright blending on wall surfaces to stabilize WASD movement.
  • Added dedicated dismount system with optional Jump-hold trigger, default gravity return, and configurable impulses/cooldowns.
  • Added OmniWalkPro auto-binding for Dismount input with Enhanced Input asset support and legacy fallback.
  • Added Blueprint helper node for OmniWalk Request Dismount.
  • Added default Dismount mappings in DefaultInput.ini.
  • Enabled dismount debug message on the example character via bDebugDismount.
  • Added corner stability fix with surface-loss grace window to prevent falling off at wall transitions.
  • Added surface tracing throttles and adaptive multi-point sampling to reduce CPU/trace costs when stable.
  • Added large-angle transition smoothing with a minimum transition time for 90° wall pivots.
  • Added optional wall sliding with acceleration-based control and configurable slide speed.

Files:

  • Plugins\OmniWalk\Source\OmniWalk\Public\OmniWalkPlayerController.h
  • Plugins\OmniWalk\Source\OmniWalk\Private\OmniWalkPlayerController.cpp
  • Plugins\OmniWalk\Source\OmniWalk\Public\OmniWalkPro.h
  • Plugins\OmniWalk\Source\OmniWalk\Private\OmniWalkPro.cpp
  • Plugins\OmniWalk\Source\OmniWalk\Public\OmniWalkBlueprintLibrary.h
  • Plugins\OmniWalk\Source\OmniWalk\Private\OmniWalkBlueprintLibrary.cpp
  • Plugins\OmniWalk\Source\OmniWalk\Public\OmniWalkExampleCharacter.h
  • Plugins\OmniWalk\Source\OmniWalk\Private\OmniWalkExampleCharacter.cpp
  • Config\DefaultInput.ini
  • Plugins\OmniWalk\Resources\ExampleMap_Instructions.md

Setup Wizard & UI

  • Built a user-friendly OmniWalk Setup Wizard using a bespoke Slate widget (SOmniWalkSetupWizard).
  • Added “Simple Mode” with one-click “Quick Setup” for generating the example environment.
  • Added “Advanced Mode” with granular controls for creating, rebuilding, and cleaning up example assets independently.
  • Unified cluttered example level commands under a single OmniWalk Setup Wizard entry in the Window -> OmniWalk menu.
  • Registered the Setup Wizard as a dockable/floating Nomad Tab Spawner.

Files:

  • Plugins\OmniWalk\Source\OmniWalkEditor\Public\SOmniWalkSetupWizard.h
  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\SOmniWalkSetupWizard.cpp
  • Plugins\OmniWalk\Source\OmniWalkEditor\Public\OmniWalkEditor.h
  • Plugins\OmniWalk\Source\OmniWalkEditor\Private\OmniWalkEditor.cpp

0.4 introduced some issues, 0.4.1 now corrects those.

Changelog: 0.4.1 (1 May 2026)

Fixed

  • Fixed Spider Walk traversal on the OmniWalk character so it now wraps across sharp 90-degree wall ledges instead of unpredictable behavior.
  • Improved convex-edge probing to support wall-to-top and top-to-down face transitions, not just floor-to-wall cases.
  • Fixed Setup Wizard result handling so Project Setup and Example Tools report their own action status independently.
  • Fixed Setup Wizard auto-injection tagging so opted-out actors are skipped and preserve tags such as OmniWalk.Disabled, OmniWalk.Ignore, and OmniWalk.NoAutoInject.
  • Fixed showcase demo map generation so OW_Example is playable immediately after creation.
  • Fixed generated showcase runtime setup to include OmniWalkFirstPersonGameMode, a PlayerStart, and AOmniWalkShowcaseLevel.
  • Fixed legacy generated-map cleanup so old native demo generator actors and incompatible placed pawn actors are removed from managed example levels.
  • Fixed showcase planetoid behavior by giving the planetoid collision and a matching point-gravity volume.
  • Fixed trigger-zone demo sizing by adding configurable trigger collision box extents and applying them in the showcase.
  • Fixed Surface Response showcase wiring by assigning physical materials to generated response strips and giving the example character a surface-response component.
  • Fixed Zero-G showcase support by adding UOmniWalkZeroGComponent to the example character and routing movement input into thruster input while Zero-G is active.

Changed

  • Reworked the generated showcase map into a guided, low-pressure feature tour rather than a challenging obstacle course.
  • Expanded the showcase route to introduce major systems in sequence:
    • Core surface adhesion.
    • Wall/ceiling traversal.
    • MagBoot states.
    • Spider Walk convex ledges.
    • Point-gravity planetoid traversal.
    • Directional gravity rooms.
    • Trigger zones.
    • Zero-G pads and magnetized exits.
    • Surface Response material strips.
    • Finale climb/summit.
  • Made showcase progression easier with wider paths, larger landings, clearer labels, shorter climbs, broad steps, rest platforms, catch decks, and oversized Zero-G pads.
  • Replaced the spider-walk pyramid-style demo with a readable wall/top/down training block with rails and visual markers.
  • Reworked the planetoid section with connected ascent/descent ramps and a wide equatorial ring road.
  • Rebalanced the Zero-G chamber with closer platforms, larger pads, visible entry/exit affordances, side posts, and a low recovery deck.
  • Shortened and widened the finale route to make completion reliable during a first playthrough.
  • Updated generated surface-strip labels to match the actual response multipliers.

Added

  • Added automated coverage for generated showcase map creation.
  • Added automated coverage for showcase runtime plumbing.
  • Added automated checks that the example character includes Surface Response and Zero-G support.
  • Added tests covering Setup Wizard tag persistence and opt-out behavior.
  • Added documentation for the new guided showcase route, easier demo tuning, Zero-G component behavior, Surface Response showcase setup, trigger-zone extents, and Setup Wizard opt-out tags.

Documentation

  • Updated Plugins/OmniWalk/Docs/Manual.html with:
    • Setup Wizard opt-out tag behavior.
    • Separate Project Setup vs Example Tools result reporting.
    • New guided showcase map description and route diagram.
    • Easier showcase progression notes.
    • Updated Spider Walk ledge traversal behavior.
    • Updated planetoid gravity-volume behavior.
    • Zero-G input/thruster behavior.
    • Surface Response demo material/table behavior.
    • Trigger-zone configurable collision extents.

Verification

  • Ran Automation RunTests OmniWalk.Editor.SetupWizard successfully.
  • Result: 7 tests passed.

Update video: 0.4