Skip to content

Minimap

All · 10 min read

The minimap is the circle in the top right of the HUD. It shows the area around the party leader, which way the leader faces, which way the camera looks, nearby enemies, quest givers, shops and whatever the active quest needs. The area's name sits under the circle. It follows the XC1 field minimap: north-up by default, with turning the map with the camera as an option. Pressing L3 (keyboard M) fades the same map in over the whole screen, see-through and fading out toward the edges, as in XC1's Definitive Edition.

Everything you change is data: a placed actor, a data asset, a Data Table and properties on the HUD. No Blueprint graph is involved.

What you can change

  • A minimap for a new map: Give a map its minimap.
  • A new kind of marker, or a marker on your own Blueprint: Show something on the minimap.
  • The legend's words and each marker's look: rows of UserInterface/HUD/Minimap/DT_XenoCore_MapMarkers.
  • Size, range, north-up or rotating, colours, fonts: the Minimap widget's Details panel (Settings).

What it shows

On the minimap Meaning Comes from
Yellow arrow, centre The party leader, pointing the way they face Always drawn
Pale wedge Where the camera is looking: brightest at the arrow, fading out toward the rim Always drawn
Soft dot A living enemy, coloured by its danger: the same colour as the lvl.N over its head. It pulses while the enemy is fighting the party Every XenoCore enemy, automatically
Ring A living unique enemy, coloured by danger the same way An enemy with Unique Monster ticked
Red ! on a white tag An NPC with a quest to give or to take back A XenoCore NPC whose quest is offerable or ready to hand in
House An NPC who runs a shop A XenoCore NPC with a Shop Table
Blue dot Something the active quest wants Enemies a Defeat Enemy objective still needs, the NPC of a Talk To NPC step, the Quest Location of a Reach Location step, and the quest giver once the quest is ready to hand in

Blue dots stay pinned to the rim when they are out of range, pointing the way. Every other marker disappears beyond the edge.

The rim also carries the time of day: a sun or moon that travels round it, noon at the top and midnight at the bottom. The line under the circle reads the area name, the current weather's icon and the time, for example "Gaur Plain 21:40". See Time of day and weather.

The arrow and the wedge can point different ways

They show two different things, as in XC1: the arrow is the way the character faces, the wedge is the way the camera looks. With the camera behind the character they line up; turn the character toward the camera and the arrow points back down the wedge. Neither is a bug.

No treasure chests, by design

XC1's own manual lists no minimap icon for chests or collectables, so XenoCore draws none. To add one, see Show something on the minimap.

How it fits together

  • The image is a picture of the whole area seen from straight above, stored on an Area Definition data asset with the rectangle of the world it covers (Maps/Areas/DA_XenoCore_Area_*). XenoCore bakes it from the map into an XC1-style plan: tan ground tinted olive where it is grassy and pale where it is sandy, dark rock, blue water, outlines between levels, faint contour lines every 3 m of height, higher ground casting a soft shadow to the south-east and lit along its north-west edges, all on a light paper texture. You can also paint your own in any image editor.
  • One XenoCore Map Area actor per map says which Area Definition the map uses. In the editor it draws that rectangle as an orange box, so you can see exactly where the image lands. Its Fit Bounds To Landscape button sizes the rectangle to the map's landscape (for a hand-painted image), and Map Check flags a missing area, a missing image or backwards bounds.
  • Markers are drawn for every actor that asks to be. XenoCore enemies and NPCs ask automatically; any other actor can ask with one Blueprint node.
  • What each marker looks like is one row of UserInterface/HUD/Minimap/DT_XenoCore_MapMarkers. Each row is keyed by a XenoCore.Map.Marker.* gameplay tag.
  • The minimap itself is the Minimap widget in UserInterface/HUD/W_XenoCore_HUDLayout. The full-screen view is a second one there, MinimapOverlay.

Settings

Select Minimap (or MinimapOverlay) in W_XenoCore_HUDLayout's hierarchy. Everything below is in its Details panel.

Setting Category What it does
World Radius Minimap How far the map reaches from the centre to the edge, in cm. The corner minimap uses 9000 (90 m)
Rotate With Camera Minimap Off (XC1's default): north is always up and the arrow turns. On: the map turns so the camera always looks up
Minimap Size Minimap The widget's size on screen
Overlay Minimap On for MinimapOverlay only: draw only while L3 has the overlay open
Overlay Fade Seconds Minimap Overlay only: how long it takes to fade in and out (0.15)
Fill Widget Minimap Fill the whole widget, fading toward every edge, instead of a circle. On for MinimapOverlay
Vignette Start, Backdrop Dim Minimap › Look Fill Widget only: where the edge fade begins, and how much the game behind is darkened
Rim Width, Rim Color Minimap › Look The thin band round the edge
Edge Shade Minimap › Look How much the disc darkens toward its rim
Shadow Width, Shadow Opacity Minimap › Look The soft shadow outside the rim
Map Opacity, Map Brightness Minimap › Look How solid and how bright the map image is
Background Color Minimap › Look Drawn where there is no image
Leader Icon, Leader Icon Size, Leader Tint Minimap › Leader The arrow. 24 at the corner minimap's size: about a tenth of the circle, as in XC1
Camera View Color, Camera View Half Angle Minimap › Leader The camera wedge, which lightens the map under it. Its colour's alpha is how strong it is
Camera View Softness, Camera View Outer Strength Minimap › Leader How far the wedge's sides fade out (degrees), and how strong it still is at the rim compared with the arrow. XC1's is brightest at the arrow and fades out
Marker Styles Minimap › Markers Which marker table to use
Rim Clamp Inset Minimap › Markers How far inside the rim a pinned marker sits
Marker Scale Minimap › Markers Multiplies every marker's size. 1.6 on the overlay
Area Name Strip Minimap › Text Height of the strip under the circle for the area's Display Name. 26 on the corner minimap, whose Minimap Size is 240 × 266. 0 = no name
Show Header And Legend Minimap › Text Fill Widget only: the area name across the top and a legend of marker kinds bottom-left
Area Name Font, Header Font, Label Font, Text Color Minimap › Text The name, the header, and the legend and NPC names
Leader Label Minimap › Text The legend line for the arrow (You). Empty = left out
Show Time And Weather, Weather Icon Size, Time Weather Separator Minimap › Time And Weather The weather icon and clock after the area name
Show Day Night Dial, Sun Icon, Moon Icon, Dial Icon Size Minimap › Time And Weather The sun or moon that rides the rim

Changing the legend's words

Every other legend line is the Label column of that kind's row in /XenoCore/UserInterface/HUD/Minimap/DT_XenoCore_MapMarkers: open the table, edit Label, save. The shipped lines are Enemy, Unique Enemy, Shop, Quest and Objective. Clear a Label to leave that kind out of the legend. Row names and marker tags (Monster, XenoCore.Map.Marker.Monster) are internal and never shown to the player, so they do not need renaming.

Under the minimap, MinimapPrompt shows the overlay button and Map: the left-stick-click glyph on a gamepad. It draws the MinimapOverlay row of UserInterface/Foundation/DT_XenoCore_Actions.

Both prompts have icons on every device: XenoCore ships its own keyboard keycap icons, set by Keyboard Key Icons in Project Settings › Game › XenoCore UI.

To change the overlay button:

  1. Edit IA_XenoCore_MinimapOverlay's keys in Input/Mappings/IMC_XenoCore.
  2. Set the same keys on the MinimapOverlay row of DT_XenoCore_Actions.

Fails silently: the prompt shows the old button

The prompt only draws what the table row says; it never reads the input mapping. Change one without the other and the HUD tells players to press a button that does nothing. Nothing warns, so press the button in Play after every change.

L3 was Lyra's Dash

Lyra's own IMC_Default binds the left stick click to Dash, which XenoCore has no use for. IMC_XenoCore runs at a higher priority, so the minimap overlay wins the button.

Testing from the console

Command Effect
XenoCore.Minimap.Rotate 1 / 0 / -1 Force rotate with camera / north-up / back to the widget's setting
XenoCore.Minimap.Hide 1 / 0 Hide / show the corner minimap. The L3 overlay is unaffected

There is no options-menu entry for these yet.

Recipes

Why it's built this way

For programmers
  • One native widget. UXenoCoreMinimap is a UMG widget like UImage, with no Blueprint. It paints the disc, every marker and the leader in one OnPaint, so nothing re-lays out, and a marker costs one draw call.
  • The disc is one material. M_XenoCore_Minimap is built in C++ by UXenoCoreMinimapTools::BuildMinimapMaterial, never by hand. One Custom HLSL node pans, zooms, rotates, masks and rims it, and draws the camera wedge clipped to the circle.
  • Markers are a registry, not a component. UXenoCoreMapMarkerSubsystem (a world subsystem) holds weak pointers. Actors that implement IXenoCoreMapMarkerSource answer their kind every frame, which is how a dead enemy or a taken quest disappears with nothing to unregister.
  • One actor per map, not World Settings, because Lyra's World Settings is host code. It is not spatially loaded, so it is never streamed out.