Important
Focus Targeting System
Robust, Data-Driven, Asynchronous
With optional Net-Prediction
And its FREE!
Note
Vigil determines what the player is looking at
What they want to interact with
Which enemy they want to lock onto
Which ally they want to auto-target with their healing spell
Warning
Optionally download the pre-compiled binaries here
Install this as a project plugin, not an engine plugin
The content is not necessary, reproducing it is very simple
Tip
Suitable for both singleplayer and multiplayer games
Supports UE5.4+
Caution
Vigil is currently in beta
There are many non-standard setups that have not been fully tested
Vigil has not been tested at scale in production
Vigil's net prediction has not been widely tested, esp. the workflow -- feedback wanted
Very easy to customize, modify, and extend behaviours without writing any C++ or modifying the base plugin. Vigil is built on top of the Targeting System plugin.
Vigil can be setup in mere minutes with usable results drawn to screen.
Not a single-use focusing system, add as many focus channels as you need. Vigil will tell you what ally, and enemy, and interactable we're focused on separately.
Vigil provides the results via a callback that you can assign to from anywhere. These are already sorted for you, so the current focus is the first index, but you have access to all options as well as their scoring for visual purposes if you need it.
Run the scan ability as Local Only or set to Local Predicted if you need predicted focus results!
Vigil includes verbose logging that will allow you to see every stage of the focusing system to make diagnosing issues easy. There are debugging tools to visualize what is happening.
- Fix cone target selection bug - was using mid-point of cone instead of rear as origin for angle checks
- Add Fallback rotation sources for when InputVector or Velocity produce zero vectors
- Add InputVector and Velocity as rotation sources for target selection
- Useful for top-down games that are pawn-relevant instead of camera-relevant
- Added helpers for cleaner code
UVigilStatics::GetActorFromVigilResult(Result);andUVigilStatics::GetComponentFromVigilResult- Was really messy having to break the hit result structs in BP
- Fixed bug where destroyed actors were not resulting in events broadcasting
- Fixed category for VigilTargeting
- Change Failsafe Timer to Weak Lambda because OnDestroy not being called at correct point in lifecycle after UEngine::Browse (
open map)
- Fix
UVigilScanTask::GetOwnerNetMode()checks
- Replace native ptr with TObjectPtr
- Due to Engine bug where Targeting Subsystem loses all requests when another client joins, a failsafe has been added
- Fixed SourceActor Controller not finding PlayerController in
UVigilTargetingStatics::GetSourceLocation - Debug logging now identifies which client is logging
- Mark scan task as neither simulated nor ticking
- Mark Vigil category as Important to sort to top of details panel
- Fixed gating target results by unique actor, now multiple components on the same actor are valid focuses
- HitResult ImpactPoint now outputs the component location instead of actor
- Debug drawing uses this, so it will correctly show the hit component location instead of actor now
- Fix out of order bAwaitingCallback flag and asynctaskdata being added for immediate trace post net sync, though it wasn't causing any issue
- Exposed ErrorWaitDelay on task node for advanced control and optimization
- Corrected UPROPERTY specificers
- Removed dependency on PlayerController
- Allows for use on AIController, however this is untested
- Net prediction Workflow see Wiki
- Add
FindVigilComponentForActorto save a BP cast
- Initial Release