Mirage Source 6
Reference / Using the Editors

The admin editor

packages/editor is a standalone web app (no game client involved) for managing everything that lives in the content database. It talks to the server over plain REST, and edits reach connected players immediately (see Architecture) — no server restart, and usually no client reconnect either.

The shell is a single toolbar (Database, Open Live Game, account chip, Sign Out) over a canvas-first map workspace — maps are the primary view, since MS6 is a live multiplayer world, not single-player desktop software with a menu bar and an undo stack. Everything else (Items, NPCs, Spells, Shops, System, Accounts, access-gated per your AccessLevel) opens in the Database dialog: a category rail on the left, the editor for whichever record you picked on the right.

Access levels

Every account has an AccessLevel (packages/shared/src/enumerations.ts). The very first account ever registered on a fresh database is automatically granted Creator, the highest level — that's your way in on a new install.

LevelValueCan do
None0Regular player
Monitor1Kick/ban players (in-game admin commands)
Mapper2+ Edit maps
Developer3+ Edit items, NPCs, spells, shops, server config, accounts
Creator4+ Change other accounts' access level

What's editable

Items

All 15 ItemType variants — weapons, armor, consumables, keys, currency, spell-teaching items, warp items.

NPCs

Stats, behavior, sight radius, loot table, sprite.

Spells

Type, MP cost, level/class requirements, visual effect, includes a live particle-effect preview.

Shops

Trade slots (cost item/qty → reward item/qty), repair flag, join/leave messages.

Maps

The full tile-grid editor — layers, tile attributes, NPC spawn slots, warps, map linking.

Server Config

Game name, map dimensions, seamless-maps toggle, login music.

Accounts

Look up accounts, view characters, adjust access level.

The list → edit pattern

Inside the Database dialog, Items, NPCs, spells, shops, and accounts all follow the same shape: a searchable table (capped at 300 rows with a "refine your search" hint beyond that) that you click a row's Edit link on to open that record's form, with a breadcrumb back to the list. Saving posts the record over REST and shows an inline ✓ confirmation. The map editor (outside the dialog, in the main workspace) is the one exception — it's a bespoke canvas-based tile-grid tool, not a form.

Visual asset pickers

Fields that reference an image — an item's picture, an NPC's sprite sheet, a spell's icon, a map's parallax background — open a picker (components/AssetPicker.ts) instead of taking a raw numeric ID or filename: a searchable grid of thumbnails pulled from GET /api/content/asset-files/:category, with a "None" tile and the current selection highlighted. Character sheets render as their down-facing idle frame rather than the whole walk sheet.

The map editor

Opens directly on a map (no extra click to "enter edit mode"), centered on that map's actual content. The chipset picker on the left drives painting on whichever of the 9 tile layers (or the attribute layer) is selected; right-click erases on the current layer/attribute instead of painting. A Coordinates toggle above the canvas overlays each tile's x,y — handy for finding the exact tile to put in a map's Boot X/Y (or any other coordinate field) — and a live X/Y readout follows the mouse. Zoom (100%–200%, defaulting to 100% on open) is independent of that overlay.

If you're adding a new editor

See New Content Types — the short version is: copy ItemEditor.ts or ShopEditor.ts (the two simplest existing examples) as your starting point for the list/form structure, and add a typed saveX()/getAllX() pair to packages/editor/src/api.ts.