Dress Up reports · ^du_report(22) · 2026-10-26 · work in progress · about Messed Up Dress Up, a game made with M and N · after ^du_report(21)

How Dress Up Is Made

Who decides what goes in the game, how a change reaches the kids, the rules we keep and why, and how the code is laid out. Written for anyone who wants to help, person or AI agent.

Short answers.

Who decides

From an ask to the kids' screen

The game is a public web page: whatever is on its main branch is what the kids play. So releasing is just pushing, and it happens as soon as a feature works. The kids like to see progress the same day.

an askM, N or Matthew a ticketon the dashboard builttried in a browser quick checkdoes the page load? releaseda version, a push livein about a minute then the speed run: every check, on GitHub's computers;anything slow or broken is fixed in the next version

Each version says what changed, in VERSIONS.md and in the game's own ⚙️ Advanced tab, in words a parent can read: what a player sees, with the buttons' own labels. An open copy of the game notices a newer version and offers it as a chip after its version number.

Why check afterwards? The full set of checks takes the better part of an hour. Waiting for it would mean the kids wait too. So only the quick check (does the page's code load?) comes first; the rest runs after, and a version that turns out slow is marked 🚧🐢 in the game itself until the next one fixes it.

The first rule: 60 frames a second

"I want this toy to be fun for my kids before we have fancy things like gaussian blurs running fast. The priority is 60 FPS at all times, for all actions that a game controller does in the scene." Matthew, 2026-10-16.

The kids play on an old black laptop and an old iPad, not only on fast computers. So walking, running, jumping, climbing, going through doors and dragging the friend must stay smooth everywhere. In practice:

The design rules, and why

Each of these is a call Matthew made, usually after something went wrong in play.

RuleWhy
A place is a place, not a backdropThe bar is the tree house and the witch's woods: things move, there is light and depth, and small surprises. Trees come from shared helpers, never lollipops.
Connected views agreeA place seen through a window, from far away, or from inside and outside is drawn from the same settings. Otherwise the illusion of one connected world breaks.
A new angle is a new drawingThe friend seen from above, or asleep in a tent, is drawn again for that angle, not squashed. And a new view must honour every costume (^du_report(21) shows all 36 checked).
Depth is honestThe friend walks behind what stands nearer and in front of what stands farther. Every standing thing knows its depth.
The wind is outdoorsNothing sways inside a room without a reason.
Nothing scary unless asked forSkeletons start off: M found them scary.
Every setting shows its label and an emoji, and only where it appliesSo a kid can find it, and isn't shown settings that do nothing here.
The settings decide the pictureA saved friend draws exactly the same every time. That is what lets us keep an archive of every version and compare drawings byte for byte.
Nothing a player made is lostResizing a world, or reorganizing the panels, never throws away what a kid built.
Every way out goes somewhereNo door to nowhere, always a way back, and no scenery that promises a place that isn't there.
A dungeon room seen from above with a ledge, stairs and a hole, and a witch with her broom
The rules at work in one picture (from ^du_report(21)): a place with depth (the witch stands behind the ledge's edge), drawn for its own angle, every way out a real way.

The code in one page

Plain JavaScript and SVG, about 30 files run in order, no build step: it runs straight from the files, even from a disk. The order matters, because each file may use only what came before it.

FilesWhat they hold
01 – 02The settings and their defaults (DEFAULTS, state), and shared helpers.
03 – 08The friend: face, hair, ghost, costumes, underwear, body.
09 – 15The places: houses, castle, castle rooms, outdoors (and the dungeon room), how a place is built and chosen.
16 – 18What stands where and what blocks walking; moving and climbing; drawing it all (draw).
19 – 24Music, the control tabs (TABS), full screen, the heads-up display, save and load.
25-*The world designer, scripting (Hazel, JS and Fumola rules), recordings, saved friends.
26Dragging, and starting the game. Last, because it draws the first picture.

Adding a place means one line in each of a handful of lists (its name, its group, its drawing, the friend's size there, where the friend arrives, its music). Adding a costume means an entry for what it wears and one for each special view. The code's own comments name the ticket behind every choice, so grep "ticket 412" finds the story of any feature.

How we check our work

Where things live

For AI agents

This report is the explanation; agent-instructions.md is the short checklist that goes with it: the exact release steps, the names in the code that matter, and the testing traps. Read both before changing anything, and keep both up to date in the same commit as the change that moves them.

Updates

2026-10-26: first draft, published as a work in progress. It replaces most of agent-instructions.md, which was 380 KB of history no person could read (its long version is kept in git, at commit f356855).