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.

lua
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.buffer makes a typed array on the GPU, of numbers, vectors or a struct of fields. gpu.texture makes a picture a shader writes, which draws anywhere a texture goes: materials, UI images, draw.quad, decals.
  • compute.run runs 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 (with time and frame) 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.
  • :read hands 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 valid changed the wrong node. Now valid stays false and the handle reaches nothing.

Upgrading

Nothing to change in your projects.

Floptle Hub

Linux x86_64 10.7 MB Download → sha256 f985b2924c0aebf361f7ded21f31b038ecb2f0781be944ce232ae27245589f2e
macOS Apple Silicon 7.5 MB Download → sha256 a3251892f8397ffa62cce6c5ea19e35ee5d33215e5ae973989cf72415eb6edee
macOS Intel 8.0 MB Download → sha256 93e682b50ffb8310c598328f514003fdfa1c86042f39f2dfdfe3642878bceae0
Windows x86_64 9.2 MB Download → sha256 30a93bd5068d800837b55609fa633ea2359ae574d9a6e4cb39e7f98bd94b470c

Engine

Linux x86_64 61.8 MB Download → sha256 aa219cf26165887c14df8ff3ca877fa3a0fe2a7fc680a14038a3ba9fa0b7fd1a
macOS Apple Silicon 47.7 MB Download → sha256 b08df664523bc72f1d3a224922d9c70dd58c2adb0d4af39a2c9375467d150bd9
macOS Intel 51.3 MB Download → sha256 2fa1717b69faac032d5ffb1966c11da03365e6f436585a4ca66f316c7c523887
web 6.0 MB Download → sha256 7e107bb3d2134db328bddc563d77e73bd7f15ea153715cd9f327358af5fe1448
Windows x86_64 57.8 MB Download → sha256 ef3ce990c71ced01858e070d5958793b1e40946849b308f1bc0057d868bff629

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.