Log inGet started
← Explore
World media

Wayfinder Studio: Minimap, Compass, Waypoint and Toast Kit

A wayfinding and notification HUD kit for any Zero world: minimaps, a full map screen, four compasses, waypoint markers, objective trackers and toasts. navUiKit 1.1.0 has 28 styles in five looks (sci-fi, fantasy, cartoon, pixel, minimal), every style tagged so you can filter them, and one setting swaps the look. Every player gets exactly one HUD of their own in multiplayer, and every play starts clean. Open the gallery to see every style, then install the navUiKit package from this world and paste the five-line example from its README to get a minimap, compass, waypoint and quest toast in your own world.

0score
Embed

Embed this world

Paste this code into your own page and the world plays right there.

Updated Oct 18, 2026
huduiminimapcompasswaypointtoastsobjectivesmapmultiplayerpackagemobile

Wayfinder Studio: navUiKit 1.1.0

A wayfinding and notification HUD for any Zero world: minimaps, a full map screen, compasses, waypoint markers, objective trackers and toasts. There are 28 styles in five looks (sci-fi, fantasy, cartoon, pixel, minimal), and one setting changes the style. Every player gets their own view, centred on their own character.

Quick start

Install navUiKit from this world. It brings the two controlsKit modules it draws button glyphs with. Then paste this into your scene's entrypoint.luau (in a new world, scenes/main.scene/entrypoint.luau) and press Play:

local Nav = require("navUiKit.nav")

function onLoad()
    Nav.start()                                   -- round minimap, compass bar, objectives, toasts
    -- mark anything: an entity, an entity id, or a point { x, y, z }
    local chest = entity.find("Chest") or { 8, 0, -12 }
    Nav.mark(chest, { icon = "chest", color = "#FFB300", label = "Treasure", waypoint = true })
    Nav.objective("find", "Find the treasure")
    Nav.toast("Follow the beam", { title = "Quest started", icon = "quest" })
end

function onUnload()
    Nav.stop()
end

It works in an empty world: with no "Chest" in the scene, the treasure is a spot 14 m from where you spawn.

No code? Add the NavHud component to any entity, and PointOfInterest to anything you want on the map. Doing both is fine: however the HUD is started, each player gets exactly one.

Change the look with one line: Nav.setTheme("fantasy") or Nav.use("compass.ring"). Nav.catalogue() lists every style as data with tags, and Nav.catalogue({ tags = { "round", "phone-friendly" } }) filters them.

What's inside

  • Minimaps: square, round, heading-up, fog of war, icon-only radar with sweep, pixel. Size, zoom and corner are adjustable.
  • Map screen (M, Select, or tap the minimap): rooms outlined, fog that clears, a satellite view of the real world.
  • Four compasses: a top bar (sci-fi tape, ornate fantasy, cartoon, pixel, minimal), a round dial, a ring on the minimap's own edge (round or square, turning with heading-up maps), and an arrow that points straight at the nearest waypoint with its name, distance and an up/down cue.
  • Waypoints: an on-screen icon, an edge arrow that glides along the screen edge, a distance in metres, a light beam and ground pulse rings.
  • Objectives: list, single line, checklist and quest card (3/5). Objectives can be shared by the group or personal to one player.
  • Toasts: slide, banner, pixel, achievement, minimal, and button prompt (controlsKit glyphs that match keyboard, gamepad or touch). They stack, queue and fade.
  • Tags on every style: shape (round, square, strip, ring, arrow…), behaviour (north-up, heading-up, fog-of-war, radar, single-target…), look (sci-fi, fantasy, cartoon, retro, minimal) and fit (phone-friendly, compact, kid-friendly).

Multiplayer

Each peer draws one HUD for its own player. A player is a session: two machines signed in to the same account are two players, so a toast, waypoint or personal objective meant for one of them reaches only that one. Shared objectives stay shared, keep their progress when a player joins, and late joiners catch up. Waypoint beams and rings are local to each player.

Performance

Measured in the playground scene on the native desktop editor: one HUD costs about 3.5 ms of CPU a frame (0.83 ms median of script, plus about 2.4 ms of UI drawing). Starting it several times costs no more.

The kit is phone-ready (portrait, landscape and safe areas) and removes cleanly. Known limits, each with its open engine issue, are in the package README. Open the gallery scene to see every widget in every style (it is where the world starts), and the playground scene for a two-player demo.

Comments · 0

Open discussion, no rating attached. Ask questions, swap notes, follow threads.

Sign in to join the discussion.