# Client-side UI driven by player position, and per-viewer map markers

**URL:** <https://forums.unrealengine.com/t/client-side-ui-driven-by-player-position-and-per-viewer-map-markers/2852114>\
**Category:** Feedback & Requests (UEFN)\
**Tags:** fortnite-creative, unreal-editor-for-fortnite, fortnite\
**Created:** [November 7, 2026, 10:41pm UTC](https://forums.unrealengine.com/t/client-side-ui-driven-by-player-position-and-per-viewer-map-markers/2852114 "2026-11-07T22:41:57Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![jhirsh](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@jhirsh](https://forums.unrealengine.com/u/jhirsh)\
**Post date:** [November 7, 2026, 10:41pm UTC](https://forums.unrealengine.com/t/client-side-ui-driven-by-player-position-and-per-viewer-map-markers/2852114/1 "2026-11-07T22:41:57Z")

</div>

### Select a topic

UEFN

### Tell us your feedback. What is working, what is not, and what would you change?

SUMMARY

Many island designs need UI that moves with the local player or reacts to positions in the world: minimaps and radars, compasses, objective direction indicators, proximity warnings, off-screen markers, and any HUD element that animates smoothly against where a player is. Today the only way to build these is to drive UMG material parameters from Verse on every simulation update. Because Verse runs on the server, every frame of that motion is server CPU plus per-viewer replication, and the UI can never be smoother than the server update interval. The native Map Controller, Player Marker and Map Indicator devices are smooth and free, but they cannot be customized or scoped per viewer. This post describes the gap and asks for a small set of general capabilities that would close it for a wide range of games, not just ours.

OUR CASE AS ONE EXAMPLE

We built a custom radar in UMG for a competitive shooter: a map that scrolls under the local player, team-scoped enemy reveals, custom icons for allies, objectives and streaks. Everything that moves is written into material parameters from Verse each update. Measured on our server fixture (which excludes client and network cost), it runs roughly 2 to 3 ms per viewer per update, about 14.5 ms per update with 12 viewers, and it is the single most expensive feature on the island. Smoothness is capped by the simulation rate, and we cannot blend between updates because nothing on the client knows where the local player is. The same pattern applies to any island that draws position-driven UI.

WHERE THE NATIVE TOOLS STOP

The Map Controller accepts a static texture only, with no runtime API to change texture, zoom or shape, and no way to draw anything animated over it. Player Marker and Map Indicator visibility is per team or class, never per individual player, so asymmetric information designs (one player sees something others do not) are not possible with native markers. Markers appear and move instantly, with no control over timing, fade or delayed reveal. Marker icons come from a fixed library, with no custom texture slot. Enemy minimap dots are coupled to the Always Show Nameplates setting and cannot be controlled separately. The minimap’s screen rectangle is not exposed to UMG, so custom overlays cannot align with it. Material Time is not synchronized with GetSimulationElapsedTime, so client-side material animation cannot be timed to server events (FORT-1044018). Verse Fields in UMG are one-way, and the texture field binding does not save (FORT-1173754).

REQUESTED CAPABILITIES, IN ORDER OF VALUE

1. Local-player data in UI materials. Expose the viewing player’s world position, rotation and camera yaw to UI-domain materials, as material nodes or a client-updated material parameter collection. With this, any position-driven UI (minimap scroll, compass, direction indicator, distance readout) renders smoothly on the client with no Verse work per tick. This is the single highest-value item.

2. Per-agent visibility on marker devices. ShowForAgent(agent) and HideForAgent(agent) on Player Marker and Map Indicator, matching what the HUD Controller already offers for HUD elements. This enables any design where individual players have different information: detection abilities, spectator views, hidden-role games, free-for-all intel.

3. Custom marker visuals. A texture slot on Player Marker and Map Indicator, settable from Verse, so markers can use an island’s own iconography instead of the fixed library.

4. Timing control on markers. A reveal delay and a fade duration, as device settings or as parameters on Attach and Enable, so markers can appear gradually or in sequence without a server-side timer per marker.

5. World-position data in materials. Let Verse feed a small array of world positions to a UI material, replicated once per change rather than per update, and let the material read the local player’s position to project them. This covers moving elements in custom UI generally: markers, trails, zones, anything whose on-screen position depends on both a world location and the viewer.

6. Map Controller runtime API and layout exposure. Set texture, zoom and shape from Verse, allow an overlay material on the minimap that receives the current map UV transform, and expose the minimap’s screen rectangle to UMG so custom and native elements can be combined.

7. Simulation-synced time in materials. Synchronize material Time with simulation time or expose simulation time as a material node, so client-side animation can be aligned with server events.

Items 1 and 2 alone would remove most of our server cost and would apply to nearly every island with custom HUD. Items 1, 3 and 5 together would make custom position-driven UI a client-side concern end to end.

REPRO OF THE CURRENT LIMITATION

Build any UMG element whose position depends on the local player, for example an arrow that points at an objective. The only way to drive it is a Verse loop that computes the value per player per update and writes a material parameter. Profile the server with 12 players and observe the cost scale linearly with viewers. Then place a Player Marker set to Visible For Team and call Attach on a player from Verse: the marker appears instantly to the whole team with a library icon and cannot be shown to one player or faded in.

Thanks for reading. Happy to share the island and profiling captures with the UEFN team.
