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.