Cloudward
Sync your Outward saves across devices via a mounted/shared folder: boot-time reconcile, offline-first play, fork detection/resolution, crash-safe session lock. Verified across real devices; some offl
模組介紹 作者原文
Cloudward — sync your saves across devices
📖 Full documentation: Cloudward wiki page
Actively in use across real devices. The compute layer (mount guard, fork detection, lock/lease,
reconciliation) is fully unit-tested, and the full sync loop — boot-time reconcile, offline play,
clean two-device handoff, and both paused and auto fork resolution — has been live-verified across
real physical machines over a real NAS share, including three bugs found, fixed, and re-verified in
that process. Still being staged: some offline/reconnect edge cases and crash-recovery scenarios
that need a human at the keyboard to exercise. It is inert by default (Enable=false) —
installing it changes nothing until you turn it on. Back up your SaveGames/ folder before your
first real sync.
Outward has no built-in way to carry a save between two computers — Steam Cloud is deliberately
unsupported for it. Cloudward fills that gap: point it at a folder mounted on every device you play
on (a NAS share, a Syncthing folder, a mapped drive) and it keeps your character in sync.
Requires: BepInEx 5 (Outward's Mono branch — see Compatibility) and ForgeKit. No
SideLoader.
Installing
Install and the dependency comes with it. Installing by hand: drop ForgeKit/ and
Cloudward/ side by side into BepInEx/plugins. If BepInEx logs a dependency error and refuses to
load Cloudward, ForgeKit is missing.
How it works
The game always writes to its own local save folder — Cloudward never redirects that. The mount
you point it at is a synced replica, not the source of truth:
- At boot, Cloudward reconciles: it pulls in anything newer on the share before the character list
loads, so a character you played on another device shows up here.
- While you play, completed save snapshots push out to the share once you're online and holding
the sync lock.
- Offline just works. No mount, no marker, or another device holding the lock — Cloudward plays
entirely from local and catches up next time it can reach the share.
A marker file in the mount root is how Cloudward tells "actually mounted" from "empty directory
because the share isn't connected right now" — an unmounted mountpoint looks exactly like an empty
folder to your OS, so without the marker a sync could silently start writing to local disk instead of
the share. Cloudward creates the marker itself on first run when it can positively confirm the
folder is a real mount — the share already holds save data, or the platform probe sees it in the
mount table (native Linux /proc/mounts, or a Windows network drive / UNC path). It remembers doing
so per mount path, so a later launch with the share disconnected is correctly read as "offline",
not re-marked onto the placeholder. Under Proton (Linux / Steam Deck) an empty first-run share can
never be confirmed — the game-side process only sees Wine drive paths, so the probe can't reach the
mount table. That's expected: Cloudward stays offline, logs the instruction, and you run the
syncmarker command once (or touch the marker file) to bless the share; after that everything is
automatic. Set AutoCreateMarker=false for strict manual setup, where syncmarker is always
required.
A session lock (a small heartbeat file on the share) makes sure only one device pushes at a time.
It's crash-safe: a lock whose heartbeat goes stale (the device crashed, lost power, whatever) is
reclaimed automatically — nothing can wedge your saves.
If two devices genuinely diverge
If the same character was played offline on two devices before either could sync, Cloudward resolves
it automatically per the [Sync] ForkResolution setting — and always backs up the version it
doesn't keep to.cloudward-forks, so nothing is ever lost:
- NewestWins (default) — keep whichever device has the most recent in-game save.
- ThisDevice / OtherDevice — always keep this / the other device's version.
- KeepBoth — keep this device's version live and preserve the other (v1: a restorable backup; a
true second s
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。
下面這些內容需要先安裝,否則該模組不會生效: