F8 toggles edit mode. Tools: brush/line/rect/ellipse/flood/gradient/picker; ink meanings write LOOK/FLOOR/WALL/WATER/DEPTH across the four screens; V overlays priority/control/hotspot; hotspot rects, prop placement, spawn, and a :colon command line (save/name/enter/music/weather/exit/room/hotmsg). Every editor action is a bus Command (paint_op, undo_op, clear_ops, set_spawn/exit/music/weather/room_name/enter_text, upsert/delete hotspot+prop) so MCP clients wield identical powers. PicOp::Brush added; docs/EDITOR.md. Verified: 5 suites green, playthrough events byte-identical to pre-editor build, GUI boots. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.2 KiB
The in-engine room editor
Press F8 in the game to flip into edit mode (the sim freezes; F8 again
to play-test instantly). Everything the editor does is a bus Command —
an LLM on the MCP surface has exactly the same powers with the same JSON.
Tools & keys
| Key | Meaning |
|---|---|
B L R O F G K |
brush · line · rect · ellipse · flood fill · gradient · color picker |
M |
cycle what the ink writes: LOOK → FLOOR → WALL → WATER → DEPTH → HOTSPOT |
V |
overlay the invisible screens: priority / control / hotspot |
[ ] |
depth band 0–15 (DEPTH mode) |
- = |
brush size |
U |
undo last paint op |
S |
set the room spawn at the cursor |
P |
place a prop of the selected sprite (, . cycle sprites) |
X |
delete the prop under the cursor |
Enter |
open the : command line |
| palette panel | left-click = primary color, right-click = secondary (gradients) |
Meanings write multiple screens at once, MRPGI-style but with four screens: FLOOR paints color + default depth band + open control; WALL paints color + blocked control; WATER color + water; DEPTH forces a band (walk-behind scenery); HOTSPOT + the rect tool creates a named clickable region (no pixels painted — it lives on the hotspot screen).
Colon commands
:save write rooms/roomN.json
:name Neon Row room display name
:enter TEXT entry prose
:music N 0 off · 1 calm · 2 eerie · 3 tense · 4 jolly · 5 spooky · 6 noir
:weather N 0 none · 1 rain · 2 snow · 3 embers
:exit e 2 edge exit (n/e/s/w) to room 2; `:exit e -` clears
:room 7 jump rooms (a missing room is a fresh blank one)
:clear drop all paint ops
:hotspot NAME rename the most recently drawn hotspot
:hotmsg look TEXT give the newest hotspot a verb response
:delhot NAME delete a hotspot
:help the cheat sheet
Dialogue trees, prop lock-and-key fields, scale tables and palettes are
data — edit the room JSON (or drive upsert_room over the bus) for those.
The editor covers the 90%: geometry, paint, walkability, depth, hotspots,
props, exits, mood.