Releases / v0.117.0-rc38
v0.117.0-rc38 Whole Worlds
2026-10-27
Everything in rc37, plus compute shaders, and the fixes from playing rc37.
Compute shaders
Scripts can now run programs on the GPU that draw nothing: procedural textures, particle swarms, falling sand, simulations, a skin painted onto a model. What a Lua loop does in a second, a compute shader does in a fraction of a millisecond.
local cells = gpu.buffer{ count = 512 * 512, type = "u32" }
local skin = gpu.texture{ w = 512, h = 512 }
compute.run("shaders/life.wgsl", "step", { size = { 512, 512 }, bind = { cells = cells, skin = skin } })
node:setMaterial{ texture = skin.name }
cells:read(function(values) end) -- a frame or two later, never stalls the frame
gpu.buffermakes a typed array on the GPU, of numbers, vectors or a struct of fields.gpu.texturemakes a picture a shader writes, which draws anywhere a texture goes: materials, UI images,draw.quad, decals.compute.runruns a WGSL shader from your project before the frame is drawn, so the frame shows what it wrote. Runs happen in the order you ask for them, and a read or write you make after a run sees that run.- Shaders are plain WGSL, with loops, atomics and workgroup memory. The
engine declares your buffers and textures by the names you bind them to,
gives you
params(withtimeandframe) and the same noise and colour functions FLSL has. One file can hold several entry points, each run with just the bindings it uses. A mistake is reported at the file's own line, and the file reloads when you save it. :readhands results back to your script without stalling the frame.gpu.limits()says what the graphics card allows. It runs everywhere Floptle ships, the browser included.
The guide, with a game of life and a 100,000-point swarm to start from, is Compute shaders.
Fixes
- Driving, flying and digging on a moving planet cost what they did before rc37. rc37 roughly doubled the frame time there. Freezing or thawing water from a script no longer rebuilds the physics world, so it is instant.
- Water can be there for its look alone. A water volume of density 0 holds nothing up and never warns, for games that float things themselves. The density warning now appears once per kind of body, not hundreds of times.
- Exported builds draw textures the way Play does. A build lost each texture's smooth or crisp setting and the grid its sprite sheet is cut into, so every texture came out pixelated.
- A destroyed node's handle stays dead. A node made after another was
destroyed could take over the old node's script handle, so a game that kept
a handle and checked
validchanged the wrong node. Nowvalidstays false and the handle reaches nothing.
Upgrading
Nothing to change in your projects.
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.