Releases / v0.113.0

v0.113.0 Comes Alive

2026-10-05 Engine

A material can now move the surface it is on, so flesh breathes and flags ripple with no rig behind them. A project you build in the editor opens on any machine, a prop that flinches every frame no longer costs a sixth of a second each time, and running out of video memory no longer blanks the world.

Surfaces that move

A .flsl surface shader can move its vertices. output offset is how far each point of the surface moves, in the node's own space:

shader flesh {
  stage fragment
  uniform swell: float = 0.08
  let beat = sin(time * 5.0) * 0.5 + 0.5
  output color = vec4(litSurface(vec3(0.6, 0.15, 0.2)), 1)
  output offset = normal * fbm(objectPos * 2.0) * beat * swell
}
  • It works on anything the material is on: a map face, a primitive, an imported model, a rigged character.
  • The offset can read objectPos, normal, uv, time, instanceColor, the shader's uniforms, and math, noise and colour functions. It cannot sample a texture or read the scene; the shader says so if you try.
  • A pattern in the colour stays stuck to the surface while it moves.
  • The surface casts its sun shadow from where it has moved to.
  • Lighting, colliders and the selection outline use the surface's unmoved shape.
  • In the shader graph, offset is a second port on the output node.

A rigged model wearing a .flsl material is animated on the graphics card, like any other rigged model. It used to fall back to the processor, frame by frame.

Projects that open on any machine

Some files the editor saved held the full path to a file on your computer, like /home/you/Game/models/rebel.glb. They worked on your machine and broke everywhere else: in an export, in a teammate's copy, and after moving the project. The worst case was an animation clip made in the Animation window for a model dragged in from Assets. It saved the model's full path, and after a reload it was no longer listed for that model.

Every file the editor writes into your project now stores paths relative to the project. That covers scenes, prefabs, animation clips and controllers, sprite animations, materials, particle effects, tilesets, UI styles, shaders saved from the graph, terrain palettes, map and texture settings, and a package linked from a folder inside the project. Files an older version saved with full paths are read as relative, and the next save rewrites them.

floptle check now also reports full paths in .flsl files and terrain palettes, and floptle check --fix repairs them.

A prop that flinches stays smooth

Resizing or turning a collidable model every frame, for a hit reaction or a pulse, cost around a sixth of a second a frame. That was its shadow being rebuilt from scratch each time. The shadow now keeps its last shape while the model is still moving and rebuilds once, after the model holds still for about a third of a second. A flinch that settles back costs nothing.

floptle shot --timing --frames N counts these shadow rebuilds and collider rebuilds, and floptle run --timing counts the collider rebuilds.

Low on video memory, the world still draws

With another program holding most of the graphics card's memory, a scene could draw only its sky, with particles smearing across the screen, under a wall of errors that never said why. Now the distance-field shadows shrink to what fits, the rest of the world keeps drawing, and the Console says once that video memory ran out and how much was asked for. Shapes left out of the shadows still draw and collide, and the sun's shadow map still works.

Upgrading

  • Nothing to do. Open and save a project made with an older version to move any full paths in it to relative ones, or run floptle check --fix.
  • A rigged model wearing a .flsl material now animates on the graphics card. If it looks different from before, tell us.

Floptle Hub

Linux x86_64 10.7 MB Download → sha256 b84e4e5a454705d8debef3336f9357359626404a236bf2db72f036f12d26bfef
macOS Apple Silicon 7.4 MB Download → sha256 649cf0eac385743d4513e75c7a160e4546211e9920576d4265bc53c04c2b7369
macOS Intel 7.9 MB Download → sha256 05f5886af3b4d365ba90cf0e818e9f4d9c0924248e28814d86b34e5e07549dd6
Windows x86_64 9.1 MB Download → sha256 5f5bd9efa7fb9ebda81e7eadaa16c170e300a11919a83e4a2358bade3894967c

Engine

Linux x86_64 53.6 MB Download → sha256 70e72fe18de78efde69eef7a3bc63dcae6e9d9c8c28ed30ace31f48b03910144
macOS Apple Silicon 41.6 MB Download → sha256 9f3677b27fe37204e583c802852571dc4cbbfe79a714bd045df587a02c4c5782
macOS Intel 44.8 MB Download → sha256 756b404390e48220f457a8aa140f54182d6c6196b9270734b542146a385ad219
web 4.8 MB Download → sha256 1c2d227de643fe07b1654d2a121bd3484193331c0f354bdd4ae48aec870647bb
Windows x86_64 50.6 MB Download → sha256 8e277d0e2688a133a2f67fc4efc80bb58c71fcd0a7aece2bfaa7bc063c04d68e

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.