Re-skin and rearrange the in-game interface, panels, nameplates, and top bar.

UI & HUD Editor

The UI editor is where your game stops looking like the engine and starts looking like your game. It controls the whole interface, from the first screen a player ever sees to the last: the login screen, the theme, scale, where elements sit, the minimap, how every panel is chromed, what the top bar contains, how names float over characters' heads, the loading screen, and reusable presets.

Opening, saving, publishing

Open it from Settings → UI / HUD in the studio. It's one window with fifteen tabs (below). Everything writes into a single project setting.

  • Save is publish — there's no separate step. Saving writes the config and live-syncs it to the running game server, which pushes it to connected players immediately.
  • Publish carries it too. If your game server was offline when you saved, or it runs on its own database (a managed or self-hosted server), the next Publish sends the saved document along with your world. Until then the server keeps the copy it read when it started, and the save tells you so.
  • An Unsaved / Saved pill shows state; Ctrl/Cmd+S saves, Esc closes. Closing with unsaved changes prompts you to discard.
  • Revert restores the last-loaded version; Reset to default clears theme overrides.
The tabs: Theme · Scale & Density · Layout · Bars · Top Bar · Nameplates · Indicators · Hover Cursors · Minimap · Panels · Custom Menus · Loading Screen · Login Screen · Onboarding · Presets.

> Onboarding is the controls introduction new players walk through on their first minute in your world. It has its own page — see Player Onboarding.

> One tab, one job. Layout is where things sit. Bars is how the health / mana / stamina / XP bars look. Indicators is the marks drawn on the ground in the world. Bar colors and the target ring used to be buried inside the Layout inspector; they now have their own tabs, and Layout carries placement only.


Theme

One accent-driven theme flows through the entire HUD — panels, bars, buttons and highlights read theme tokens rather than hardcoded colors, so changing one value re-skins the game. A live mock-HUD preview updates as you edit.

  • Quick palettes — one click applies Default, Ember, Verdant, Royal, Frost, or Rose Gold.
  • Tokens, grouped and each with a swatch + free CSS value + reset:
- Brand — Accent, Primary, Glow - Surfaces — Background, Panel 1/2/3, Border, Border (strong) - Text — primary, secondary, muted - Status — Success, Warning, Danger, Modal overlay - Style — corner radii (sm / base / lg), panel background, panel border
  • Panel Images (global) — a background image for every panel (Cover / Contain / Stretch / Tile) and a 9-slice frame with an adjustable slice size.
Fonts aren't set here — assign them in the Font Manager.

Scale & Density

Three live controls for overall HUD sizing:

  • UI scale — 75–150% (zooms panel surfaces).
  • Font scale — 75–150%.
  • Density — Compact / Cozy (default) / Comfortable spacing.

Layout

Where every always-on HUD element sits. Live preview embeds the real game HUD so you drag the actual elements; it falls back to a simple 16:9 canvas (with an amber banner) when the client isn't reachable. Use ⛶ Edit layout for full-screen, real-aspect editing, and Snap for grid alignment.

The Top Bar, Minimap and Menus tabs carry the same real HUD as a read-only live preview above their controls, so a change shows the way players will see it — on Menus the selected menu is held open over the HUD, even one that normally waits for a hotkey or an event. It needs your game client exactly like the Layout tab's live mode; without it the tab says so and offers Retry (the Top Bar keeps its sketch strip underneath).

Placeable elements include: Top Bar, Minimap, Ability Bar, Health / Mana / Stamina bars, XP bar, Territory panel, Level Badge (off by default), Survival bars, Status Effects, Stealth indicator, Quest tracker, Achievement tracker, Chat, and Mount button. Your custom menus appear here too.

Per-element inspector: Anchor (7 positions), X / Y offset, Scale (50–250%), Visible toggle, and per-element show/hide. (A Lock toggle exists but only protects the editor canvas — players can't move the HUD in game, so lock has no in-game effect.)

Anchors — the thing to understand

An anchor is the corner or edge an element's X / Y are measured from. Bottom-right, 48, 16 means "48 px in from the right edge, 16 px up from the bottom" — on every screen, at every resolution. That's the whole point: players don't all run 1920×1080, and an element measured from the nearest corner stays put while one measured from a far corner drifts.

The editor makes this visible and hard to get wrong:

BehaviourWhat it does
Anchor markerSelecting an element draws a ring on its anchor point and a dashed tether to the box, in both the live preview and the canvas — you can see what the offsets are measured from
Changing the anchor doesn't move the elementPick a different anchor and the element stays exactly where it is; only the X / Y numbers change to measure from the new corner
Auto anchor (on by default)Drop an element and it re-anchors to the region of the screen it landed in, keeping it where you put it while shrinking the offsets to a short hop. Turn it off in the toolbar to keep an anchor you picked deliberately

> Small offsets are good offsets. A box anchored top-left but dragged to the bottom-right carries offsets near 1900 × 1000, and every screen that isn't 1920×1080 lands it somewhere else. Auto anchor exists so you never have to think about that.

What you place is what ships. Elements are positioned by their real measured box, so a right-anchored element's right edge lands exactly the distance you set, whatever that element's true width happens to be. The live preview is the exact article; the simple canvas draws each element at the size it last measured in the live preview (falling back to a nominal size for elements it has never seen).

Bar colors aren't here — a bar's placement is Layout, its look is the Bars tab, and the inspector links straight across.

Phone layout

Phones get their own HUD layout. A layout arranged for a 1920×1080 monitor, squeezed onto a phone held upright, piles the minimap onto the health bars and runs the hotbar off both edges — so the Desktop / Phone switch at the top of the Layout tab gives you a second, separate arrangement for phones.

Where: UI Editor → LayoutPhone.

1. Switch the toolbar from Desktop to Phone. The canvas becomes a phone screen. 2. Set Orientation to the way up your game is played (see below). This decides whether you arrange one phone layout or two. 3. Pick a device (iPhone 15, iPhone SE, Pixel 8, Galaxy S, iPad mini) to check your layout against. 4. Drag HUD elements exactly as on Desktop — anchor, X / Y, scale and visibility all work the same way. 5. Drag, resize or hide the touch buttons on the same screen (they're listed under Touch buttons on the left). 6. If players can rotate, switch to Landscape and arrange that screen too. 7. Save. Both phone layouts and the touch buttons save together.

Field / controlWhat it does
Desktop / PhoneWhich layout you're arranging. Players on phones get Phone, everyone else Desktop
OrientationWhich way up your game is played: Portrait only, Landscape only or Free rotate
Portrait / LandscapeWhich phone layout you're arranging. Only offered when your Orientation lets a player reach it
DevicePreview only — the screen you're checking against. Nothing about the device is saved
X / Y (Phone)Distance from the anchor in phone pixels. The same distance holds on every phone, rather than growing on a bigger one
set (element list)This element has a phone placement of its own. Reset to phone default removes it
Touch button X % / Y %The button's centre, in percent of the screen above any hotbar
Touch button SizeThe button's diameter in phone pixels (32–96)
Reset phone layoutClears every phone placement; the engine's phone defaults take over

#### Orientation

Where: UI Editor → LayoutOrientation.

SettingWhat players get
Portrait onlyThe game is held upright. You arrange one phone layout
Landscape onlyThe game is held sideways. You arrange one phone layout, on a sideways screen
Free rotatePlayers turn the phone whenever they like, and you arrange both

Locking an orientation does two things: it stops players rotating into an arrangement you never designed, and it tells an installed game which way up to launch.

> The lock is reliable once your game is installed, and best-effort in a browser tab. An installed game (Add to Home Screen) is locked by the phone itself at launch. In an ordinary mobile browser tab, browsers only honour an orientation lock in fullscreen, and iOS Safari ignores it entirely — so a player in a tab can still turn their phone. That is a platform limit, not a setting you've got wrong. Your HUD should still read correctly both ways, which is exactly what the second layout is for.

Choosing Free rotate gives you a second layout, not a stretched one. A portrait arrangement is 393 px wide and tall; landscape is the same phone on its side, 852 × 393. An arrangement tuned for one rarely reads well in the other — the hotbar that fits across the bottom in portrait leaves two-thirds of a landscape screen empty. Arrange Landscape separately and each gets the screen it was designed for.

An unarranged Landscape falls back to your Portrait layout, not to Desktop. If you never open the Landscape tab, players who rotate keep the phone work you did — just laid out on a wider screen. Open the tab only when you want to tune it.

What phones get before you touch anything. The engine ships a phone arrangement: minimap top-right under the bag and map buttons, survival bars and the mount button beneath it, status effects and chat down the left, quest and achievement trackers off (players still have the quest log). An element with no phone default of its own uses its desktop placement, scaled to the phone.

The hotbar fits itself. On a narrow screen the ability bar shrinks its slots, then stacks — equipment abilities on one row, the hotbar split evenly underneath — instead of running off the screen. Your slot size (UI Editor → Panels → Hotbar) is the largest it will ever draw. Phones don't show the keyboard key under each slot.

What counts as a phone: any screen narrower than 768 px, plus a touch screen shorter than 500 px (a phone held sideways). The touch buttons follow exactly the same rule, so a player who sees touch buttons always gets the Phone layout.

The notch and the home bar are kept clear for you. Modern phones reserve strips of screen the game may not draw in — the notch or status bar at the top, the home indicator at the bottom, and in landscape a strip down the side the notch has rotated to. Your phone layout is arranged inside what's left, so an element anchored 16 px off the bottom sits 16 px above the home bar rather than underneath it. The editor canvas shades those strips so you can see the room you actually have, and every device preset reserves the right amount for that device.

#### Gotchas

  • Touch buttons are World settings. They're the same buttons as World → Controls → Touch — editing them here changes them there. The Phone layout only edits their position, size and visibility; which movement mode and which actions exist stay on the Controls page.
  • Changing Orientation can hide the tab you're on. Switch from Free rotate to Portrait only while arranging Landscape and you'll be moved back to Portrait — there's no landscape screen left to arrange. Your landscape work is kept, and comes back if you allow rotation again.
  • The hotbar hides when the touch buttons carry it. If any Hotbar touch button is visible, phones hide the ability bar and the buttons are the hotbar — the element list shows the bar struck through. Hide every hotbar touch button to use the bar on phones instead.
  • A visible hotbar pushes the touch buttons up. When the bar is on screen in the lower half, the touch layer (d-pad included) ends at the bar's top edge, so the buttons stand above it rather than on it. That's why touch X / Y are measured "above any hotbar".
  • Hidden on Desktop means hidden on Phone — unless you give the element a phone placement and turn it on there.
  • Custom menus aren't on the Phone layout. A custom menu has one position for every screen, so arrange it on Desktop.
  • Live preview needs your game client, exactly like Desktop; without it you get the simple canvas, which draws the touch buttons itself.

Bars

How the health, mana, stamina, XP and territory bars look. Pick a bar on the left, style it on the right, and the preview above the controls draws it at its authored size in the exact layer order the game uses.

Every field is an override on top of the engine default — an untouched bar renders exactly as it always has, and Reset style puts any bar back.

ControlOptions
Use theme accentFill the bar with the theme accent, so it tracks the theme
Dynamic color by valueGreen → amber → red as the value drops
Fill / Track colorFlat fill and background colors
Gradient fillFrom / To colors (overrides flat fill)
ShapeFlat / Rounded / Pill / Segments
Segments2–20 (when shape = Segments)
Height / Width4–128 px / 40–960 px
BorderColor + width (0–8 px)
Fill textureAn image drawn over the fill
Texture fitHow that image sits on the fill — see Fitting art to a bar below
LabelValue/Max, Value, Percent, or None
Opacity10–100%

Bar art

The controls above style a rectangle. These take a bar to authored art — an ornate frame over the fill, a crest or portrait on the end, a slanted body — without touching code.

ControlWhat it does
FrameArt drawn over the bar, 9-sliced so ornate corners keep their shape at any width. The middle stays transparent and the fill shows through
Frame sliceThe 9-slice inset of that art, in source px (0–128). Set it to the width of your frame's decorated border
Fill insetHow far the bar body sits inside the frame art (0–48 px) — ornate frames usually need a few px so the fill doesn't cover the border
Track artArt for the empty part of the bar, drawn under the fill
Track art fitHow that image sits on the track — see Fitting art to a bar below
Pixel artDraws the frame, track and texture with hard pixel edges instead of smoothing them. Turn it on for pixel-art bar art, which browsers otherwise blur at any size but 1:1
End capA crest, portrait or heart medallion at one end of the bar
Cap side / size / overlapWhich end it sits on, its box in px (8–192), and how far it laps over the bar body (negative pulls it away)
Fill directionLeft → right, right → left, bottom → top, or top → bottom. The fill gradient follows, so a vertical bar isn't shaded sideways
SlantSkews the bar into a parallelogram, −35° to 35°. The label stays upright
Glossy highlightThe engine's built-in sheen over the fill. Turn it off when your own art already carries the lighting

Fitting art to a bar

Track art fit and Texture fit decide how one image covers the space it is given. The same picture reads completely differently depending on the answer, so pick it to match how the art was drawn:

FitUse it when
Stretch to the barThe art was cut to the bar's exact shape. One copy is squashed to fill the whole space — a repeating motif smears
Tile along the barThe art is a small repeating pattern (links, scales, hatching). It keeps its natural size, is scaled to fit across the bar, and repeats along its length — down a vertical bar, across a horizontal one
Fit inside (keep shape)The whole image must stay visible and undistorted, with empty space at the ends if the proportions differ
Fill and crop (keep shape)The image must cover everything without distorting, accepting that its edges are cropped

Track art defaults to Stretch and the fill texture to Tile, which is what each did before they were authorable — so existing bars look exactly as they did.

To build a framed bar with a crest (the common MMO look): set Frame to your border art and Frame slice to its border width, nudge Fill inset until the fill sits inside the frame, set End cap to the crest with Cap size ≈ the bar's height plus a bit, and turn Glossy highlight off. Set a slant if the art is angled.

The XP bar always shows its exact progress on hover — percentage to one decimal, plus XP into the level and what the level costs — regardless of the Label setting. A thin rail has no room for a label, and "Value" or "None" hides the percentage entirely, so the reading players ask for most lives one hover away instead of being styled out.

Gotchas

  • Art is media, not an upload field. Frame, track, cap and texture all pick from the Media Manager — upload there first.
  • A frame with no slice looks stretched. Frame slice at 0 stretches the whole image across the bar; set it to your art's border thickness.
  • Cap art can overflow the element's box. That's intended (a medallion should hang off the end), but leave room on the Layout tab so it doesn't collide with a neighbour.
  • Height and width are the bar's, not the art's. Frame and track art stretch to fit; the cap uses its own size.

Top Bar

The strip of buttons across the top. The preview shows players' exact render order.

  • Built-in buttons — reorder, show/hide, and per button: Label override, Icon (a 29-icon grid or your own image), and keep in the "More" (⋯) menu.
  • Add custom buttons — with a label, icon, group, and a When clicked action: open/toggle a panel, run a chat command (e.g. /who), or do nothing.
  • Bar chrome — Height (28–96 px), Background (any CSS color/gradient/image), Border color, Floating buttons (drops all bar chrome and chips each button), and Show button labels (default is icon-only).
  • Chip backgrounds behind text — appears once Floating buttons is on, and is on by default. It gives the text clusters (player name, GUEST tag, Silver/Gold, the PvP badge, weather and clock) the same translucent chip the buttons wear, so they stay readable over bright grass, sand or snow. Turn it off for bare drop-shadowed text.
  • Bar info clusters — toggle Silver, Gold, PvP badge, Weather, Time of day, Latency individually.
> Feature flags always win. A button for a system that's disabled (or a panel that's off) never appears, no matter the config — so you can't accidentally show a dead button.

> A floating bar with unreadable text? Turn the chips back on, or give the bar a faint Background like rgba(10,14,26,0.55) — a floating bar still honours a fill, it just drops the blur, border and shadow.


Nameplates

Authored per entity type — a base for all entities plus overrides for Players, Enemies, NPCs, and Pets — all sharing one renderer. Boolean options are tri-state (Inherit / Show / Hide) so overrides layer cleanly.

ModuleOptions
VisibilityNameplate, name text, health bar, level, guild line, alliance tag
PlacementPlate vertical offset, name offset, and "hide beyond N tiles"
Name textFont size, color mode, color, outline, and a per-scope font family (including uploaded fonts)
Relation colorsOne color per relationship — Yourself, Party, Guild, Alliance, Attackable, Neutral (players only)
BarsWidth / height, Smooth pill vs Segmented cells, HP color mode (single, by-percent, or by relation), and — for players — mana & stamina bars plus module reorder
Cast barOverhead progress + ability name while casting/channeling, with its own color
Crest / badgeContent (initial letter / level number / uploaded image), shape (Shield, Circle, Diamond, Tag, Hexagon, Banner), body & ring colors
Frame / plateNone / Match HUD theme / Soft slab / Ornate
Off-screen playersScreen-edge plates for players approaching from off-camera — who they show for, what each one says, and how far in from the edge they sit
SkinsSave the whole assembly as a reusable skin and apply it elsewhere

Relation colors — telling friend from foe

A player's nameplate is colored by how that person stands toward the viewer, so "can I fight them / are they on my side" is answerable without opening a panel. Every player sees these relative to themselves: the same character reads green to their guildmate and red to an enemy at the same moment.

Set them in UI Editor → Nameplates → Players → Relation colors:

RelationDefaultMeans
YourselfLight blueYour own plate
PartyCyanIn your party or raid
GuildGreenIn your guild
AllianceVioletIn a guild allied with yours
AttackableRedYou and they can both damage each other right now
NeutralParchmentEveryone else — no tie, not attackable

Two mode dropdowns decide where these colors land:

  • Name text → Name color modeSingle color (always the Name color), By relation, or Match the health bar.
  • Bars → HP color modeSingle color, Green → amber → red by %, or By relation.
Both default to By relation for players, so a red health bar always comes with a red name. Choose Match the health bar if you'd rather keep the bar on percent coloring and have the name follow it down from green to red.

Gotchas

  • Ties beat hostility. Relations are checked in order — Yourself, Party, Guild, Alliance, Attackable, Neutral — so a guildmate in a lawless zone still reads as a guildmate rather than a target. That matches the server, which refuses to let you damage them.
  • Attackable means mutually flagged. A player who just crossed into a PvP biome is still inside their entry grace and reads Neutral until it expires — attacking them would be refused anyway.
  • Relation colors are players-only. Enemies, NPCs and pets have no relationship to the viewer and use their Name color / HP color mode as before.
  • Set colors on the Players scope (or All entities); the card is hidden on the Enemies / NPCs / Pets scopes.

The guild line

Below a player's name, their guild reads out. Guild shows picks the form: full name (the default), tag only, full name + tag, or the uploaded badge image. Guilds don't need a tag — one without a tag always shows its full name.

If that guild belongs to an alliance, the alliance tag trails it:

Aldric Vane
Ironhold Covenant > [DAWN]

Turn it off with Alliance tag, or recolor it with Alliance tag color. It appears in every guild display mode, so switching between name and tag doesn't lose it.


Off-screen players

Someone walking up on you from outside the view gets a compact plate pinned to the edge of the screen, with an arrow pointing their way — so an approach is something you notice, not something you discover when it arrives.

The plate mirrors your Players nameplate — the crest, frame, font and relation colors you author under Nameplates → Players are exactly what shows on the edge, so a red plate on the edge means exactly what a red plate over someone's head means, and restyling your nameplates restyles the edge plates with them. This card only adds the edge-specific parts: the guild/distance line, the arrow, and the fade.

Setting it up

1. Turn on World → Features → Proximity Awareness. Without it the server never tells the client about anyone off-camera and nothing here draws. 2. Open UI Editor → Nameplates and scroll to Off-screen players. 3. Under Who and when, set Show for — everyone, enemies and strangers, or only players who can attack you right now. 4. Under What each plate shows, pick the rows you want: name, guild tag, distance, arrow. 5. Save. Like every UI change, saving publishes it to players already online.

Who and when

FieldDefaultWhat it does
Edge indicatorsShowThe master switch for the whole thing
Show forEveryoneEveryone, Enemies and strangers (skips party, guild and alliance), or Only players who can attack me (mutually flagged only)
Hide beyond (tiles)60Stop warning about anyone further out. 60 is as far as the server looks, so a higher number changes nothing — lower it to shorten the warning
Most plates at once8Nearest first. Caps how much of your screen edge a large group can occupy

What each plate shows

FieldDefaultWhat it does
NameShowThe player's name
Guild tagShowTheir guild tag in brackets, e.g. [DAWN]
Distance in tilesShowHow far out they are, e.g. 42t
Direction arrowShowA small arrow outside the plate pointing at them
Fade the far onesShowDistant plates draw dimmer so the nearest threat reads first. Never fades past half — a plate you can't read is the same as no plate
Guild/distance line size (px)126–32. Sizes only the small guild · distance line — the name itself follows your Players nameplate font and size
Distance from the screen edge (px)44How far in the plate sits. Raise it to clear a HUD that hugs the edges

Gotchas

  • The feature flag is the real switch. Everything on this card is styling for something the server has to be sending. With Proximity Awareness off, the settings still save and still do nothing.
  • It only ever shows players. Enemies, NPCs and pets never get an edge plate — this is about someone coming for you.
  • Stealth still works. A player the server is hiding from you isn't announced, so an invisible player can't be found by watching the edge of the screen. Corpses and players in other zones are skipped too.
  • A blip is not a scouting tool. The plate carries a name, guild and rough distance and nothing else — no health, no gear, no idea what they're doing. Health bars appear only once they're close enough to render normally.
  • Position is rounded to whole tiles. Far-away plates step rather than glide. That's deliberate: it's an arrow, and it keeps a standing player from costing anything.
  • Zoomed out, the plates get rarer. They fire when someone is off-screen; the further out you zoom, the more of the world is on-screen already.
  • Players can't turn these off separately. The Settings → Interface nameplate toggles cover overhead plates. If you don't want edge indicators in your game, turn off the flag.

Indicators

The marks the game draws on the ground in the world rather than on the HUD frame. They follow an entity or the cursor, so there's nothing to place — styling only. Both are fully optional: Reset clears a block entirely and the engine default comes back.

Selection indicator — the mark under the NPC or enemy a player has targeted.

FieldWhat it does
EnabledOff removes the mark entirely
StyleGround ring / Glow pool / Overhead marker
ColorThe mark's color
Opacity20–100%
Size0.5×–2×

Ability range indicator — two marks drawn while a player hovers or keyboard-focuses an ability on the action bar: a reach ring showing how far it can be used, and an area footprint showing what it hits. The footprint is traced from the ability's own AoE shape, so a cone shows as a cone.

FieldWhat it does
EnabledOff hides both marks
StyleRing (outline + faint wash) / Filled (solid wash) / Dashed (outline only)
ColorThe reach ring's color — a per-ability color overrides it
Outline / Fill opacityThe ring's line (10–100%) and wash (0–60%)
ThicknessRing line width, 1–6 px
Also show while castingKeeps the marks up during the cast, not just on hover
Show area footprintTurns the AoE shape off, leaving just the reach ring
Harmful / Helpful colorThe footprint is colored by intent, so a player reads danger without parsing it
Footprint outline / fillThe shape's line (10–100%) and wash (0–70%)

Hover Cursors

The cursor is already pointing at the thing, so it is the cheapest place to say what that thing is: a sword over an enemy, a hand over an NPC, a pick over a rock.

Author it in UI Editor → Hover Cursors. A shared cursor applies everywhere, and each kind — Players, Mobs, NPCs, Pets, Mounts, Resource Nodes, Dropped Items, Portals, Crafting Stations — can override it.

FieldWhat it does
Enable hover cursorsOff keeps every authored image but uses the system cursor in game
ImageThe cursor art. 32×32 or smaller reads best; anything much larger is refused by browsers
Hotspot X / YWhich pixel of the image actually points, measured from its top-left. A sword tip at the bottom-left wants (0, 31); a crosshair wants its centre
Use sharedDrops a kind's override so it inherits the shared cursor again

Overrides inherit field by field: set one shared image and nudge only the hotspot for the kind whose art sits differently. The preview beside each row marks the hotspot with a red dot, which is the part that is easy to get wrong.

Gotchas

  • A hotspot outside the image is rejected by the browser and the cursor silently falls back to the default. Values are clamped to 0–128 on save, but keep them inside your art.
  • Leave a row empty for the ordinary cursor. An un-authored project uses the system cursor everywhere — nothing to turn off.
  • Cursors are part of the UI customization document, so they reach players on the next UI config publish, like nameplates.

Minimap

  • Appearance — on/off, Shape (Square/diamond or Circle), Anchor, Size (80–480 px), Opacity, Border color, Zoom (0 = auto-fit).
  • Blips — toggle Players, Party, Enemies, NPCs, Resource nodes, Portals.
  • Fog of war — Reveal mode (Always visible / Reveal as explored / Event-driven), fog color & opacity, and explore radius. Fog is also driven by "Reveal Map" / "Set Map Fog" event commands. Explored tiles are saved on the game server as part of the character, so the map a player has uncovered follows them across reloads, browsers and devices — the browser only keeps a local copy as a cache.

Panels

Around 55 catalogued panels — Inventory, Character, Skills, Abilities, Loadout, Bank, Chest, Market, NPC Shop, Mail, Trade, Guild, Party, Quest Log, Achievements, Crafting, Build, Settings, Boss Bar, and more — each with per-panel appearance:

ControlEffect
Panel enabledTurn a panel off entirely (hides it and its top-bar button)
Accent colorBorders, highlights, emphasis inside the panel
Corner radius0–28 px
Opacity35–100% (ignored when a background image is set)
Background imageWith a Fit mode (Cover / Contain / Stretch / Tile)
9-slice frameA scalable ornate border with an adjustable slice

A Reset appearance button puts any panel back; untouched panels render exactly as before. Panels gated by a feature flag say so in their inspector.

Deep inspectors — a few panels expose gameplay-shaping options with a live preview:

  • Inventory — inventory & guest slot counts, bag columns, a drag-arrange equipment layout (show/hide slots, custom slots, placeholder art), slot size, card layout, and the equipment / bag split described below.
  • Hotbar — slot count, slot size, accent, background skin.
  • Party / Raid frame — width, max members, compact cards, and which sub-bars show.
  • Enchanting / Upgrading — the rune table and the forge's own knobs: pip track, before → after stats, risk strip, socket ring or row, meter style, drag from bag and the bag shortcut. See Enchanting & Upgrading.
#### Window & header (every panel)

Every catalogued window — the bag, the forge, the bank, the social panel, the store, the settings sheet, even the full-screen world map and the pet-battle stage — renders through one shell, so the same Window & header card appears on every panel's inspector. Two games built on the engine should not open the same panel and look alike; this card, the Sections list under it and the Vocabulary strings are how you get there.

FieldOptionsWhat it does
HeaderBar (default) · Sigil · Banner · Minimal · HiddenThe title treatment. Sigil is the forge's glyph-and-small-caps look; Banner centres a large title over a hairline; Minimal is one quiet line; Hidden drops the header and leaves a floating close button.
Title alignLeft · CenterWhere the title sits inside the header.
Header iconMediaReplaces the panel's built-in glyph beside the title.
Width280–1400 px, 0 = built-inThe window's width. Docked and full-screen windows ignore it.
DensityCompact · Cozy (default) · SpaciousScales the panel's inner spacing without touching the global UI scale.
ButtonsFilled · Outline · Ghost · PillThe style of every button inside the panel.
OrnamentsDefault · On · OffThe corner filigree. Default follows the panel's own preference.
EntranceFade · Rise · Zoom · NoneHow the window animates in.
Section labelsOn · OffThe small-caps captions above each section.
DividersOn · OffThe hairlines between sections.

Steps:

1. Open Settings → UI / HUD → Panels and pick any panel. 2. Set the Window & header fields. Nothing is required — every field left blank keeps the built-in look. 3. Under Sections, untick a block to hide it or use the arrows to reorder. Each panel lists its own blocks (the bank's Toolbar and Grid, the settings sheet's Rail / Pane / Footer, the social panel's guild and friend blocks…). Reset puts them back. 4. Save — saving publishes, and connected players see the new window on their next open.

Gotchas:

  • Docked windows keep their dock. The bag, the build bar and the pet-battle command card sit where the game needs them; placement offsets don't apply to them, everything else does.
  • Hidden sections are hidden, not disabled. Hiding the bank's toolbar removes the Deposit buttons; players can still drag items in. Hide what your world doesn't need, not what it needs to work.
  • A hidden header still closes. The close button floats in the corner, and Escape still works.
  • Width is clamped. Anything under 280 px or over 1400 px is pulled back into range, and on a phone the window never exceeds the screen.
#### Every window, not just the big ones

The Panels tab used to list the windows players open on purpose — the bag, the character sheet, the shop. The windows the game opens at them were not there at all: the loot roll, the taming prompt, the death recap, the confirmation dialog, the reconnect overlay. You could not so much as recolour them. Now every one of them is in the list, with the same Window & header, Sections and Appearance cards as the rest.

Where to author it: UI Manager → Panels → pick a window from the list on the left.

WindowWhat it isSections you can hide or reorder
Death RecapThe card shown when a player diesKilled by · Respawn / spectate · Where you respawn
Loot RollThe Need / Greed / Pass prompt on group lootCountdown bar · Need / Greed / Pass · Vote tally
TamingThe prompt to tame a creatureTame / cancel · Requirement hint
InstancesThe dungeon and match browserMatch found · Current instance / queue · Instance browser · Advanced: enter by id · Lockouts
Pet Battle ResultsThe rewards card after a pet battleRewards · Items received · Pet progression · Trainer dialogue · Close button
Split StackThe "how many?" picker when moving itemsSlider & amount · Half / All presets · Confirm / cancel
Confirm DialogThe "are you sure?" promptMessage · Confirm / cancel
Event Message BoxShow Text, Show Choices, Input Number, Select ItemFace portrait · Message text · Continue indicator
Connection OverlayShown when a player's connection dropsStatus icon · Status message · Retry progress · Reconnect button
Exit CountdownThe 5-second countdown before leaving the worldCountdown ring · Warning line · Cancel / exit now

#### The event message box

This is the one most worlds will touch first. Show Text, Show Choices, Input Number and Select Item all share a single skin called Event Message Box, so a line of dialogue and the choices under it read as one window instead of two mismatched ones.

The speaker's name is the window title. That means the Header knob is your name plate: pick Bar for a classic title row, Sigil for an icon tile beside the name, Banner for a centred, underlined plate, Minimal for small caps with no rule, or Hidden for no plate at all. A message with no speaker simply has no header, and a choice list never shows one.

KnobWhat it does to the message box
HeaderThe style of the speaker's name plate
Title alignName on the left, or centred
Header iconReplaces the built-in glyph beside the name
WidthHow wide the box is (280–1400 px); the default is 640
DensityPadding inside the box — Compact, Cozy or Spacious
EntranceHow the box arrives — Fade, Rise, Zoom or None
Accent colorThe speaker's name and the blinking continue arrow
Panel opacityHow much of the scene shows through the box
Corner radiusHow round the box's corners are
Background / FrameYour own message-window art, with a 9-slice border
SectionsHide the face portrait, or put the continue arrow above the text

Two things a message command still decides for itself, because they are authored per line and should win over a global skin: its position (top, middle or bottom of the screen) and its background (window, dim or transparent). Dim and transparent drop the window glass on purpose — your opacity setting still applies to the tint.

#### Surfaces that keep their own shape

Some parts of the HUD are not windows and never grow a title bar, but they take your colours all the same: Chat, Touch Controls, the Event Timer, the Arena overlays, the Party / Raid Frame, the Hotbar, the Target Frame, the Boss Bar and the Territory Panel. Each has an Appearance card with accent, opacity and, where the surface actually has a body to paint, corner radius, background image and 9-slice frame. Touch Controls is the exception: they are round buttons with no window body, so that card offers accent and opacity only. The Party / Raid Frame gained a card it never had — the party and raid views share a single skin.

#### Controls that could not do anything are gone

If a knob is on the Panels tab, it does something. Three changes you may notice:

  • Touch Controls no longer offers a corner radius, background image or 9-slice frame. They are round buttons with no window body, so those never applied; only accent and opacity are shown.
  • Event Message Box, Connection Overlay and Exit Countdown read Always on where other windows show a Panel enabled switch, and each says why it in particular cannot be hidden: an event that shows text blocks until the player dismisses the box, a disconnected player has to be told they are disconnected, and a timed exit has to show the time it is counting. Restyle them instead.
  • Confirm Dialog and Split Stack now say what "off" means before you flip the switch. Turning a prompt off does not cancel the action, it skips the question: with the confirmation dialog off the game never asks and the action goes ahead — including destructive ones — and with the split-stack picker off, moving a stack always moves all of it.
#### Inventory: the equipment / bag split

The in-game inventory runs the full height of the screen, divided between the equipment paperdoll on top and the bag underneath. Equipment share decides how that height is spent.

FieldRangeDefaultWhat it does
Equipment share20–80%50%The share of the panel's height the paperdoll takes. The bag gets the rest and scrolls whenever it can't show every slot at once.

Steps:

1. Open Settings → UI / HUD → Panels and pick Inventory. 2. Drag Equipment share under Equipment / bag split. 50% is an even split; push it up for a gear-forward game, down for a loot-hoarding one. 3. Watch the preview on the right — it divides its height the same way the game does. 4. Save — saving publishes, and connected players get the new layout immediately.

Gotchas:

  • The share never starves the bag. The bag always keeps the remaining height and scrolls, so a large share means more scrolling, not fewer slots.
  • Slot size overrides the fit. Equipment cells normally size themselves to fill the share you authored. Setting Slot size in the Appearance card pins them to that exact size instead.
  • Very small shares still show a paperdoll. Equipment cells never shrink below 44px; if your share is shorter than that the paperdoll scrolls inside its own card rather than being cut off.
  • On a very tall screen the paperdoll stops growing. Equipment slots are square, so on a tall monitor the grid runs out of panel width before it runs out of height. Once the paperdoll fills its card the card stops growing too, and the surplus height goes to the bag — so a 50% share can render as less than half on a tall screen. That is deliberate: the alternative is an empty band under the paperdoll. Pinning Slot size does the same thing at whatever size you pinned.

Panel recomposition

Five panels — Skills, Quest Log, Character, Enchant, Upgrade — can be recomposed rather than just re-skinned. Turn on Edit body layout and build the panel body from widget nodes: the Stock Body slot, Repeat List rows bound to a collection (e.g. your skills), plus text, images, icons, slot grids, and buttons with actions. It's the same authoring model as custom menus, applied to built-in panels, and it's opt-in — nothing changes until you switch a panel to Custom.


Context Menus

The menus that open on something: right-click (or long-press) another player, long-press your own character, or open your pet's ring. You choose how each one looks, how it arrives, and which actions it offers.

Where: Tools → UI / HUD EditorContext Menus (the tab after Panels).

Pick a menu on the left — Player menu, Quick actions or Pet ring — and a dot marks the ones you've customized. Reset menu puts any of them back.

Reaching them on a phone

Phones have no right-click, so every one of these menus used to be unreachable — a mobile player could not trade, duel, invite or inspect anybody. Now a long press does what a right-click does:

GestureWhat happens
Tap an entityThe normal action — select, attack, harvest, talk
Press and hold an entityIts context menu opens
Press and hold your own characterYour quick actions ring opens

Hold for about half a second. Sliding your finger more than a few pixels cancels it, so dragging the camera never opens a menu by accident.

> Tapping resolves when you lift your finger, not when you touch down. It has to: otherwise a long press that opens a mob's menu would already have started attacking it. A tap is short, so it still feels immediate — and mouse clicks are unchanged.

Quick actions — the phone's way to the panels

Long-pressing your own character opens a ring of the panels the top bar carries: Bag, Character, Skills, Quests, Map, Social, Settings. It exists because a phone's top bar is small, far from the thumbs, and often hidden entirely when touch buttons carry the hotbar.

It's phones only — on desktop the real top bar is right there. A panel you switched off in Panels is dropped from the ring rather than shown greyed out: a ring is small, and a dead slot costs a real thumb target.

Style

FieldWhat it does
Desktop styleList, Radial or Grid under a mouse. Default List
Mobile styleList, Radial or Grid under a finger. Default Radial
Open animationNone, Fade, Pop, Bloom, Stagger or Sweep
Ring radiusHow far the buttons sit from the centre, 48–160 px (Radial)
Button sizeButton diameter, 32–96 px (Radial and Grid)
Show labelsDraw each action's words as well as its icon

Style is set per input on purpose. A ring of thumb-sized buttons is right under a finger and wrong under a mouse, where a dense labelled list is quicker to read and hit — so the engine defaults to radial on phones and a list on desktop, and you can override either.

The animations are all short (about a fifth of a second). This menu opens on every right-click and long-press in your game, so anything statelier becomes a tax by the hundredth time. Bloom flies the buttons out from the centre, Sweep spins them around the ring, Stagger brings them in one after another, Pop springs the whole menu up, Fade eases it in. Players who've asked their device to reduce motion get a plain fade whatever you pick.

Actions

Drag to reorder, hide the ones your game has no use for, and rewrite any label or icon. A PvE world hides Duel; a solo world hides Invite to Party; a game with its own vocabulary renames Trade to Barter.

MenuActions you can author
PlayerInspect, Add Friend, Invite to Party, Invite to Raid, Form Raid + Invite, Invite to Guild, Trade, Duel, Pet Battle
Quick actionsBag, Character, Skills, Quests, Map, Social, Settings
PetStyle only — its actions depend on what your pet can do right now

#### Gotchas

  • The pet ring stays a ring on desktop unless you say otherwise. It predates this setting and players know it by its shape, so it defaults to radial on both inputs rather than to the list default.
  • Actions you never touch keep the engine's order and wording. Reordering one action doesn't scramble the rest, and an action added by a future engine version appears on its own rather than being silently hidden.
  • Hiding an action here hides the button, not the ability. Hiding Duel doesn't disable duelling — a player can still be challenged. Turn the system itself off in World → Features.
  • Conditional actions still obey their conditions. Invite to Guild only appears if you lead a guild, whatever order you give it.
  • An emptied menu doesn't open at all rather than opening blank.
  • Something lying at your feet wins the press. Holding on your character while you stand on a dropped item opens the item, not your quick actions — tapping yourself always reaches what's underneath you, so you can still pick things up. Step off it to open quick actions.

Custom Menus

Author entirely new in-game windows from the same widgets (Panel, Text, Stat Value, Progress Bar, Icon, Slot Grid, Button, Image). Drag them onto a canvas, then in Menu settings choose:

  • Trigger — Always on, a Hotkey, or an Event (health/mana/hunger/thirst low with a threshold, on death, on level up, or on entering a zone, with an auto-close timer).
  • Placement — anchor + X/Y offset.
Widgets can bind to live data (HP%, mana, silver/gold, level, name, hunger/thirst/stamina, zone name…), and buttons can open/toggle a panel, toggle another menu, close the menu, or run a chat command. A custom menu can also be opened by a top-bar button you add or an event command.

Loading Screen

The splash players see while the world loads (the client holds it until the map is actually rendered, so no one sees a half-drawn scene):

  • Branding — Title, Tagline, Logo.
  • Background — image + Fit + a scrim slider over it.
  • Indicator & colors — spinner style (Ring / Progress bar / Dots / None), accent & text colors, and an optional live phase line.
  • Rotating tips — a list of tips/tricks/lore with per-tip category and icon, a rotate interval, shuffle vs in-order, and a category badge toggle.

Login Screen

The sign-in page is the one screen every player sees before anything else, so it's the first thing worth making yours. Untouched, it uses your theme colors automatically — the rest of this tab is how far you take it.

The preview beside the controls is the real login screen, drawn by your game client with your unsaved changes — every tab, button and link responds, nothing signs in. Full size opens it over the editor. While the client is starting, or if it can't be reached, a sketch stands in and says so.

  • Start from a look — four one-click starters (Classic, Cinematic, Codex, Quiet). Fastest way off the default.
  • Layout — the headline choice, picked from thumbnails:
LayoutFeel
Centered cardThe engine default — form floats mid-screen
Left / Right panelFull-height column of controls, your art fills the rest
Bottom barArt-dominant: wordmark up top, form docked low and wide
MinimalNo card chrome at all — the fields sit straight on the art
  • Backdrop — theme color, a two-stop gradient, an image (Cover / Contain / Stretch / Tile, with optional slow zoom), or a looping muted video. A darken slider and blur keep text readable, and the drifting particle field can layer over any of them.
  • Brand — a logo image, or a two-tone wordmark (title + an accent-colored second part), plus tagline, font, glow, and the divider flourish.
  • Card — panel image, 9-slice border frame, corner radius, opacity, accent, and the sign-in button's fill.
  • Wording — every label on the screen: tab names, both button labels, field labels and placeholder, the guest button and its note, plus small print under the card.
  • Links — a repeatable list (Discord, wiki, rules) shown under the card.
  • Show or hide — toggles for the guest button, register tab, social sign-in row, remember-me, and the version stamp.
> The visibility toggles are cosmetic. Hiding the guest button hides a button — it does not disable guest accounts. Your world's auth mode decides which sign-ins are actually accepted, and the guest button only ever appears if your world genuinely allows guest play. For the same reason, the Google / Discord / GitHub buttons can't be relabelled or re-iconed: a sign-in button that lies about which provider it is would be a phishing tool.

Like the loading screen, this is delivered to the client before anyone logs in, so it paints on the very first frame rather than flashing the engine default first.


Presets & sharing

  • Apply a shipped template (Forge, Arcane Table) as a starting restyle.
  • Save current captures your theme + scale + layout + panels + custom menus as a named preset you can re-apply, rename, or delete.
  • Export / Import code shares a whole look as JSON between projects.
  • Reset everything to engine default starts over.
> Almost everything here is live. The only editor control that has no in-game effect is the Layout Lock toggle (it protects the editor canvas only, since players can't move the HUD). One advanced field — a fixed on-screen position for a floating panel window — exists in the data model but isn't yet surfaced as a control.