# Game Maker A browser-based tool "one step before a game engine": create **assets** (scenes, cameras, sprites), place them into scenes, tweak their properties in an inspector and press **Play** – all in one program, all drawn inside a single WebGL canvas. Live: · Widget playground: **The documentation is the wiki:** – every concept, node, tab and shortcut, plus the architecture and the development workflow. This file is the short way in. ## In one screen - An **asset** is a named, typed thing (scene, camera, sprite, text, behavior, collider, container, texture, font, sound, animation, state machine, shader, particles, variables) with properties and no position. - A **scene object** places an asset: position, sparse **overrides** of its properties, an optional parent. Only what differs from the asset is stored; the inspector paints it gold and offers ↺ / ↑. - A **container** is a reusable group edited once and placed many times; its content is resolved from the template on every read. A **screen** is a container switched on and off. - A **behavior** is logic as a node graph, placed like anything else and parented to the object it acts on. Play has no built-in behaviour – everything that happens is a graph. - **Play** runs a throwaway copy of the project; every panel stays usable and Stop brings back exactly what was saved. ## Quick start Node 22 is required. ```bash npm install npm run dev # http://localhost:5175/game-maker/dist/ – API calls are proxied to production npm run check # typecheck + lint + format:check + unit tests – the gate CI runs too npm run build # writes dist/ and regenerates index.html; the folder is what nginx serves ``` The browser suite and the three example games need a machine with a GPU: ```bash node tools/seed-e2e.mjs && node tools/e2e.mjs # the editor, 1009 checks (GM_STEPS=20 for one step) node tools/seed-jumprun.mjs && node tools/smoke-jumprun.mjs node tools/seed-tetris.mjs && node tools/smoke-tetris.mjs node tools/seed-actor.mjs && node tools/smoke-actor.mjs ``` Every push runs all of it on the Gitea runner – the gate as one job, build and suite as another beside it – so locally take the gate plus the step your change touches and leave the full run to CI. Details, the GPU requirement and the detached runner are in [Development](https://git.nockal.com/meleki/game-maker/wiki/Development). ## Documentation | Page | What it covers | |---|---| | [Concepts](https://git.nockal.com/meleki/game-maker/wiki/Concepts) | Assets, scene objects, overrides, play mode, the camera, the console | | [Scenes](https://git.nockal.com/meleki/game-maker/wiki/Scenes) | The edited scene, the start scene, and switching scenes from a graph | | [Scene editing](https://git.nockal.com/meleki/game-maker/wiki/Scene-editing) | Placing, z-order, hierarchy, the editor offset | | [Behaviors](https://git.nockal.com/meleki/game-maker/wiki/Behaviors) | Node graphs: variables, the node set, structs and lists, loops, nesting, editing | | [Colliders](https://git.nockal.com/meleki/game-maker/wiki/Colliders) | Collision events and blocking movement | | [Textures](https://git.nockal.com/meleki/game-maker/wiki/Textures) | Images, frames, nine-slice, the filter, upload limits | | [Fonts](https://git.nockal.com/meleki/game-maker/wiki/Fonts) | Font assets, the picker, what a text falls back to | | [Sounds](https://git.nockal.com/meleki/game-maker/wiki/Sounds) | Sound assets and `Play sound` | | [Animations](https://git.nockal.com/meleki/game-maker/wiki/Animations) | Animation assets and the Animation tab | | [Shaders](https://git.nockal.com/meleki/game-maker/wiki/Shaders) | Shader graphs a sprite wears, their node set, the properties they declare | | [Particles](https://git.nockal.com/meleki/game-maker/wiki/Particles) | Particle graphs: a particle as a function of its age | | [State machines](https://git.nockal.com/meleki/game-maker/wiki/State-machines) | The asset, named transitions, `State branch`, `Set state` and `State transition` | | [Containers](https://git.nockal.com/meleki/game-maker/wiki/Containers) | Templates, instances, screens | | [Keyboard](https://git.nockal.com/meleki/game-maker/wiki/Keyboard) | Every shortcut | | [Architecture](https://git.nockal.com/meleki/game-maker/wiki/Architecture) | Stack, source layout, the rules that keep it organised | | [Development](https://git.nockal.com/meleki/game-maker/wiki/Development) | Commands, the e2e suite, the example games, CI | | [API](https://git.nockal.com/meleki/game-maker/wiki/API) | The PHP JSON API and the project document | ## Ideas, gaps and bugs They live in the issue tracker: . What is not there yet is listed on the wiki's [Home](https://git.nockal.com/meleki/game-maker/wiki) page.