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
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.