Releases / v0.117.0-rc22
v0.117.0-rc22 Whole Worlds
2026-10-26
Everything in rc20, plus an end to the stutter that decals caused on a streamed world, crafts and vehicles that come to rest, and a smoother take-off roll.
No more decal stutter
A world with decals on it froze for a moment every time ground streamed in or was dug: every mark in range was laid again in one go, and one large mark could take tens of milliseconds.
- Ground that streams in lays again only the marks that were lying on its coarse stand-in, and ground that is put away lays nothing again. A dig lays again only the marks it reaches.
- A mark laid again is laid a piece at a time within a small budget each frame, like a new mark, and the old one stays on screen until the new one is whole.
- The ground a mark needs is prepared on a worker before the mark is laid.
perf.counts()reportsdecalsCheckedanddecalsRelaid.
Things come to rest
- A craft that broke into pieces falls asleep once its pieces have settled, including pieces lying against each other. Before, pieces leaning on one another kept each other awake forever.
- A vehicle on wheel joints falls asleep when parked: its body and wheels rest together and wake together.
- Pieces asleep against each other are no longer compared every step.
node.asleepon a part of an assembly reads its assembly's state.- Motion is unchanged up to the moment something falls asleep.
Smoother take-off
A fast craft's collision ground is prepared ahead of it on a worker, so a plane's take-off roll or a fast rover no longer builds whole terrain chunks on the frame it reaches them.
Scripts and tools
terrain.deleteSaveDircan delete the active save from a scene with no terrain, such as a menu, and releases it. The refusal while a world still uses it says how to release it.- The profiler names a split and a rebuild (
assemblySplit,assemblyRebuild), times a split or rebuild callback from its own start, and names time lost to running out of GPU or script memory (gpuOutOfMemory,scriptOutOfMemory). perf.pacing()answers from the first frame.floptle lint --vec3follows scopes and statement order, so it no longer reports values that are not vectors.json.encodewrites a number in a table that lies beside 0 or 1, such as1e-20or0.9999999999999999, as itself; it was written as 0 or 1.
Upgrading
Projects upgrade themselves; nothing to do. What upgrading cannot change for you:
- A split or rebuild callback now runs under the same per-pass time budget as every other script hook. A callback that ran very long before is now stopped like any other overrunning script.
Floptle Hub
Engine
The binaries are not signed yet. On macOS, right-click the app and pick Open the first time. On Windows, if SmartScreen appears, pick More info then Run anyway.