spawn
playmake
⌘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 v5.2Lume2mo agoengine v5.1Connection3mo agoengine v5.0For Real3mo agoengine v4.6Atelier3mo agoengine v4.5Surface Tension4mo agoengine v4.4Solid4mo agoengine v4.3Groovy4mo agoengine v4.2Continuum4mo agoengine v4.1Foundations4mo agoengine v0.1Genesis5mo ago

pinned

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

updates

engine v5.2Lume2mo agoengine v5.1Connection3mo agoengine v5.0For Real3mo agoengine v4.6Atelier3mo agoengine v4.5Surface Tension4mo agoengine v4.4Solid4mo agoengine v4.3Groovy4mo agoengine v4.2Continuum4mo agoengine v4.1Foundations4mo agoengine v0.1Genesis5mo ago
← All posts
← All posts

Engine v5.2.24

August 14, 2026

A patch in the Lume line.

what's new

  • Players in other places can now receive state. The classic pattern — queue the party in the lobby, warp to the arena, then tell everyone their match — just works: patchObjectState(playerId, {...}) reaches a player anywhere in the room, and the new getPlayerPlace(playerId) tells you whether someone left the game (null) or is just in another place. No more heartbeats, shepherds, or ticket systems to work around invisible teammates.
  • Turning on pixelate (or chromatic aberration, depth of field, blur) for the first time in a session no longer flashes the screen black while the effect's shaders compile — the game keeps rendering un-graded for those frames and the effect lands as one clean switch.
  • Hitting big things no longer floods the screen with light: the built-in damage flash is calmer by default, sized so a red hit-pulse on a huge tree or wall stays a pulse instead of a full-screen flash. Combat on normal-size enemies still reads exactly like a hit.
  • flash() now takes intensity (0–1), so you can dial an object's hit flash from a subtle glow to the full white-out yourself.
  • Scattered decoration works in multiplayer again. Scatter beds authored into your game's spec (grass, rocks, forests — anything painted or declared with scatter) now appear in multiplayer rooms exactly like they do in solo play. They'd been silently empty in shared rooms; no change needed on your side.
  • Timestamps and big numbers in state are now exact. Storing api.seconds() (or any large number) in state via patchState/setState/direct assignment used to round it by up to ±64 seconds at today's clock scale — enough to break "how long since X" checks in ways that looked like a haunted clock. Stored numbers now come back exactly as written, everywhere, for every player.
  • Game UI that uses drawn art (scripts/tex-*.js images) no longer flashes a big translucent blue square while the art loads. The loading window now paints nothing at all — the art appears when it's ready, and that's the first thing you see.
  • Heightmap worlds can now have real underground. Set underground: true on your terrain (ask Savi, or api.patchTerrain({ underground: true })) and the engine stops treating players below the surface as having fallen through the world — no more being teleported back up out of your basement, tunnel, or subway line. The ground above stays exactly as solid to walk on; players still need a way down that you build (a pit, a shaft, a portal). Below the surface, floors are yours to author — the engine no longer provides a safety net there.