Releases / v0.116.1

v0.116.1 Clear Skies

2026-10-14 Engine Latest

A world with air now has a real daytime sky, with no sky shader to write: the air's colour overhead, a brighter horizon and a glow around the sun, thinning into space as you climb. Fog can follow a round planet, post shaders can tell which way each pixel looks, and the tile brush shows a preview of the tile before you click.

A daytime sky inside an atmosphere

  • Stand on a world with an atmosphere and the sky is the air's colour. It is deepest overhead, whiter and brighter toward the horizon, with a glow around the sun. It used to be a faint tint over space, so games painted a daytime sky with fog or wrote their own sky shader.
  • It fades into space as you climb. The sky thins with your height over the planet and is gone at the top of the atmosphere, with no jump on the way. The horizon stays bright after the sky overhead has gone dark, and stars come out through the sky as it thins.
  • An atmosphere shows before there is any ground. With a plain-colour Skybox and no terrain yet, a world's air used to be invisible.
  • The atmosphere is still set on the body: atmoColor, atmoHeight and atmoDensity in node:setCelestial{...} or the Inspector.

Fog on a round world

In the Lighting node's Inspector, tick follows the planet under fog (fogFollowsBody in Lua), and fog is measured from the nearest planet instead of the world's up:

  • fogHeight is a height above that planet's ground, so volumetric fog lies around the planet instead of cutting across its sky in a slab.
  • The fog in the sky follows that planet's horizon wherever you stand on it.

It is off by default, and flat levels are unchanged.

Scripts can fade the sky

  • fogSky on the Lighting node's Light is readable and writable. It is how much of the fog the sky takes at the horizon. The sky is infinitely far away, so thinner fog alone never makes it fainter; fade this instead.
  • node:getcomponent("Skybox") gives the sky's plain colour (colorR, colorG, colorB) and the tint over a sky image (tintR, tintG, tintB), so a day can end without a shader.

Post shaders can place a pixel in the world

Two new ops for stage post shaders:

  • sceneRay() is the world direction the camera looks through at a pixel.
  • cameraPosition() is where the camera is.

cameraPosition() + sceneRay() * sceneDepth() is the point a pixel shows, which is what a sky pass, height fog or a grid on the ground needs.

A bone you move reads back where you put it

anim:boneWorld, node:bonePos and node:boneRot now include bone writes made earlier in the same update or lateUpdate. Call setBonePos, then read the bone, and you get where you sent it. You used to get the pose from before the write until the next frame.

Pictures show what is on screen

camera.capture, floptle shot and render targets now draw scatter fields: plants, rocks and anything else a scatter source puts on the ground. Pictures used to show bare ground, so things resting among them could look buried.

See the tile before you place it

The ◫ Tiles brush now shows the tile itself under the pointer, faint, exactly where a click will put it, turned and mirrored the way it will land. It works on square, isometric and hexagonal maps, with multi-tile stamps, and with the rectangle, outline, line and fill tools.

The order scripts run in

The scripting reference now says it: every node's update runs before any node's lateUpdate. Between nodes, the order is the order they were loaded, and removing a node can change it. So when one script must run after another, use lateUpdate or call it from the first script, and don't rely on where the nodes sit in the scene.

Upgrading

  • If your game draws its own daytime sky with a sky shader or fog over the background, inside a world that has an atmosphere, it now draws the engine's sky too. Turn yours off, or lower the body's atmoDensity, to keep one sky.
  • Everything else needs nothing.

Floptle Hub

Linux x86_64 10.7 MB Download → sha256 223c3057130d3e70b376b676326794ca7aafc609b83715deb36a01ac5543881a
macOS Apple Silicon 7.4 MB Download → sha256 9265434f317196496ae57f52f26a4e02fafd75be8ca83114b97ba6038ab4839c
macOS Intel 7.9 MB Download → sha256 26dcb96e23f7ea11add435768ca6f48bcbdd75a3f3ae90e501b4e1dea8f3932f
Windows x86_64 9.1 MB Download → sha256 0456e31ed45de74cbd3ee018baed1e29fab9c7a875a26959d3cebc952b853d06

Engine

Linux x86_64 54.9 MB Download → sha256 698fc51d665a509c74769e2624bf1d6e192b0fc684d85ab9241384abdf597cd5
macOS Apple Silicon 42.8 MB Download → sha256 66ab49f168783d4c1152ec9bacfecdc1246b90b205715df7090bcd4b7d621aff
macOS Intel 46.0 MB Download → sha256 a0e2d38921196d77322755ace165a05523d37f36b5b185342e210af3306567b0
web 5.1 MB Download → sha256 f93eb30f749de931c2f3420eda0d4de0030700adcc6f6c3d95c58da67dd32cf6
Windows x86_64 51.9 MB Download → sha256 b7ab9a9129623753d39993f5c246244ff5d73ab897c3a3765ae470f4a9a60c3e

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.