Finishing cloud save: every world, a previous copy, and a status line that tells the truth

The Colony Key panel on the Orbit2D title screen: four synced worlds listed with their rank and how long ago each was uploaded, restore and older-copy buttons beside each one, and a status line reading all synced, last upload just now

Written by

in

The nervous question about a game that saves in your browser is the honest one: if you put
twenty hours into a base, what exactly is stopping an update, a cleared cache or a new phone from
taking it?
Orbit2D has had four copies of every colony for a while now — the live save, two
rolling local backups, and a server copy behind a Colony Key — plus an export file you keep yourself.
This release finishes the server half of that, because reading the code again turned up a gap big
enough to lose a game through.

The bug worth fixing first

Sync pushed the world you were playing, every ninety seconds, and the server stored it in that
world’s slot. Now imagine installing the app on a new phone, signing in, and tapping Land on a world
you have not downloaded yet. The game generates a fresh colony, autosaves it, and ninety seconds
later that rank-1 save is the server copy of your rank-25 base. The old one is gone,
overwritten by a save that is technically newer.

Two changes close it. The server now keeps the previous copy of every world, so
an overwrite is never final — the copy that got replaced is one tap away on the title screen. And a
push whose progress has collapsed rather than dipped is refused: if the
stored copy is rank 25 and something tries to replace it with rank 1, the server says no and tells
the game why. Normal play is untouched — progress can stall or wobble and still sync; only a
half-or-worse fall against the stored rank or xp trips it, and it is checked on both because some
saves carry no xp at all. If you genuinely do want the new one, saying so out loud is allowed.

Every world, not just the one you are in

The second gap was quieter. Only the live world ever synced, so a world you played before creating
a Colony Key, or one you finished and moved on from, never reached the server at all. Signing in now
uploads every world in the browser that the colony has not seen or holds an older
copy of, and there is a Sync all worlds now button for the moment you actually want
an answer to “is my base safe?”.

The Colony Key panel on the Orbit2D title screen: four synced worlds listed with their rank and how long ago each was uploaded, restore and older-copy buttons beside each one, and a status line reading all synced, last upload just now

Saying so out loud

Every synced world is now a row you can act on. Each shows its rank and how long ago it went up;
worlds not on the device you are holding say so plainly and offer Download, and the
ones that are here offer Restore. Where the server is holding the copy a newer one
replaced, there is an Older copy button beside it. Restoring is not a one-way door
either: the save being replaced is rotated into a local backup first, so undoing a restore is just
another restore.

And the status line tells the truth. It reads all synced with the time of the last
upload when that is true, and when it is not it says what is wrong instead — offline, failing, or one
world refused because the colony holds a longer game. A sync indicator that lies is worse than none,
because it is the thing you check before trusting the cloud with a base you care about.

What has not changed

The save in your browser is still the real one. The colony is a copy — a fourth copy — and nothing
on the server can reach into your device and delete a base. The save format is unchanged for the
fourth release running, so the app already on your phone keeps reading everything the web build
writes. Colony Keys are still optional, still no email and no password, and still free.

Seventeen checks cover the server endpoints against the live host and seventeen more cover the
game side, plus a two-browser end-to-end test that creates a real Colony Key, plays a world, signs in
from a clean browser, downloads it, and confirms the fresh install cannot flatten the long game.
Live now at orbit2d.co as v0.14.0 and in the Android build on the
download page.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *