Releases / v0.107.0

v0.107.0 Fits In Your Hand

2026-10-01 Engine Latest

A browser game can be played on a phone. The input settings in the editor are rebuilt so that every control, including the ones a new project starts with, can be changed in place. Online play stops raising a client's input delay for no reason, and a player on an outdated build is told so instead of waiting forever.

Touch

A phone sends a game nothing but fingers, and until now a web build on one received nothing at all: not even a tap on the main menu.

  • input.touches() lists every finger on the screen this frame: where it is, how far it moved, whether it just went down or lifted, and its pressure. Each finger keeps its id for as long as it is down, so a move stick, a look drag and a fire button work at the same time. input.touchBegan(id) and input.touchEnded(id) answer for one finger.
  • Your UI works by touch with no code. A finger that lands on a button, a slider or a field works it as the mouse would. A finger that lands anywhere else is only the game's, so a stick dragged across a button never presses it.
  • app.isTouch() is true on a phone or tablet, so a game can start in its touch layout.
  • In a browser, the page no longer scrolls, zooms or pulls to refresh under the game, and app.setFullscreen works from a phone, on the next tap if the browser wants one.

The scripting guide has a move-stick recipe to start from.

Input settings you can edit all of

Settings ▸ Input is now a list of every action, direction, amount and motion beside an editor for the one you pick:

  • Change a binding, don't delete it. Every key, button and stick is a button: click it to press a new one or pick one from a list. Removing a binding is its own button.
  • Every setting is on the binding it belongs to. A key's chord, an analog trigger's press point, a stick's deadzone, sensitivity, curve and invert, mouse look's sensitivity and the button held to look, a motion's directions on a numpad, its window and its charge.
  • The standard controls are yours to change: WASD, the sticks and mouse look are edited like anything you add. New directions start from WASD, arrows, either stick or the mouse, already filled in.
  • Rename, reorder, duplicate or delete any entry. Renaming says how many script calls still read the old name.
  • The open entry shows what it is doing as you press: an action lights, a direction draws its vector, an amount fills its bar.

Online play

  • A client's input lead no longer climbs forever. A client the server took no input from (a game that sends its own poses) was told its input was late, and added a tick of delay every second for as long as it stayed. The server now reports only what it measured, and a lead that never helps stops at half a second and says so.
  • Browser players report a real round trip. A web build's connection now measures its ping instead of showing 0 ms.
  • A refused join says so. A player whose build doesn't match the server's (a different input.ron) was left on "connecting" through a relay. Now net.joinState() answers "refused" with the reason, at once.

Builds

  • Every export gets its own build name, which a game hosting on Floptle Cloud presents with its key. One build's copy of a misused key can then be switched off on fopull.com without rotating the key for every build.
  • A Floptle Cloud key can be given its own relay bandwidth by fopull.com, for a game that moves large files between players.
  • tools/web/shot.py reads the picture from the canvas in the frame that drew it. In a browser that cannot show a WebGPU canvas (a headless one) it now says there is no picture right away, instead of waiting out its timeout.

Upgrading

Export your web build again for touch, the browser fixes and the build name.

Floptle Hub

Linux x86_64 9.0 MB Download → sha256 5033ec5bf916d096ee961b4b604c49e330d13c69b292bddd9dd984ce7c96e5be
macOS Apple Silicon 5.9 MB Download → sha256 f8bd1ff1c3a65b4c7deac9258b0a11aa614bfb85552d284b74d41da5109ca768
macOS Intel 6.4 MB Download → sha256 9dde1fbb88c9a7e3e3c2f91942b5aa5338b89ece0476f2919fb5ac56483b9079
Windows x86_64 7.3 MB Download → sha256 23ba004abcdc3c4343f2085377c74b3153dc7ea9cba9f47a1b2dae993a1e6813

Engine

Linux x86_64 51.9 MB Download → sha256 62bfda3a40d2925bc928ffe59861d5c543ce8d9d1f3c5e7bad045d4497247621
macOS Apple Silicon 40.0 MB Download → sha256 e55d11914f7b174583e85fc8fb81b5e8d17479ca759a9b0ae3a0a1c2fa5ff39a
macOS Intel 43.1 MB Download → sha256 6ced9b385a2ea447ab97008b00acaffaae30618cfb1f9d496211311681974353
web 4.8 MB Download → sha256 183294f43c9082abcafce5d1f370a3dfc413bcef508cf04ad951aac59d11e302
Windows x86_64 48.7 MB Download → sha256 08456a3260272ec574d2cfdeccf10066b076f11e397032e5d1629f7f2c07ce6e

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.