Spawn
spawn / swhat we're building

pinned

start herewhat spawn isfaqfrequently asked questionsthe betthe spawn bet

updates

engine v5.0For Real1 weekengine v4.6Atelier2 weeksengine v4.5Surface Tension3 weeksengine v4.4SolidMay 15, 2026engine v4.3GroovyMay 13, 2026engine v4.2ContinuumMay 9, 2026engine v4.1FoundationsMay 4, 2026engine v0.1GenesisApril 29, 2026

pinned

what spawn isstart herefrequently asked questionsfaqthe spawn betthe bet

updates

For Realengine v5.01 weekAtelierengine v4.62 weeksSurface Tensionengine v4.53 weeksSolidengine v4.4May 15, 2026Groovyengine v4.3May 13, 2026Continuumengine v4.2May 9, 2026Foundationsengine v4.1May 4, 2026Genesisengine v0.1April 29, 2026
← All posts
← All posts

engine v4.5.2

Engine v4.5.2

May 27, 2026

A patch in the Surface Tension line.

what's new

  • Animated models always play something — falls back to an available animation instead of standing still.
  • Savi can now catch editing mistakes that made parts of your world disappear or stop moving.
  • Savi uses clearer, more specific commands when editing your world's atmosphere, terrain, camera, and other settings.
›technical notes
  • Fixed silent T-pose when a draw/mixer channel references a clip name that doesn't exist exactly on the loaded model. Renderer now substring-matches (e.g. walk → Walking) and falls back to the first usable clip; skips rest-pose placeholders (zero duration, empty tracks, or every-track-single-keyframe).
  • Reject misplaced api.spawn() fields transactionally and make invalid pathless api.patch() calls report the runtime mutation API directly to Savi.
  • BREAKING: Removed api.patch(path: string, value: Record<string, unknown>) from ObjectAPI.
  • Restored eight per-slice patch methods: patchAtmosphere, patchTerrain, patchPlayer, patchCamera, patchInputs, patchGodMode, patchUi, patchEngine.
  • Per-place targeting uses the second argument again: api.patchTerrain(p, "main") and api.patchAtmosphere(p, "main") replace the dot-path form.
  • Internal recorded mutation kind tags unchanged — persistence/replay/serialization stay stable.
›migration notes

The unified api.patch(path, value) method is removed. Replace with the corresponding per-slice method.

BeforeAfter
api.patch("atmosphere", p)api.patchAtmosphere(p)
api.patch("terrain", p)api.patchTerrain(p)
api.patch("places.main.terrain", p)api.patchTerrain(p, "main")
api.patch("places.main.atmosphere", p)api.patchAtmosphere(p, "main")
api.patch("player", p)api.patchPlayer(p)
api.patch("camera", p)api.patchCamera(p)
api.patch("inputs", p)api.patchInputs(p)
api.patch("godMode", p)api.patchGodMode(p)
api.patch("ui", p)api.patchUi(p)
api.patch("creatorUi", p)api.patchUi(p, "creatorUi")
api.patch("engine", p)api.patchEngine(p)

Behavior is identical per slice; only the dispatch surface changed.