CompassKit is an Unreal Engine 5 plugin that provides an in-game compass and navigation marker system for tracking objectives, actors, and directions at runtime.
It supports dynamic actor tracking, cardinal direction markers, and widget-agnostic navigation workflows while remaining lightweight, extensible, and blueprint-friendly.
Check it out on Fab
Note
CompassKit is designed to be a widget-agnostic navigation system that manages marker state and provides runtime projection data for different navigation widget implementations.
The current release focuses on compass bar widgets, with future updates planned for screen-space indicators and additional navigation systems.
- Dynamic runtime marker system
- Moving actor tracking
- Cardinal direction markers
- Point/world location markers
- LocalPlayerSubsystem architecture
- Blueprint-friendly API
- Runtime projection helpers
- Automatic cleanup for destroyed actors
- Example gameplay map included
- Example compass bar widget included
2.CompassKitV1_Demo_Compressed.mp4
Add the provided WBP_CompassBar widget to your player's existing HUD widget.
Markers are added for a specific player and track a target actor or world location.
To create a marker, you need:
- the player controller that will see the marker
- the actor or location to track
Create a CompassMarkerData struct describing the target actor or world location, then call AddMarker from the player's compass subsystem.
Directional markers independent of world position.
Example uses:
- North / East / South / West
- Directional indicators
Track:
- Moving actors
- Static world locations
Point markers are updated automatically at runtime.
Note
Support for area markers is planned for future updates.
Uses directional projection for a more spatial compass feel.
Uses direct angular mapping for a traditional flat compass feel.
The plugin includes an example gameplay map demonstrating:
- Dynamic marker spawning
- Multiple simultaneous markers
- Moving actor tracking
- Automatic marker cleanup
- Runtime add/remove workflows
The example gameplay consists of physics-based balls being spawned into the world while the player tracks and catches them using the compass system.
CompassKit uses a LocalPlayerSubsystem to manage marker state and runtime navigation data. Navigation widgets subscribe to the subsystem and generate their own marker widgets using runtime query functions.
A navigation widget must subscribe in order to receive marker updates.
SubscribeNavigationWidgetUnsubscribeNavigationWidget
AddMarkerUpdateMarkerRemoveMarkerClearMarkers
These runtime query functions are designed to support custom navigation widgets beyond the included compass bar implementation.
GetMarkerRuntimeCacheGetMarkerDistanceGetMarkerProjectedOffsetIsMarkerWithinView
CompassKit includes a ICompassMarkerVisualInterface for marker widgets, to simplify communication between a navigation widget and its marker widget implementations.
Included interface functions:
InitializeFromMarkerDataUpdateDistance
This allows custom marker widgets to react to runtime marker data without tightly coupling widget implementations to the subsystem.
- The markers are added/removed for a specific player hence are managed by a local player subsystem
- The subsystem uses tick to continuously update marker positions, but tick is only active if a navigation widget is subscribed and there are markers to be tracked.
- By default CompassKit calculates marker projections relative to the player's camera. Projects can optionally override this at runtime using SetProjectionReferenceOverride().
- CompassKit is designed to encourage custom navigation widget implementations.
- Install CompassKit using one of the following methods:
- Install from Fab to make it available to all projects in your engine installation (Engine Plugin)
- Copy the plugin into your project's
Pluginsfolder to make it available only to that project (Project Plugin)
- Enable CompassKit under
Edit → Plugins - Restart the editor
- To access the included example content:
- Engine Plugin: Enable
Show Plugin ContentandShow Engine Contentin the Content Browser - Project Plugin: Enable
Show Plugin Content
- Engine Plugin: Enable
- Open the example map
Lvl_CompassKitTest
- Unreal Engine 5.7
Note
This initial release targets Unreal Engine 5.7 only. Backward compatibility for earlier UE5 versions will be added in future updates.
This project is licensed under the MIT License.
Bug reports, feature requests, and general feedback are welcome through the GitHub Issues page.