Engine v5.2.38
September 1, 2026
A patch in the Lume line.
Placeholder shapes disappear when a model lands on them, a returning player's whole character comes back for everyone, repeated digging and filling no longer slows the game down, scripted shapes respect their shadow settings and land on the ground where they stand, big skybox uploads render at 4K, and Savi's builder stays in your room for the whole session — and a first-person camera renders the eye height its script authored.
what's new
- When a script moves many objects at once and one of the entries is shaped wrong (for example the position sits next to the id instead of inside
properties), the log now says which entry was skipped and why, instead of the call silently doing nothing. - Object previews now say when a custom material's texture lookups show as flat white because the preview booth doesn't sample textures — so a white preview reads as booth policy, not a broken texture.
- Savi's isolated object previews now say when an object's texture was not part of the render, so a preview that looks blank or white no longer reads as a broken texture.
- When a camera script moves its own eye (a crouch, a lean, a lower stance) and the engine's mouse-look camera does not follow, the game's logs now say so and name the knob for eye height. Before, the picture stayed put with no message anywhere saying why.
- A prop whose collider file can't be fetched now falls back to its own model's shape at once instead of retrying forever. If the model itself can't be fetched either, the retry stops after one honest log line instead of looping every few seconds.
- Games that send players to different rooms (a routing script, or "first open room") do that on the published game again — before, every player landed in the same room.
- Swapping a model onto a placeholder shape now removes the placeholder. Before, an object built as a generated shape and later given a
modelcould keep drawing the old shape inside the new model untilprimitive: nullwas written as well. - Scripted shapes attached to a parent and shaped to the ground now land where they actually stand. Before, a child object created together with its parent could sample the terrain at the wrong spot and float or sink by the terrain's height — and stay that way until the game was rebuilt.
- A player who drops and comes back is visible to everyone already in the room again, not just a name tag. Before, if your connection blipped mid-game and you came back, the other players could see your name floating over nothing — your character's body was missing on their screens until they reloaded. Now your whole character comes back for everyone the moment you do.
- Savi's log reads now say how old each line is — "14m ago", "since 3h ago · last 2s ago · ×6", or "before your last 6 saves" — so an old warning is no longer mistaken for a live one, and a warning that is still firing shows up when she asks for recent logs.
- Reading a player's client logs works in every kind of room again, including local dev rooms.
- Script-budget warnings now say how long a tick is in your game, so a 30Hz game is not misread as running twice over budget.
- Fixed a rare wedge where a saved library file looked updated in Savi's file tools but the running game kept using the old numbers until the room restarted. A saved script now has exactly one home in the game, so an edit that saves is the edit that runs.
- Texture scripts passed to a custom material as a parameter (for example
params: { map: 'scripts/tex-banner.js?rev=6' }) now bake. Before, the engine reported the texture script as "not found" even though it existed in the game's scripts. - Objects built from a geometry script (or custom geometry) now respect
castShadow: falseandreceiveShadow: falsethe same way plain boxes and spheres do. Before, a scripted object with shadows turned off still threw a full sun shadow. - Savi's builder now stays in your room for the whole session instead of re-joining every time she starts a piece of work — and your game keeps running while you are away. Before, if your tab went to sleep in the background, Savi's scripts could fail for many minutes, and her builder kept popping in and out while you played. Now the parts of your world you are not playing in keep running while she works, and background builds in empty areas keep a live world under them from start to finish.
- Skyboxes made from a big uploaded image now use a 4K version cooked from your original upload. Before, a sky made from an uploaded photo or panorama could look soft even when the file you uploaded was sharp.
- Digging, blasting, or filling the same spot over and over no longer slows the game down as the session goes on.
- The engine no longer reports a texture script as "not found" from one screen's stale view. When a texture is waiting on its script, the game re-fetches the script library automatically, and only the game itself — which can actually see your scripts — decides whether a script is genuinely missing.
- A first-person camera you move up or down now renders where you put it. Crouch by lowering the camera's eye height and the view drops with it, instead of the camera pulling back and tilting down.
- A look script may now spell its export as
export { look }or keep export-looking text inside a string — the same rule material and texture scripts already followed. The.jsonrequire()in material, texture, and look scripts shipped in 5.2.37; this version keeps that rule in one place so the script kinds cannot fall out of step again.