spawn
playmake
Ctrl+K
sign in
make a game
PlayMake
spawn / aboutwhat we're building

pinned

start herewhat spawn isfaqfrequently asked questionsguidebring a game you already madethe betthe spawn bet

updates

engine v6.0One Place4w agoengine v5.2Lume3mo agoengine v5.1Connection3mo agoengine v5.0For Real4mo agoengine v4.6Atelier4mo agoengine v4.5Surface Tension4mo agoengine v4.4Solid4mo agoengine v4.3Groovy5mo agoengine v4.2Continuum5mo agoengine v4.1Foundations5mo agoengine v0.1Genesis5mo ago

pinned

start herewhat spawn isfaqfrequently asked questionsguidebring a game you already madethe betthe spawn bet

updates

engine v6.0One Place4w agoengine v5.2Lume3mo agoengine v5.1Connection3mo agoengine v5.0For Real4mo agoengine v4.6Atelier4mo agoengine v4.5Surface Tension4mo agoengine v4.4Solid4mo agoengine v4.3Groovy5mo agoengine v4.2Continuum5mo agoengine v4.1Foundations5mo agoengine v0.1Genesis5mo ago
← All posts
← All posts

Engine v5.2.31

August 20, 2026

A patch in the Lume line.

Sixteen fixes in one: desktop clicks work again in click-driven games, big built-out worlds run much smoother while you build, scripted movers stop freezing in long-running multiplayer rooms, long multiplayer music stops dying after a second, riders stay seated instead of running in place, rotations stick while you drag, 2D characters stop flashing white between animations, spawn-storms no longer flood the room, and pause menus can catch the first Esc.

what's new

  • Characters stay seated — riding a vehicle no longer forces the walk animation. A character parented to a moving vehicle or platform no longer plays walk/run at the vehicle's speed, and npc: { locomotion: false } now releases the player avatar's engine gait too, so a seat clip plays alone.
  • Your character appears even where animations can't bake — static beats invisible. Where animations can't bake (such as in local development), characters load as their unanimated base model instead of holding the placeholder orb forever.
  • Savi can no longer mistake a frozen view for your live screen — she says when her eyes are stale instead of guessing from old pixels. When she captures a player's screen and that player's tab has silently stopped receiving updates, she now gets told the frame is stale instead of treating old pixels as the live game.
  • Buttons and clickables work with the mouse again on desktop. 5.2.30's touch-tap fix was classifying desktop clicks as UI wherever any script-wired or cursor-styled element sat — in click-driven games, every mouse press could read as a UI hit and world clicks went dead. Desktop clicks now classify exactly as they did in 5.2.21, while phones keep all of 5.2.30's touch fixes (script-wired buttons and pads still take the tap over the engine stick).
  • Objects keep their rotation while you move them. Rotating an object and then dragging it somewhere no longer snaps the rotation back mid-drag — a background save arriving while your hand is on the object can't undo what you just did.
  • Rapid spawn-and-despawn effects now cost the connection nothing while it is catching up. Things that appear and vanish before the room ever hears about them are simply never sent, so real updates (movement, commands) keep flowing at full rate under any spawner load.
  • Your game can react when the mouse cursor is freed — pause menus on first Esc now work. The browser eats the Esc that exits mouse capture, so scripts could never see it; now input.actions.pointerLockLost fires the frame the lock releases and input.axes.pointerLocked reads 1 while the crosshair owns the aim — no declarations needed.
  • Your edits always land in YOUR room — never an invisible copy — even right after joining. Before, Savi's builds could land in a copy of the world you couldn't see (especially during busy building sessions or right after you joined). Now what Savi builds is what you watch appear.
  • Long music tracks in multiplayer rooms no longer cut out after a second — the song keeps playing through world syncs and rematches.
  • Worlds with rapid spawn-and-despawn effects no longer flood the connection — everyone's movement stays smooth. Spawners that mint and destroy entities continuously used to flood the room with bookkeeping and could starve real updates (frozen movers, "like I disconnected without disconnecting"); their churn now travels light and dead spawns fold away under pressure.
  • 2D characters no longer flash white when switching animations — they hold their pose while the next animation loads. The spinning loading rings now appear only the very first time a sprite paints, when there is nothing else to show.
  • Texture scripts no longer break image loading — script-driven textures and image uploads work together. A game whose art is drawn by texture scripts (scripts/tex-*.js) no longer collects false "FAILED to generate — rename it" verdicts against healthy scripts, and animated script textures stop getting fake frame grids guessed at them.
  • State handles never go stale — edits after a state change always land. A script can grab its state once and keep using it: reads see every later patch the moment it happens, and writes always reach the world, even right after a respawn-style state reset.
  • Big built-out worlds run much smoother while you build. A background cleanup check used to re-scan every object in the world every tick — in decorated worlds that alone could eat most of the frame budget. It now only wakes up when something actually changes.
  • Scripted movers keep moving in long-running multiplayer worlds. Anything animated with Math.sin/Math.cos of game time — patrolling animals, bobbing platforms, spinners — used to freeze in place in multiplayer rooms (moving only once every few minutes) once the room clock got large. They move continuously now.