Spawn
spawn / swhat we're building

pinned

start herewhat spawn isfaqfrequently asked questionsthe betthe spawn bet

updates

engine v5.1Connection6 daysengine v5.0For Real2 weeksengine v4.6Atelier3 weeksengine v4.5Surface TensionMay 22, 2026engine 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

Connectionengine v5.16 daysFor Realengine v5.02 weeksAtelierengine v4.63 weeksSurface Tensionengine v4.5May 22, 2026Solidengine 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 v5.1.5

Engine v5.1.5

June 23, 2026

A patch in the Connection line.

what's new

  • Bloom is now much more performant.
  • Finished combat effects are cleaned up correctly in multiplayer games instead of accumulating and slowing the room down.
  • Custom event listeners and sound-finished hooks now work on player-owned and shared-room objects.
  • Visiting players can interact with and drive hosted vehicles with the correct mounted state and follow camera, without the room rejecting the handoff as not_simulator.
  • Games on Retina displays are faster.
  • Shadows are cheaper for inactive lights.
  • Custom paired controls now follow the order you write them, so reversing a pair reliably reverses the control.
›technical notes
  • Replaced Three.js BloomNode with a fixed-topology Dual Kawase bloom pyramid, reducing bloom render passes from 12 to 9 while preserving live strength, radius, and threshold controls.
  • Moved runtime FX reaping onto each entity's active simulator so client-auth owners and place hosts publish completed-effect deletes through the normal state-delta lane.
  • Moved onSoundEnd tracking and dispatch onto the active simulator instead of the server replica.
  • Added server-sequenced, place-scoped custom-event fanout so client-auth simulators can invoke their local api.on subscriptions.
  • Made vehicle/control handoffs server-canonical, with two-phase A→B switching that uploads the old target's onControlEnd cleanup before the server atomically grants the new target and runs onControlBegin on its simulator.
  • Fixed severe WebGPU frame-presentation stalls by avoiding 4x scene MSAA on Retina DPR-2 displays, where native pixel density already supplies edge smoothing.
  • Skipped PCF filtering and transmitted-color texture sampling for resident shadow lights whose runtime intensity is zero, while preserving stable lighting pipelines.
  • BREAKING: Changed keyboard axis polarity from a hidden key-name lookup to positional negative/positive pairs. input-config.ts now assigns alternating -1/+1 scales to slash-separated keys, so arbitrary pairs such as f/r behave predictably and reversing the string reverses the axis.
›migration notes

Reorder every multi-key inputs.axes.*.keys binding into explicit negative/positive pairs. The first key in each pair now produces -1 and the second produces +1, regardless of the key names.

Replace forward/back bindings such as { keys: "w/s" } with { keys: "s/w" }, and { keys: "ArrowUp/ArrowDown" } with { keys: "ArrowDown/ArrowUp" }. Existing negative/positive bindings such as { keys: "a/d" }, { keys: "q/e" }, and { keys: "a/d/ArrowLeft/ArrowRight" } do not need changes. For arbitrary controls, order each pair by meaning; for example { keys: "f/r" } means F = -1 and R = +1. A single-key axis still produces +1.