Show something on the minimap¶
Designer · 15 min · No code
Result: an actor of yours, such as a treasure chest, a landmark or a camp, shows on the minimap with its own icon. Or one of the shipped markers looks different.
Before you start¶
- Read Minimap.
- An icon image, white on transparent, around 32–64 px. White icons take their colour from the row's Tint; a coloured icon (like the quest !) uses a white tint.
How markers work¶
Every marker is an actor that has registered with the minimap as a kind, which is a
XenoCore.Map.Marker.* gameplay tag. What a kind looks like is one row of
UserInterface/HUD/Minimap/DT_XenoCore_MapMarkers. XenoCore's enemies and NPCs register themselves.
| Kind | Who uses it |
|---|---|
XenoCore.Map.Marker.Monster |
Every living XenoCore enemy |
XenoCore.Map.Marker.UniqueMonster |
A living enemy with Unique Monster ticked |
XenoCore.Map.Marker.QuestGiver |
An NPC whose quest is offerable or ready to hand in |
XenoCore.Map.Marker.Shop |
An NPC with a Shop Table |
XenoCore.Map.Marker.QuestTarget |
Whatever the tracked quest still needs, including the NPC a Talk To NPC step names and the XenoCore Quest Location a Reach Location step names (set by the minimap, never registered) |
Change how a shipped marker looks¶
- Open
UserInterface/HUD/Minimap/DT_XenoCore_MapMarkers. - Select the row and change:
| Column | What it does |
|---|---|
| Icon | The image. Its own size is ignored |
| Tint | Multiplies the icon's colour |
| Size | Size on the minimap. The shipped sizes were measured on XC1 against the circle's width: a monster 8, a quest tag 30 (it draws about 20 × 28, being portrait inside its square icon), the arrow 24 |
| Rotate With Actor | Turn with the actor's facing (an arrow), or stay upright (a dot, a sign) |
| Clamp To Rim | Stay pinned to the edge, pointing the way, when out of range. For objectives |
| Draw Order | Higher draws on top |
| Pulse When Engaged | For enemies: pulse while the enemy is fighting the party |
| Label On Full Map | On the L3 view, print the actor's name beside the icon (an NPC's Display Name) |
| Label | This kind's line in the L3 view's legend - the only marker text the player reads (the shipped enemy rows say Enemy and Unique Enemy). Empty = not in the legend |
| Tint By Enemy Danger | For enemies: multiply Tint by the enemy's level colour against the party leader, the same ladder as its lvl.N label (Project Settings › XenoCore Enemies › Level Label › Level Colour Bands). Leave Tint white so the ladder's colours show true |
- Save. Play to see it.
Add a new kind of marker¶
1. Add the tag¶
- Open Project Settings › Project › Gameplay Tags and click Add New Gameplay Tag.
- Name it
XenoCore.Map.Marker.<YourKind>, for exampleXenoCore.Map.Marker.Chest, add a comment saying what it marks, and set Source to your own tag source (for exampleMyGameTags.ini), not XenoCore's, so a template update cannot remove it. - Click Add New Tag.
2. Add its row¶
- Drag your icon file into your own folder, for example
MyGame/UI/Minimap. Open it and set Level Of Detail › Texture Group toUIand Mip Gen Settings toNoMipmaps. Save. - In
DT_XenoCore_MapMarkers, click Add, and name the row after the kind (e.g.Chest). - Set Kind to your tag. Expand Icon and set its Image to your texture. Then set Tint, Size and the rest as above.
- Save.
DT_XenoCore_MapMarkersis a shipped asset: note your row for template updates.
3. Make your actor register¶
In your actor's Blueprint, open the Event Graph:
- From Event BeginPlay, add Get Map Markers (category XenoCore › Map), then Register Marker with Actor = Self and Kind = your tag.
- From Event End Play, add Get Map Markers, then Unregister Marker with Actor = Self.
The marker now follows the actor wherever it goes. To stop showing it, for example once a chest is opened, call Unregister Marker at that moment. To change what it shows as, call Register Marker again with the new kind.
A kind with no row draws nothing
If no row in DT_XenoCore_MapMarkers has your tag as its Kind, the actor is not drawn. The
Output Log says so once, naming the actor and the tag:
Minimap: <actor> is registered as <tag>, but DT_XenoCore_MapMarkers has no row for that kind.
For programmers: a kind that changes every frame
XenoCore's enemies and NPCs implement IXenoCoreMapMarkerSource and answer which kind to show
each frame, or none: a dead enemy, an NPC whose quest is taken. A Blueprint actor cannot implement
that interface, so it registers a fixed kind and re-registers when that changes.
Test it¶
- Place your actor a few metres from the player start in
Maps/L_XenoCore_Gymand press Play. - It appears on the minimap (top right) where it stands, with your icon, tint and size.
- Walk away from it: it slides to the edge and leaves the circle (or stays pinned to the rim, if Clamp To Rim is on).
- Press L3 (or M): it appears on the full-screen map too, and in the legend if the row has a Label.
If it doesn't work¶
| What you see | Cause | Fix |
|---|---|---|
Nothing, and a Minimap: ... has no row line in the log |
The row's Kind is not your tag | Set Kind exactly. Row names do not matter, the Kind does |
| Nothing, and no log line | The actor never registered | Check Register Marker runs (BeginPlay) and Actor is Self |
| A blank square | The row has no Icon, or the icon's alpha is solid | Set Icon; use a white-on-transparent image |
| The marker stays after the actor is gone | No Unregister Marker on End Play | Add it. The minimap drops destroyed actors on its own, but a hidden one stays |