Cloudward

版本 v0.2.0·更新於 2026-08-28

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 外掛

  1. 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
  2. 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
  3. 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
  4. 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。

帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。

前置依賴

下面這些內容需要先安裝,否則該模組不會生效:

BepInEx-BepInExPack_OutwardCeruleanCutlass-ForgeKit

檔案與校驗

檔案名稱
Cloudward-0.2.0.zip
檔案大小
287.6 KiB