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.
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.
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.
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.
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.
Enhanced Input Auto-Injector & WASD Project-Fix ( HandleAutoConfigureEnhancedInput ):
• Scans your active editor actor selection or Content Browser Blueprint selections.
• Auto-enables the internal input remapping fix ( bUseInternalInputFix = true and bProjectGravityFromSurface = true ) on the UOmniWalkPro default components. This allows existing characters with legacy XY input vectors to seamlessly walk on walls instantly without any blueprint graph changes.
Physics Collision Profile & Level Mesh Auditor ( HandleAuditLevelCollisions / HandleFixLevelCollisions ):
• Scans the active level for Static Meshes configured with NoCollision that would otherwise cause surface traces to fail.
• Provides a “One-Click Fix” to repair those meshes, setting their collision status to QueryAndPhysics and assigning a standard BlockAll profile so wall climbing is perfect.
Dynamic Material Surface Response Table Configurator ( HandleConfigureResponseTable ):
• Auto-generates, duplicates, and saves a default showcase UOmniWalkSurfaceResponseTable asset in your starter directory.
• Auto-binds and links the Response Table to the UOmniWalkSurfaceResponse component of all selected Characters or Blueprint CDOs.
Locomotion Presets Injector ( HandleApplyLocomotionPreset ):
• Adds an elegant Slate dropdown menu allowing you to instantly apply optimized physics presets to selected character/Blueprint UOmniWalkPro components:
• Spider Climber: Optimized for 90° convex ledges, sticky transitions, and fast ceiling walking.
• Wall Runner: Tuning for high-speed wall sliding and input-based braking/hanging.
• Zero-G Float: Configured for volume-based orbital flight (stops projecting gravity from surface meshes).
• Standard Adhesion: Standard stable C++ defaults.
Direct Telemetry Debugger Launcher ( HandleLaunchTelemetryDebugger ):
• Adds a direct visual shortcut button to instantly invoke the live SOmniWalkDebugger nomad tab next to your active editor viewport.
Overhauls and Fixes
• CDO Constructor Error Resolution: Fully refactored the skeletal mesh and animation asset loading in AOmniWalkThirdPersonCharacter out of the CDO static constructor ( ConstructorHelpers::FObjectFinder ) and into a dynamic, safe load block inside BeginPlay() using FPackageName::DoesPackageExist . This completely resolved severe red CDO
constructor errors on startup.
• Look Action Skipping Safeguard: Upgraded AOmniWalkPlayerController 's IA_Look package resolution to use FPackageName::DoesPackageExist path checks before loading UInputActions from disk, eliminating all noisy SkipPackage package streaming warnings.
• Spider Walk (Convex Traversal) System Overhaul: Overhauled the convex edge detection algorithm in UOmniWalkPro to resolve slow-movement, zero-input, and high-speed transition dismount bugs:
• Added Projected Actor Forward Fallback to maintain surface tracking when input and velocity project to zero on the surface plane.
• Replaced single far sweeps with Dual Over-Edge Probes (close sweep at CapsuleRadius + 15cm and far sweep at CapsuleRadius + FMath::Min(ConvexCheckDistance, 60.0f) ) to guarantee stable ledge sweeps at any velocity.
• Relaxed the transition boundary check limit AheadDot from -CapsuleRadius * 0.75f to -CapsuleRadius * 1.5f to prevent premature dismount rejection during sprinting and sliding.
• Coyote Time & Setup Wizard Unit Testing:
• Added public, Blueprint-callable getters GetCoyoteTimer() and WasOnSurface() to AOmniWalkExampleCharacter to facilitate robust test verification.
• Refactored the CoyoteTime locomotion unit tests in OmniWalkSetupWizardTests.cpp to use Direct C++ Interface Invocations via Cast (e.g. Cast ), bypassing script/headless VM event routing constraints on pure C++ instances in offline editor tests.
• 100% pass rate on all 9 automation tests with zero warnings/errors in the test runner.
Hot Path Tracing: Injected TRACE_CPUPROFILER_EVENT_SCOPE macros into high-frequency loops (UOmniWalkPro::TickComponent and UOmniWalkPro::DetectSurfaceAsync) to allow developers to accurately monitor the ms budget consumed by OmniWalk’s surface tracing and gravity interpolation logic.
Physics Field Validation: Re-checked the “Gravity Wake” localized physics displacement tool, negating the need for a new physics system.
Setup Wizard UX Improvements: Overhauled the SOmniWalkSetupWizard slate interface for improved user onboarding.
Implemented “Generate Playable Third-Person Setup” for One-Click onboarding matching the First-Person workflow.
Added self-documenting UI Tooltips (ToolTipText) to all Project Setup buttons to clarify background asset generation and GameMode assignment actions.
Conflict — two systems fighting over the same state
Logic — incorrect or dead behavior
Gap / Quality — missing, degraded, or untidy
New — added API or capability
Changed — refactor / rename
Validated — confirmed by build / test
Surface, Gravity & Multiplayer Hardening
Networking & Multiplayer
Wall-slide no longer disconnects clients.Server_SetWallSliding_Validate rejected the
documented -1 “keep current speed” sentinel, and a failed RPC validation closes the client’s
connection, so toggling wall-slide on a client instantly kicked the player. Validation now
accepts the sentinel and only rejects non-finite / over-cap values. → UOmniWalkPro
Gravity now syncs to all players. State went out via a Client RPC (owner-only), so
simulated proxies never updated. Switched to NetMulticast (Multicast_SyncGravityState);
simulated proxies are now driven by replication instead of fighting it with local traces.
→ UOmniWalkPro
Mag-boot state applies locally on replication via new ApplyMagBootState(), so the
handler no longer bounces a Server_ RPC on proxies (warn-spam + drop). → UOmniWalkPro
Gravity & Surface Walking
Unified gravity-override channel. Gravity volumes and trigger zones now hold their gravity
even while the character is grounded (previously clobbered every tick by surface detection) and
decay shortly after the character leaves. → AOmniWalkTriggerZone, AOmniWalkSplineVolume, UOmniWalkPro
Killed per-frame client warning spam from external gravity drivers — the override path is
silently authority-only and replicates the result back. → UOmniWalkPro
Adhesion gate fixed. A tautological || SpeedToward > 0.0f made “needs adhesion” always
true; adhesion now engages only when falling or not already snapping into the surface. → UOmniWalkPro
Async traces no longer disable wall climbing. Async mode resolved only the floor; wall +
convex-edge (spider-walk) detection now runs each frame via shared DetectWallOrConvex(). → UOmniWalkPro
Gravity-volume containment no longer depends on component visibility (which diverged
between editor and packaged/runtime-spawned volumes). Bounds are chosen by GravityType.
→ AOmniWalkGravityVolume
Cinematic & Zero-G
Cinematic mode suspends the walker and transitions start from the current surface normal, not world-up — no snap when starting on a wall. → UOmniWalkCinematic, UOmniWalkPro
Zero-G flight suspends the walker so it stops fighting 6DOF orientation (mag-boot Off
alone didn’t). → UOmniWalkZeroGComponent
Configuration & Quality
UOmniWalkPro seeds tunables from UOmniWalkSettings
in its constructor (per-instance / Blueprint edits still win). → UOmniWalkPro, UOmniWalkSettings
Removed a duplicated include / copyright block in OmniWalkPro.cpp.
Automation test harness added: covers the surface “wall-like” classifier and
replication-state equality (run via OmniWalk. in the Automation window). → OmniWalkProTests.cpp
New API
// Gravity override: external drivers steer gravity without being clobbered by surface detection.
void UOmniWalkPro::SetGravityOverride(FVector NewUp, bool bImmediate = false, float HoldSeconds = 0.25f);
void UOmniWalkPro::ClearGravityOverride();
bool UOmniWalkPro::IsGravityOverrideActive() const;
// Full suspend — cutscenes / zero-G yield all per-tick control to an external controller.
void UOmniWalkPro::SetMovementControlSuspended(bool bSuspended);
bool UOmniWalkPro::IsMovementControlSuspended() const;
// Pure, testable surface classifier.
static bool UOmniWalkPro::IsSurfaceWallLike(const FVector& Normal, const FVector& Up, float Threshold);
While the walker is suspended (cinematic / zero-G), the per-tick multicast sync is skipped,
so a networked cinematic gravity flip won’t auto-replicate to observers. Single-player /
standalone is unaffected.
Please note that the plugin is under heavy development, and cannot be guaranteed to work in all use cases until it hits the 1.0.0 milestone.
The 0.6.0 update is still under Fab review/vetting at the time of this writing.