Topbar rework (#183): the bar is five icon buttons - menu, undo, redo, play, pause - the Scene picker is gone and the active scene is switched by double clicking it in the Assets panel, New project / Open project... / Project settings... sit in the menu, and the collision layers moved from their own entry into the settings dialog next to the name and the Play starts switch; check count 1147
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent
0b7f0c2ff5
commit
c0b74fde91
6 files changed
+31
-20
No files matched your search
+2
-1
@@ -13,7 +13,8 @@ sent, *Wrong user name or password* when the server refuses the pair.
|
||||
The **Account** menu sits at the far right of the toolbar and holds everything about the account:
|
||||
who is signed in (as an entry that cannot be picked), *Change password* and *Logout*. Logout ends
|
||||
the session and brings the sign-in screen back. The name stands in the window title as well
|
||||
(`Game Maker — user`), because the toolbar itself has no room to spare for a label.
|
||||
(`Game Maker — user`) rather than as a second label in the bar, which since #183 carries icons
|
||||
and no words at all.
|
||||
|
||||
Signing in and out never reloads the page and never builds a second canvas: the picture changes,
|
||||
nothing else. What is unsaved is written before the session ends, the editor then lets go of
|
||||
|
||||
+7
-2
@@ -104,7 +104,11 @@ src/viewport/ view (transforms), items (what to draw), symbols (how to
|
||||
particles (one ParticleContainer per source), tilemap (one container per layer),
|
||||
drawOrder (objects and tilemap layers by z, #174), activeCamera — no editor concepts,
|
||||
so tests reach it freely
|
||||
src/editor/ App → Editor (layout + ticker), PlaySession (the run), ProjectSession (load/create),
|
||||
src/editor/ App → Editor (layout + ticker), PlaySession (the run),
|
||||
ProjectSession (load/create/delete plus the top bar's one menu, #183),
|
||||
OpenProjectDialog (the project picker behind "Open project…"),
|
||||
ProjectSettingsDialog + settingsChanges (name, the start-scene switch and the collision
|
||||
layers in one dialog; the pure rule of what Apply has to carry out),
|
||||
EditorRun (run in editor), state, actions, shortcuts, debugHook,
|
||||
textProbe (finding widgets by their text — the ground floor of the test hook, shared with the sign-in screen),
|
||||
auth/LoginScreen + auth/PasswordDialog + auth/loginRules (the sign-in screen and the change-password dialog in the canvas, and what either may complain about, #177/#182), autosave,
|
||||
@@ -131,7 +135,8 @@ src/editor/inspector/ Inspector panel, host (what a section builds into), field
|
||||
src/editor/panels/ AssetPanel, assetGroups (groups by type and their order, #176), assetIcons (one SVG per
|
||||
asset type in icons/, shared by the panel, the + menu, the tabs and Scene objects,
|
||||
plus the List, Game and Plugins tabs' own three, which stand for no asset),
|
||||
assetMenu (the two groups of the + menu), HierarchyPanel, Toolbar,
|
||||
assetMenu (the two groups of the + menu), HierarchyPanel,
|
||||
Toolbar + toolbarIcons (five icon buttons, no captions: menu, undo, redo, play, pause, #183),
|
||||
TilemapPanel (tools, tiles and layers of the one selected tilemap, beside the scene view, #142;
|
||||
painting itself is SceneViewport)
|
||||
src/editor/graph/ GraphEditor (header, breadcrumb), GraphCanvas, graphView (zoom limits, grid, panAndZoom — shared with NodeBoard and the Tile tab's TileCanvas), EdgeLayer (curves and fold marks), graphMenus,
|
||||
|
||||
+3
-3
@@ -106,9 +106,9 @@ Tiles can be one-way as well (see [Tilemaps](Tilemaps#one-way-tiles)).
|
||||
|
||||
## Collision layers
|
||||
|
||||
A project has up to 16 named **collision layers** (#152), edited under **Project → Collision
|
||||
layers…**; a new project has one, *Default*. Every collider and every tilemap names the layer it
|
||||
sits on (**Layer**) and the layers it collides with (**Collides with**, a tick per layer).
|
||||
A project has up to 16 named **collision layers** (#152), edited in the top bar's **menu →
|
||||
Project settings…**; a new project has one, *Default*. Every collider and every tilemap names the
|
||||
layer it sits on (**Layer**) and the layers it collides with (**Collides with**, a tick per layer).
|
||||
|
||||
**Two things meet only when each one names the layer of the other.** The rule is symmetric, as in
|
||||
the physics engine itself, so there is no pair that collides only one way: giving the player's
|
||||
|
||||
+10
-7
@@ -17,7 +17,7 @@
|
||||
| **Variables asset** | Declarations and nothing else — no graph, no position, never placed. A `Variables` node naming it reads and writes **one value per key for the whole run**, however many graphs point at it. The values start at the declared ones on every Play and are never written back, so playing cannot change the project; while a run is on the asset's inspector shows them live and an edit there reaches the run at once. Two such assets may declare the same name without meeting. See [Behaviors](Behaviors). |
|
||||
| **Run in editor** | A switch only behaviors have (default off). With it on the behavior keeps running while the project is **not** playing — and unlike Play it then edits the *saved* model: what it moves or writes is a real change, autosaved and not on the undo stack. See *Running without Play*. |
|
||||
| **Collider** | A shape (box or circle) for collision detection, placed as a **child** of the object it belongs to (its *body*). Drawn as a green outline in edit mode only. |
|
||||
| **Collision layer** | One of up to 16 named layers of the project (**Project → Collision layers…**). A collider or tilemap names the layer it is on and the layers it **collides with**; two of them meet only when each one names the layer of the other. A new project has one layer, *Default*, which every collider is on and meets — so nothing collides differently until a layer is named. See [Colliders](Colliders#collision-layers). |
|
||||
| **Collision layer** | One of up to 16 named layers of the project (**menu → Project settings…**). A collider or tilemap names the layer it is on and the layers it **collides with**; two of them meet only when each one names the layer of the other. A new project has one layer, *Default*, which every collider is on and meets — so nothing collides differently until a layer is named. See [Colliders](Colliders#collision-layers). |
|
||||
| **Rigidbody** | Placed as a **child** of an object, it hands that object to the physics engine while playing: it falls with the scene's gravity, bounces and rests on colliders, pushed by what it meets. At most one per object. See [Physics](Physics). |
|
||||
| **Override** | A per-object value that replaces the asset's value for one property. Only changed keys are stored; the inspector paints their label gold and offers a reset (↺) and an **apply** (↑) that writes the value into the asset instead. Both appear only where the value really differs from its base — an override carrying the asset's own value is none. |
|
||||
| **Default** | Every property has a schema default. Asset values that differ from it are marked gold in the inspector and can be reset (↺) the same way an override can. The asset's name in the **Assets** panel carries the same gold while any of them does (`assetDeviates`, `src/core/properties/deviation.ts` — the inspector marks the rows of that same schema, so the list cannot claim a deviation the inspector then fails to show). A behavior's variables are not in it: their default is declared on the variable itself, so the asset value cannot differ from it. |
|
||||
@@ -38,12 +38,15 @@ one, so switching it off hands the view to the next; with none on the tab stays
|
||||
shows what Play would show, minus the editor symbols. Play has no built-in behaviour (no input,
|
||||
no movement): everything that happens is defined by behavior graphs.
|
||||
|
||||
**Toolbar and panels.** The toolbar holds the **Project** menu (new project, switch project,
|
||||
*Delete this project…*), the project name (type to rename), the **Scene** picker for the active
|
||||
scene — usable while a run is on, because it only moves the editor's view and never the running
|
||||
world — Undo/Redo, the **start-scene switch** (*Start scene* / *Active scene*, see **Start
|
||||
scene**), Play/Pause, and on the right the notice line, the save status and the frame
|
||||
rate. The **Assets** panel's `+` creates an asset and opens its tab; its menu lists the types in
|
||||
**Toolbar and panels.** The toolbar carries five **icon buttons** and no captions (#183): the
|
||||
**menu** (three bars) on the left with *New project*, *Open project…* and *Project settings…*,
|
||||
**undo** and **redo** beside it, and **play** and **pause** in the middle — play turns into a stop
|
||||
square while a run is on, 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**) 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
|
||||
two alphabetical groups, first what can be placed into a scene, then what only lives in the library
|
||||
(#43) — the line between them answers the question that follows right after "which type?".
|
||||
Every type has an **icon** of its own, the same wherever the type shows: in the `+` menu, on the
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ npm run check # typecheck + lint + format:check + tests, the gate CI runs
|
||||
npm run build # writes dist/ and regenerates index.html
|
||||
./build.sh # the same under `set -o pipefail`, for callers that pipe the output
|
||||
php tools/make-user.php <name> <password> # an account; every tool signs in (see Accounts)
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1138 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 1147 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
|
||||
|
||||
+8
-6
@@ -5,9 +5,10 @@ Those are three different questions, and this page is about keeping them apart.
|
||||
## Active scene, start scene
|
||||
|
||||
The **active scene** is what the editor shows: the Scene tab draws it, the hierarchy lists it, a
|
||||
dropped asset lands in it. It is set by the toolbar's **Scene** picker, by double-clicking a scene
|
||||
in the Assets panel, or through *Set as active scene* in its context menu. `●` marks it in the
|
||||
list.
|
||||
dropped asset lands in it. It is set by double-clicking a scene in the Assets panel, or through
|
||||
*Set as active scene* in its context menu — the toolbar has no scene picker since #183. `●` marks
|
||||
it in the list. Both ways stay open while a run is on: they only move the editor's view and never
|
||||
touch the running world.
|
||||
|
||||
The **start scene** is where a run begins — the title screen, the first level, whatever a player
|
||||
would see first. It is named on the **project**, not on the scene asset: right-click a scene in
|
||||
@@ -15,7 +16,7 @@ the Assets panel → **Set as start scene**. `▶` marks it, and the same place
|
||||
scene** to take the name back. A project that never names one has none, and then the two questions
|
||||
have the same answer.
|
||||
|
||||
Which of the two Play uses is the **switch next to the Play button**:
|
||||
Which of the two Play uses is the **Play starts** switch in **menu → Project settings…**:
|
||||
|
||||
| Switch | What Play builds its world from |
|
||||
| --- | --- |
|
||||
@@ -24,10 +25,11 @@ Which of the two Play uses is the **switch next to the Play button**:
|
||||
|
||||
The switch is remembered in the **browser**, not in the project: it says how *you* are working
|
||||
this afternoon, not what the game does, and it must never turn up in a diff of the project file.
|
||||
It stands in the settings dialog beside the project name and the collision layers, which *do*
|
||||
belong to the project — the dialog is the one place these are edited, not the split it says.
|
||||
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.
|
||||
Which scene that currently is stands in the **scene selector** on the left, and the start scene is
|
||||
marked `▶` in the Assets panel.
|
||||
The start scene is marked `▶` in the Assets panel, the active one `●`.
|
||||
|
||||
The point of the two modes is that a game with a title screen is otherwise tedious to work on:
|
||||
every run would begin at the title, three clicks away from the level you are editing. *Active
|
||||
|
||||
Reference in new issue
Block a user