Skip to content
AndorManuPublic

About

Take turns hosting one co-op world through your own cloud drive, no server needed. Valheim, Palworld, V Rising, Enshrouded, Dragonwilds and more. Free, open source, Windows.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

WorldSync: one co-op world, every friend can host

Download the latest release 10 supported games Tests MIT license

Take turns hosting one co-op world through the cloud drive your group already has.

No server. No subscription. Free and open source.

Games · How it works · Features · Download · FAQ · Setup per game


In most survival games a world lives on the PC of whoever created it. If that person isn't online, nobody else can play it. WorldSync keeps the world in a shared cloud folder instead, so anyone in the group can host: tonight you, tomorrow a friend, next week you alone for an hour. Whoever presses Play gets the newest save, and their progress goes back to the group when they quit.

Add a game, pick the world, invite friends, take turns

Supported games

Valheim V Rising
Palworld Enshrouded
RuneScape: Dragonwilds Core Keeper
Sons of the Forest 7 Days to Die
Grounded Raft

Click a game for its setup guide, or ask for the next one.

Tested means proven with real groups. Beta means the save layout comes from community guides and WorldSync's own tests, but hasn't had a full season of real groups yet. Every overwrite is backed up first, so a surprise costs you a restore, not a world.

Good to know, per game
Game Status Good to know
RuneScape: Dragonwilds Tested Where WorldSync started. Also gets a Characters page.
Valheim Beta Worlds in Steam Cloud need Manage Saves → Move to Local first. Characters stay on each PC.
Enshrouded Beta If you use Steam Cloud saves, point WorldSync at Steam\userdata during setup.
Palworld Beta Palworld ties the host's character to the host's PC; the original host can look reset when someone else hosts. Everyone else keeps theirs.
Core Keeper Beta Worlds are stored by slot, so the group shares the same slot number.
Sons of the Forest Beta The host's inventory lives in the save, so whoever hosts carries it.
V Rising Beta Every vampire is stored per Steam account, so everyone keeps their own.
Grounded Beta Steam version only; Game Pass saves sit in a protected folder.
Raft Beta
7 Days to Die Beta A random-gen map travels with the save the first time (a few hundred MB).

The full step-by-step guide is in docs/GAMES.md, and the same guide is in the app under the world menu.

How it works

The world passes from friend to friend through the shared cloud folder

1

Add a game
The picker lists your Steam games first.

2

Pick the world
Found in the game's save folder, newest first. No digging in AppData.

3

Pick a shared folder
Inside Google Drive, Dropbox or OneDrive. Any of them works.

4

Invite friends
One code carries the game, the world and the folder.

From then on, Play pulls the newest save, launches the game through Steam, and shares your progress back when you close it. A small version.json in the shared folder tracks a version number, who played last and when. If your save changed without being shared and a friend has shared a newer one since, you get a clear warning before anything is overwritten, in both directions.

House rule: one person plays at a time. The app warns loudly (before and after the fact) if two sessions collide, but the polite fix is a message in the group chat.

Features


Anyone can host
The world isn't stuck on one PC. Whoever's online plays the newest save.

Your own cloud
Google Drive, Dropbox or OneDrive. Nothing to rent, nothing to keep running.

Conflict-safe
Checks both directions before overwriting, and refuses to mix up games.

Backups and checkpoints
A backup before every overwrite, named checkpoints, and group history in the shared folder.

One-code invites
Friends paste a code, add the folder to their drive, done.

Who's playing, live
Presence, "I've got next", turn passing with tray pings, Discord/Slack/ntfy webhooks.

One-click updates
Publish a new build to the shared folder; friends get an Update bar.

Every game its own look
Valheim's aurora, V Rising's blood moon, a pixel cave for Core Keeper. All drawn by the app.

Free and open source
MIT licensed. Every release is built by GitHub Actions from the public source.
More extras
  • Test my setup (Settings) - a checklist for folders, cloud sync and game launch, so setup problems are obvious, not mysterious.
  • "Did it work?" - after a game's first share, one click tells the maintainer whether it worked for you (only while reports are on).
  • Pass the turn - hand a specific friend the world; they get a tray ping.
  • Phone status page - a status.html in the shared folder shows who's playing, readable from your phone's cloud-drive app.
  • Keeping everyone up to date - run the new build yourself, then Settings → Publish this version to friends. Everyone else's app shows an Update bar and swaps itself in place on confirm. Worlds and settings are kept.

The game library A friend is playing right now Conflict warning before an overwrite

Download

Download WorldSync.exe

One file. No install, no Python, no account. Windows 10 and 11.

Also on itch.io.

SmartScreen will warn the first time because the exe isn't code-signed: More info → Run anyway. The exe on every release is built by GitHub Actions from the tagged source on a clean runner, not on anyone's laptop. If you'd rather not trust it at all, build it yourself in two commands.

Coming from Dragonwilds Sync? Just run WorldSync. Your worlds, settings, backups and invite codes carry over on first start, and friends still on Dragonwilds Sync 1.x can keep joining your Dragonwilds worlds.

FAQ

Isn't this what dedicated servers are for?

Yes, if your group plays together often enough to justify one. A dedicated server needs a machine running 24/7 (yours, or roughly €5-15 a month rented) and someone to keep it updated in step with the game. WorldSync is for the other kind of group: three to five friends who play a couple of evenings a week, rarely all at once, and don't want a bill or a box to maintain. Nothing runs when nobody's playing; the world is just files in a folder you already have.

Doesn't Steam Cloud already do this?

Steam Cloud syncs your saves between your PCs, not between friends. There are also paid tools that do something similar through their own cloud. WorldSync is free, the code is public, and your saves never touch anyone's server but the cloud drive you already use.

What does WorldSync send, and where? (privacy and security, honestly)
  • Anonymous reports are on by default, and one checkbox in Settings turns them off. Apart from those, nothing leaves your PC except into the shared folder you chose. A report says which game, whether a share, pull or launch worked, the app version and Windows version, under a random id made on your PC. Never your name, world names, folders, invite codes or saves. It's how beta games get fixed and marked tested. The exact list of fields is in app/core/telemetry.py, and a test checks that nothing else gets through. Plain-language details, retention (12 months) and how to erase your reports: PRIVACY.md. No accounts. Webhooks and Discord presence are off unless you turn them on.
  • The shared folder is the trust boundary. Anyone who can write to it can change the world save, and, because updates travel through the same folder, can publish an app update that everyone else's app will offer to install. Only share the folder with people you'd hand your save to anyway. The update bar always asks; it never auto-installs.
  • The exe isn't code-signed (certificates cost money; this is a hobby project). Verify a release by building it yourself, or compare the exe's SHA-256 with the one printed in the GitHub Actions log of that release.
  • Save files are only ever replaced after a backup is written.
Something isn't working
  • "Shared folder not found" - your cloud client isn't running or the folder moved; fix the path in Settings.
  • The newest save "hasn't finished syncing" - the manifest arrived before the save files; give the cloud client a few seconds and hit refresh.
  • No worlds found - start the game once and create or load the world, then browse to the save folder if WorldSync still can't see it.
  • Joining: the folder never appears - make sure you clicked Add shortcut to Drive (not just opened the link), and that Google Drive for desktop is running. "Browse for it manually" always works as a fallback.
  • Game never detected - Steam sometimes takes ages; the app waits two minutes, then falls back to the manual save button.
  • Logs: Settings → Open log folder. Still stuck? Open an issue with the newest log attached.

For developers

Building from source

git clone https://github.com/AndorManu/worldsync.git
cd worldsync
.\build.ps1        # creates .venv, runs tests, builds dist\WorldSync.exe
Development setup
python -m venv .venv
.\.venv\Scripts\pip install -r requirements.txt -r requirements-dev.txt
.\.venv\Scripts\python -m app                 # run from source
.\.venv\Scripts\python -m pytest tests       # the test suite
.\.venv\Scripts\python tools\screenshots.py  # re-render docs/screenshots
.\.venv\Scripts\python tools\readme_cards.py # re-render the README game cards

Adding a game

A game is a single entry in app/core/games.py: where it keeps its saves, how to tell worlds apart, which files make up a world, and the exe to watch for.

GameProfile(
    id="raft", name="Raft", steam_app_id="648800",
    process_names=("Raft.exe",),
    save_roots=("{LOCALLOW}/Redbeet Interactive/Raft/User/User_*/World",),
    discover=(Discover("*", r"^(?P<w>[^/]+)$", dirs=True),),
    patterns=("{world}/**/*",),
    mirror=True,
)

Give it a theme in app/ui/gamethemes.py and a scene in app/ui/scenes.py, add a test, and open a PR.

Project layout
app/
  core/        sync protocol, game profiles, config schema, invites, presence,
               webhooks, backups, game launch/watch, Steam detection - no Qt
  ui/          library, picker, per-game themes and scenes, screens (PySide6)
  controller.py  worker threads in, Qt signals out
  main.py      entry point (--tray starts quietly in the tray)
tests/         pytest suite, including offscreen UI smoke tests
tools/         icon generator, screenshot harness, README art
Why it's built this way

The sync core is deliberately small and boring: a version.json manifest, a monotonic version counter, and content fingerprints compared on both pull and push. Every overwrite is preceded by a backup, and every manifest write is atomic (temp file + rename), so a cloud client dying mid-sync can't leave a half-written state. Games are plain data: the core never knows which game it's syncing, it just gets a folder and a set of file patterns. Cloud drives were chosen over a server on purpose: a group of friends already has one, it's free, and there's nothing to host, patch or pay for.

Per-user data lives in %APPDATA%\WorldSync\ (config, per-world state, logs, safety backups). Older configs migrate automatically and the originals are kept as config.v1.bak / config.v2.bak.

Contributing

Issues and pull requests are welcome, game requests especially. Keep the sync core (app/core/sync.py) boring: any change there needs a test in tests/test_sync.py or tests/test_games.py, and the manifest must stay readable by older versions (it's plain JSON on purpose). Run python -m pytest tests before opening a PR; CI runs the same suite on Windows and Linux.

Support

WorldSync is free and stays free. If it saved your group a server bill, a coffee goes straight into adding the next game.

Support on Ko-fi   Star on GitHub

Credits & license

  • Code: MIT. Built by AndorManu.
  • Fonts: Cinzel, Cinzel Decorative and EB Garamond, under the SIL Open Font License. Other typefaces are the ones that ship with Windows.
  • Dragonwilds item and unlock tables (app/assets/*.json) are derived from the community datamine in PEAKEGames/DWCharacterEditor.
  • No game assets are shipped. Every scene, card and icon here is drawn by the app or its tools.
  • All game names are trademarks of their respective owners. WorldSync is an independent fan-made tool, not affiliated with or endorsed by any of them.

About

Take turns hosting one co-op world through your own cloud drive, no server needed. Valheim, Palworld, V Rising, Enshrouded, Dragonwilds and more. Free, open source, Windows.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages