Releases / v0.117.0-rc34

v0.117.0-rc34 Whole Worlds

2026-10-26

Everything in rc33, plus pictures a script can draw, node handles that compare equal, characters that can stop standing up along gravity, and a vessel's tick position that matches the rest of the vessel.

Pictures a script draws

image.new(w, h) makes a picture in memory, and a script paints it with calls that run in the engine: fill, blend, circle, ring, line, polygon (smooth edges), text (the engine's UI font, or a project .ttf or .otf), and draw, which lays one picture over another, scaled. img:texture() turns it into a texture that a quad, a UI image or a material can use. Call it again after drawing more and the same texture shows the new pixels, written in place, so a minimap redrawn every frame makes no new texture.

An emblem of a ring, a disc, a star and a word, 256 pixels square, takes about a millisecond. The same emblem drawn a pixel at a time in Lua took 150 to 200 ms. img:png() and img:bytes() hand the picture back for saving, and setShaderTexture takes the texture too.

Node handles compare equal

Two handles to the same node are now equal with ==, however each was got: find, getChild, findScript(...).node or a script's own node. Before, each lookup made a new handle, so a check like "is this the node I had?" was never true.

Standing up, or not

alignUp on a body can now be read and set from a script. A character leaving the ground (a spacewalk, a swim, a tumble) turns it off to face what it is holding. When it is turned off, a body with locked rotation keeps the angle it has at that moment, rather than going back to the angle it started with.

A vessel's tick position

On a vessel's root node, tickPos (and tickX/Y/Z) is now where the root node is, as assembly.info(root).origin reports, rather than the vessel's centre of mass. The two differ by an offset that turns with the vessel, so a script mixing them drifted as the vessel turned. Writing tickPos on a root now moves the vessel there, along with anything jointed to it; before, it did nothing. Writing vel on a root likewise now sets the vessel's velocity and wakes it, as it does a plain body; before, it did nothing either.

The docs now say which position each read gives. node.x and node:toWorld are where the node is drawn this frame, and every handle to a node agrees on it. tickPos is where the simulation has it, up to one tick of travel away.

Upgrading

A script that read tickPos on a vessel root and used it as the centre of mass should read assembly.info(root).com instead. Nothing else changes for existing projects.

Floptle Hub

Linux x86_64 10.7 MB Download → sha256 b698a3cfab3f5dacc342d8a85b3fed889ee284aedfe9487e6b0a2f0e5a4e632c
macOS Apple Silicon 7.5 MB Download → sha256 9c4527927a5e86f43e3b16a01de42c7b55401e1711faf8acc2e9d708da90de43
macOS Intel 8.0 MB Download → sha256 05da8288d3824e2c8b61f5f4762bd5a555612f7cfea17b8df793fdb7959db3e9
Windows x86_64 9.2 MB Download → sha256 ebe9b8ceb2cde06568a7065d5fa2aab0c32999f2640c25fdc80c2f4a4db48bb4

Engine

Linux x86_64 61.5 MB Download → sha256 516a189ffd4a770540afcc18d5869cbad6940228539ffa683369a7e9a20b09d4
macOS Apple Silicon 47.4 MB Download → sha256 a0cb294c265b34a57d4657067fb2eb6a42848dc2e6bf44426f713b9204d95625
macOS Intel 51.0 MB Download → sha256 fcfcded73c5dabe1992e7ec2f0fa1577ef96387604a7bfdffc9aba00f796c8b9
web 5.9 MB Download → sha256 c5ce1b808dc7f9796136afb6a187057910a16ac0a1f38d389d608ad81cbc9e4f
Windows x86_64 57.4 MB Download → sha256 a515e8eb223ad036b57ee73ee2a199ef6a8f8797f75400156fe63271ef894ced

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.