Describe the While playing presets and spawn groups (#265)

- Concepts: what Live, Balanced and Minimal hold back while a game
  runs, and that the game itself is never throttled.
- Scenes: the new While playing row in the project settings.
- Scene editing: objects spawned at the top level are listed in a
  group named after their asset.
- Development: e2e check count 1562.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adminandClaude Opus 5.5 committed 2026-09-29 11:53:23 +02:00
1 parent a045c4a186
commit 68c8798a70
4 files changed
+28 -3

No files matched your search

+20 -1
@@ -71,6 +71,24 @@ Fixed steps start on a whole screen pixel, so pixel art at 100% stays sharp. The
pixel, and Fit then names the factor in screen pixels (`Fit · 156%`). The choice is saved with
the project, like *Play starts*, but it is no undo step: Ctrl+Z undoes edits, not a look at the game.
**While playing** (#265). How closely the editor follows a running game is one preset in
*Menu → Project settings…*. The game itself runs every frame in each of them, and so does the
picture of it on screen; only the panels are held back. With hundreds of objects spawning and
dying, rebuilding the hierarchy for every one of them cost more than the game.
| Preset | Hierarchy | Inspector and other values | Graph highlights | Scene view behind the Game tab |
|---|---|---|---|---|
| **Live** | every frame | every frame | every frame | keeps drawing |
| **Balanced** (default) | 4 times a second | 4 times a second | every frame | waits until its tab is shown |
| **Minimal** | on pause | on pause | 4 times a second | waits until its tab is shown |
A change in between is kept, not lost: the next update carries it. Pausing (the toolbar, Ctrl+Enter
or a `Pause game` node) brings every panel up to date at once, and picking an object during a run
lists it in the hierarchy at once. The graph and state machine tabs only draw while they are on
screen, so Balanced lets them keep up with every frame. Under Minimal they are held back too, but a
pulse glows for 0.35 s, longer than the gap between two updates, so every pulse still shows. Balanced is also what a project written before there was a
choice plays with. The preset is saved with the project and is an undo step.
**Snapshots** (#231). *Menu → Snapshots…* lists the snapshots of the open project, newest first,
with the local time each was made. **Create snapshot** copies the project as the server has it
stored, under the name typed or, left blank, under the date and time; the autosave is written
@@ -91,7 +109,8 @@ window, not of the space the row has left over — where play turns into a stop
on, and pause into a second play sign while it is held. On the right stand the
notice line, the save status, the frame rate and the **Account** menu. What the bar used to spell
out lives in the menu now: the project list in *Open project…*, the project name, the
**start-scene switch** (*Start scene* / *Active scene*, see **Start scene**), the **symbol scale**
**start-scene switch** (*Start scene* / *Active scene*, see **Start scene**), the **While playing**
preset (see above), the **symbol scale**
of the scene view's icons (see [Scene editing](Scene-editing)) and the collision layers in
*Project settings…*. The active scene is picked where the scenes are — by double-clicking
one in the **Assets** panel. The **Assets** panel's `+` creates an asset and opens its tab; its menu lists the types in
+1 -1
@@ -15,7 +15,7 @@ npm run build # writes dist/ and regenerates index.html
php tools/make-user.php <name> <password> [admin|user] # an account; every tool signs in (see Accounts)
php tests/php/accounts.test.php # the API's account rules, no server needed (CI's gate job)
php tests/php/snapshots.test.php # the snapshot store (#231), the same way
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1551 editor checks, screenshots in /tmp/gm-e2e-*.png
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1562 editor checks, screenshots in /tmp/gm-e2e-*.png
GM_STEPS=20 node tools/e2e.mjs # or 1-12, or 6,20 — a subset while working on one step
./e2e.sh start [GM_STEPS] # the same run detached, see below
./e2e.sh status # live progress, or the last run's result
+5
@@ -198,6 +198,11 @@ group. There are no groups inside groups.
part of a multi-selection moves all selected objects, side by side in their listed order and as
one undo step; a selected child of a selected object travels with its parent.
- **The group row's menu** has *Select members*, *Rename…* and *Ungroup* (the members stay).
- **Spawned objects are grouped by asset** (#265). An object a `Spawn` node places at the top level
goes into the group named after its asset, *Gold* for the gold pickups; a group of that name that
is already there is used, otherwise one is made. Two hundred pickups are then one folded row. A
spawned object with a parent stays under its parent. The name of the object does not change, so a
`Find` looks for it as before; only objects of the same group are drawn as one block at equal `z`.
The object menu adds *Remove from group*. Grouping, renaming, ungrouping and moving in or out
are one undo step each.
- **Order:** a group is listed where its first member stands, with the others moved up behind it.
+2 -1
@@ -25,7 +25,8 @@ Which of the two Play uses is the **Play starts** switch in **menu → Project s
The switch is saved with the **project** (#226), so whoever opens it gets the same answer, and
changing it is an undo step like every other project setting. It stands in the settings dialog
beside the project name, the symbol scale and the collision layers.
beside the project name, the *While playing* preset (see [Concepts](Concepts)), the symbol scale
and the collision layers.
It is captioned with the mode it stands in — *Start scene* or *Active scene*, worded exactly like
the entries of its own menu, so that what you picked and what you read back are the same words.
The start scene is marked with the play triangle in the Assets panel, the active one with a dot.