Releases / v0.86.2
v0.86.2
2026-09-09
Five fixes, four of them found by running a game on a real server for a week and one by measuring a fighting match.
The player who joined a rollback match was getting a worse game
Two people play a rollback match. The host sees a clean game. The person who joined has every single one of the host's actions arrive as a correction — a press that lands as a small pop instead of a motion, on every input, for the whole match, even on a perfect connection. Both machines agree about everything, so nothing anywhere says this is happening. It reads as "rollback feels worse for my friend than for me", which is not something anybody would report.
The two machines never started counting from the same moment. The clock banks real time and spends it in fixed steps, and the person joining arrives at the starting gun having banked their whole scene load — then spends it at once, and runs up to eight steps ahead of the host for the rest of the match. Raising the input delay could not touch it, because the gap was bigger than the delay.
A match now starts when it starts. If you have been tuning input delay to fix a joiner's experience, try it again from scratch.
A server on Floptle Cloud comes back by itself
Restarting a relay destroyed every lobby on it, and the servers hosted through it never noticed. They did not reconnect, they said nothing at all, and they carried on handing out the six-character code they were given when they started — which the site published, your game page showed, and your shipped build was told. Everybody who typed it was turned away, and there was nothing anywhere to explain why.
A server now takes the relay's word for its own lobby code rather than
remembering one. If the relay goes away the code goes with it, the server says
so, and it re-hosts itself and tells you the new code when it is back. Your game
can see this too: net.joinState() reads "reconnecting" while the relay is
unreachable, and net.lobbyCode() is nil rather than a code that does not work.
An empty server is not a player
A dedicated server counted itself as somebody playing. Your game's page said "1 in this game right now" about a server nobody was on, and one of your plan's player slots was spent for as long as it ran — so a game with room for twenty seated nineteen people and told the twentieth it was full.
Shipping a server is one command
floptle export <PROJECT> ~/builds/my-game-server.tar.gz server --scene scenes/lobby.ron
Name the output as an archive and you get the file you upload. Before this you
got a folder and then ran a tar line copied off the website, which is the step
that assumes you have a shell and is easy to get wrong. Naming a folder still
gives you a folder.
A port that was never listened on
A dedicated server given both a port and a relay used the relay and ignored the port, without saying so. It says so now, at startup, and it reports where it can actually be reached, so nothing publishes an address that leads nowhere.
Upgrading
Nothing to do. If you run a region box, take the new server and fleet binaries the way you took the last ones.
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.