Releases / v0.94.0-rc1

v0.94.0-rc1 Squash And Stretch

2026-09-17 Engine

The first beta of v0.94.0. Particles squash and stretch, the Animating tab has a curve view and keys that ease, and the editor's biggest functions are now outlines you can read — verified frame-for-frame against the previous build.

Particles squash and stretch

Every particle track has a squash property, under 📈 Over each particle's life in the Inspector next to size. It keeps the particle's area while changing its proportions: the width is multiplied by the value and the height divided by it. Above 1 flattens, below 1 lengthens, and a curve from 0.6 through 1.4 back to 1 is the classic pop — a drop that lands, a coin that bounces. Like size and colour it animates over each particle's life, can be randomised per particle with 🎲, and has its own lane on the timeline. A mesh particle squashes the same way along its own axis.

A velocity-aligned billboard also stretches + by speed: extra length per unit of speed, so a fast spark draws a long streak and a slow one stays a dot, where before every particle on the track was stretched the same.

And a new emit shape, box: particles are born anywhere inside a box of the size you give — rain over a field, dust through a room, snow. The emitter gizmo draws its outline.

Particles fade where they meet the scene

A sprite crossing a floor or a wall was cut along a hard line, the one tell that a puff of smoke is a flat picture. Each particle now fades over the last few world units in front of whatever is behind it — soft edges under 🎨 Look, 0.5 by default, 0 for the hard cut.

The Particles tab fits its panel: fields sized to the width, a random range on two lines, forces as labelled rows, and the selected clip as its own section under ✳ Emission with a pool you can set. A looping effect whose particles outlive the loop no longer refuses every second generation's births. An effect is named by its file, so a renamed file is a renamed effect.

The Animating tab: curves, easing, packed rows

The dopesheet says when; the new 📈 Curves view (Tab) says how much and how fast. A node's position, rotation and scale are drawn as values over time, sampled through the same tracks the game plays, so what you see is the motion you get. Every key is a point on its curve: drag it in time and value, right-click empty space to key a lane there, right-click a point for its interpolation. Rotation is drawn in degrees as one continuous line, without the fold at 90° that Euler angles usually produce.

Right-click a key → ↗ Interpolation now offers Linear, Smooth (a spline through the neighbouring keys, so the motion has no corner), Ease in, Ease out, Ease in-out and Hold; with several keys selected the choice applies to all, and the key's shape says which. A node's row opens with ⏵ into its position, rotation and scale lanes, each key editable on its own lane. With a snap grid set, the ruler counts in frames.

Rows run from 4 to 80 px, typed in the toolbar or Alt+wheel, so a large rig fits the panel; a 🔍 rows filter shows only the rows whose name matches.

Under the hood

The editor's largest functions — the frame loop, the Inspector, the timeline, the material and post-processing editors, the Play step, the network tick — are now short outlines that call one function per phase. Every move was checked against the previous build: floptle shot and floptle run on five projects give pixel-identical pictures and identical reports before and after. Comments across the workspace say what the code does today.

floptle shot draws particles textured, as the live frame does. The passes that read the depth buffer — ambient occlusion, depth of field, motion blur, 2D lighting, soft particles — and authored post shaders build on OpenGL.

Upgrading

Nothing to change. A particle effect written before this release has no squash, no speed stretch and its old shapes, and draws as it did. An animation clip's holds load as Hold keys and are saved in the new form.

Switch the Hub to the beta channel to install this build.

Floptle Hub

Linux x86_64 7.9 MB Download → sha256 e0e9c433938bad41d76d3793ac7de0522237fcd34db337175e6389aa3b74ce2e
macOS Apple Silicon 5.9 MB Download → sha256 947eeec847f4ef5d58f223455348c66cab5ab38be0fc5b912fbd10dac941a56a
macOS Intel 6.4 MB Download → sha256 a23c85915dd9308d54e16010065225f3ce5bb6d53010a1cdc37233e418553b68
Windows x86_64 7.3 MB Download → sha256 5b9802d0bdda1eefd2721ec8abb2ae322283c7681f4e533e59ab668d94ae5d58

Engine

Linux x86_64 33.9 MB Download → sha256 5acc8b4e268ba88f8dc9caff3294bd8f80525292aa14f34f6a915f49b73af7f6
macOS Apple Silicon 27.6 MB Download → sha256 c4097bf0c3b0bb06bb5a704535645b8316b3ce155d7529a1588c91458fe141ee
macOS Intel 29.7 MB Download → sha256 961bd13f002dc7a56a70606bab57ab2394db333bb19cccffb124a082dfb6df2a
web 4.4 MB Download → sha256 f9d91ea16816071139de3836b939b35f0ce6055438a70e9f7541e07bc3e46ecf
Windows x86_64 33.6 MB Download → sha256 a055b786819e1a729f2cce5e2064b43449df6010901ce03d5a9e67ced948257b

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.