A page that counts things is only true until the count changes
The e2e suite grew a scope step and stands at 868 checks; the node set gained Emit and the three state-machine nodes; the index lost track of Fonts and Particles; and the closing paragraph on state machines still promised a per-instance state the Scope section had already taken back.
1 parent
d73ce57a7c
commit
4ae8083a7c
5 files changed
+17
-10
No files matched your search
+1
-1
@@ -45,7 +45,7 @@
|
||||
|
||||
```
|
||||
web/index.html Vite source page (dev) index.html built page (generated, served)
|
||||
src/core/model/ Project (object holders), Asset + AssetTypes, SceneObject, Properties (value types), hierarchy, walk (generic parent/child walks), instance (container content resolved from its template), usages (where an asset is used), container (the cycle guard), placement (what may be dropped where), texture (frames and the slice grid), animation (which frame at time t), graphLookup (what a graph sees of the project: behaviors to run, state machines to read), Scope (local or shared for the whole run)
|
||||
src/core/model/ Project (object holders), Asset + AssetTypes, SceneObject, Properties (value types), hierarchy, walk (generic parent/child walks), instance (container content resolved from its template), usages (where an asset is used), container (the cycle guard), placement (what may be dropped where), texture (frames and the slice grid), animation (which frame at time t), graphLookup (what a graph sees of the project: behaviors to run, state machines to read), Scope (where a state machine's current state lives: per instance or one for the run — variables are shared by living on a Variables asset instead)
|
||||
src/core/properties/ PropertySchema, kinds (one row per value kind), listItems (an item's kind, read off its value), resolve (the only override merge), deviation (what is gold), collider/camera/bounds geometry, aspect, enabled, editorRun, assetRef/textureRef (how a reference reads)
|
||||
src/core/commands/ undoable commands, CommandStack, SetBagValueCommand base, require.ts (validated lookups, and what an instance may not change), naming.ts
|
||||
src/core/graph/ graph model, NodeRegistry/NodeContext/values, interpreter, dropTarget, nested (behaviors as nodes),
|
||||
|
||||
+2
-2
@@ -97,7 +97,7 @@ shown on the node and editable in the inspector.
|
||||
deliberately not used: its delay and rate are an operating-system setting, not a game's. Both
|
||||
rows stay off the node body while the delay is 0, so a plain key node keeps its single line.
|
||||
- **Node set** (`src/core/graph/nodes/`, one file per node): events `On start`, `On enable`, `On update`, `On disable`, `On destroy` (see *Lifecycle*), `On key down/up/held`,
|
||||
`On timer`, `On collision enter/stay/exit`, `On click` (the mouse pressed on the owner — anywhere when it has none), `On animation finished`, `Start` · flow `Branch`, `Sequence`, `Repeat`, `Run behavior`, `End` · data `Self`, `Owner`, `Parent`, `Object by name`, `Name of`,
|
||||
`On timer`, `On collision enter/stay/exit`, `On click` (the mouse pressed on the owner — anywhere when it has none), `On animation finished`, `Start` · flow `Branch`, `Sequence`, `Repeat`, `Run behavior`, `End`, and the three that read a state machine, `State branch`, `Set state`, `State transition` (see *State machines*) · data `Self`, `Owner`, `Parent`, `Object by name`, `Name of`,
|
||||
`Is asset` (is this object an instance of asset X — how you tell what you collided with),
|
||||
`Variables`, `Properties` (every property row of the target's type, the transform rows `scale`, `rotation`, `mirrorX`, `mirrorY` included — how a graph turns a sprite), `Get position` (local and world), `Is enabled`, literals `Number`/`Text`/`Boolean`/`Texture`, `Add/Subtract/Multiply/Divide`,
|
||||
`Min/Max/Abs/Sqrt/Clamp`, `Floor/Ceil/Round`, `Modulo`, `Random`, `Time`, `To text`, `To number`, `Join text`,
|
||||
@@ -109,7 +109,7 @@ shown on the node and editable in the inspector.
|
||||
normalized direction, so diagonals are not faster), `Compare`, `And/Or/Not`, `Key is down`,
|
||||
`Mouse position`, `Mouse button`, `Is hovered`, `Is touching` ·
|
||||
actions `Move` (dx, dy, scale, dt — connect an event's dt for per-second movement; in the object's own axes, which a turned parent turns too), `Set position`, `Spawn`
|
||||
(asset setting + x/y/z, optional parent → outputs the new object), `Destroy`, `Log`, `Stop game`, `Restart game`. A node type is one file exporting a `NodeDef`
|
||||
(asset setting + x/y/z, optional parent → outputs the new object), `Destroy`, `Emit` (starts a particle source over, see *Particles*), `Log`, `Stop game`, `Restart game`. A node type is one file exporting a `NodeDef`
|
||||
(ports, settings, `run`), listed in `nodes/index.ts`; palette, ports, validation and
|
||||
inspector fields are generated from it. A port may declare a `default` for its inline value
|
||||
(e.g. `Move.scale = 1`), shown on the node and in the inspector.
|
||||
|
||||
+4
-3
@@ -12,7 +12,7 @@ npm run check # typecheck + lint + format:check + tests, the gate CI runs
|
||||
# code is lost (tail's is reported), so a red run reads as green
|
||||
npm run build # writes dist/ and regenerates index.html
|
||||
./build.sh # the same under `set -o pipefail`, for callers that pipe the output
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 862 editor checks, screenshots in /tmp/gm-e2e-*.png
|
||||
node tools/seed-e2e.mjs && node tools/e2e.mjs # 868 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
|
||||
@@ -63,7 +63,8 @@ to touch it.
|
||||
The e2e run is a list of steps in `tools/e2e/` (hierarchy, inspector, play, assets, drawing,
|
||||
graph, parenting, colliders, containers, text/enabled, menus, textures, frames, overflow, aspect,
|
||||
container tab, run-in-editor, pause, nested behaviors, key repeat, list tab, struct variable,
|
||||
variable nodes, property nodes, animations, state machines, console, shaders, transforms, fonts, particles) that build on each other's
|
||||
variable nodes, property nodes, animations, state machines, console, shaders, transforms, fonts,
|
||||
particles, shared scope) that build on each other's
|
||||
scene state and share the CDP driver in `tools/lib/harness.mjs` — `press`, `undo`, `play`,
|
||||
`object(id)`, `world()`, `mutate(js)` and friends, so a check reads like the interaction it
|
||||
exercises.
|
||||
@@ -171,4 +172,4 @@ widths to find click points. The **render device is not in this repo** — `/dev
|
||||
and a 1 GB `/dev/shm` come from `container.options` in the runner's own `config.yaml`, which
|
||||
applies to every job on that runner. Without them chromium falls back to llvmpipe, which gets
|
||||
WebGL 1.0 only. Measured in the job container: `ANGLE (Intel, Vulkan 1.3.230, HD Graphics 630)`,
|
||||
WebGL 2.0, and the same 862 checks as here.
|
||||
WebGL 2.0, and the same 868 checks as here.
|
||||
+4
-2
@@ -11,12 +11,14 @@ Live: <https://nockal.com/game-maker/> · Widget playground: <https://nockal.com
|
||||
|---|---|
|
||||
| [Concepts](Concepts) | Assets, scene objects, overrides, containers, play mode, the camera, the console, editing while playing, running without Play |
|
||||
| [Scene editing](Scene-editing) | Placing by drag, editor symbols, z-order, hierarchy and parenting, the editor offset |
|
||||
| [Behaviors](Behaviors) | Node graphs: variables and properties, the node set, structs and lists, loops, behaviors as nodes, editing the graph, the live view |
|
||||
| [Behaviors](Behaviors) | Node graphs: variables and properties, Variables assets, the node set, structs and lists, loops, behaviors as nodes, editing the graph, the live view |
|
||||
| [Colliders](Colliders) | Collider assets, collision events, blocking movement |
|
||||
| [Textures](Textures) | Getting images in, where they go, tinting, the filter, frames, upload limits |
|
||||
| [Fonts](Fonts) | Uploading a typeface, what a text wears, what the editor falls back to |
|
||||
| [Animations](Animations) | Animation assets, the Animation tab, how they run |
|
||||
| [State machines](State-machines) | The state machine asset, named transitions, `State branch`, `Set state` and `State transition` |
|
||||
| [State machines](State-machines) | The state machine asset, its scope, named transitions, `State branch`, `Set state` and `State transition` |
|
||||
| [Shaders](Shaders) | The shader asset, the Shader tab, the node set, the Adjust colors recipe, wearing a shader |
|
||||
| [Particles](Particles) | The particles asset, a particle as a formula of its age, the source's rows, the Particles tab |
|
||||
| [Containers](Containers) | Editing a template, instances and their edits, screens without scene switching |
|
||||
| [Keyboard](Keyboard) | Every shortcut |
|
||||
|
||||
|
||||
+6
-2
@@ -72,8 +72,12 @@ ports belong to is read off the graph, not off a running value — the inline pi
|
||||
ports, exactly as `Run behavior` knows its behavior only as a setting. Picking another machine
|
||||
orphans the edges of the old states, the way any setting that decides a node's ports does.
|
||||
|
||||
**The current state is the behavior instance's own**, kept beside its variables
|
||||
**A local machine's current state is the behavior instance's own**, kept beside its variables
|
||||
(`NodeContext.states`, machine id → state id): two crates running the same behavior are in
|
||||
states of their own, and a behavior run through `Run behavior` starts in no state, as it starts
|
||||
with fresh variables. A state machine is a **kind** like a texture — a variable, a struct field,
|
||||
with fresh variables. A **global** one is kept for the run instead (`SharedState.states`, built
|
||||
once per run in `core/graph/sharedState.ts`) and every instance reads and moves that one — which
|
||||
bag a node touches is decided by the machine's scope, not by the node (`stateBag`). Neither
|
||||
survives a stop: both start in no state again on the next Play, the way a Variables asset starts
|
||||
at its declared values. A state machine is a **kind** like a texture — a variable, a struct field,
|
||||
a list item (tagged `{"$statemachine": id}`), a port — and a `statemachine` asset is never placed.
|
||||
Reference in new issue
Block a user