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)andinput.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.setFullscreenworks 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. Nownet.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.pyreads 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
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.