Releases: TheGeeks0424/SyncOrSwim
Release list
v0.2.0-pre.1 — storage + flood sync, one installer for players and host
SyncOrSwim v0.2.0-pre.1
Second pre-release of the co-op sync fixes for Nitrox 1.8.1.0 (Subnautica build 1.22.83031). Supersedes v0.1.0-test.1 — please update; the old build had the flood-sync serializer gap described below and included an experimental change that has been withdrawn.
⚠️ Pre-release status
Not yet soak-tested in a live two-player session. The installer backs up every file it replaces and an uninstaller is included. Issues welcome.
What it fixes
- Shared storage desync + item loss on rejoin. Deposits into any shared container (lockers, wall lockers, Prawn/Seamoth storage, …) now send the complete item to the server, which persists it and broadcasts it to everyone in range. Previously the thin "item moved" packet was silently dropped whenever the server or the receiving client didn't already know the item — deposits never appeared for the other player and could vanish entirely after a relog. Idempotent on the item's unique ID — no duplication.
- Base flooding desync. Per-room water level and hull strength now sync live (1 Hz from the simulating client) and rehydrate players who (re)join mid-flood. Previously one player could flood while the other stayed dry, and repairs only converged after a relog.
Changed since v0.1.0-test.1
- The host must now also run the installer (same zip). Flood sync ships a new metadata payload the server has to deserialize; the installer now also swaps the model DLL the server loads (
serversubfolder →lib\). The v0.1.0 claim of "no server changes" was wrong — flood sync silently failed on an unpatched host. Storage sync still works against an unpatched host. - Flood sync now works under both Nitrox serializer modes (JSON and protobuf — the new metadata type was previously never registered with the protobuf serializer, the default on most servers).
- Storage fix finalized after a full source audit: idempotency verified at every hop (server-side reparent via
EntityRegistry.AddOrUpdate, receiver-side cleanup viaSpawnEntities.ForceRespawn); an unused dependency was removed. The approach generalizes the always-recreate path upstream Nitrox already uses for planters. - Withdrawn: an experimental VR loading-screen guard that shipped inside the v0.1.0 binaries. It is under separate investigation and will return as a proper fix if warranted.
- Full modified source is now publicly browsable at TheGeeks0424/Nitrox, branch
fix/storage-and-flood-sync(3 commits on top of the upstream1.8.1.0tag:3bc0a0dd,c9abfef6,2989034f).
Install
Everyone — both players and the server host — runs the same installer on their own Nitrox 1.8.1.0 folder:
- Close Subnautica, the Nitrox launcher, and the Nitrox server.
- Extract
SyncOrSwim-Installer.zipinto one folder (keep theserversubfolder). - Double-click
Install-SyncOrSwim.bat— it auto-detects your Nitrox folder and backs up everything it replaces.
Uninstall-SyncOrSwim.bat restores the originals. Full instructions, prerequisites, and troubleshooting: INSTALL.md.
World saves are untouched and stay compatible. Unpatched players can still connect and play; they just don't get the fixes. Protocol version is unchanged (1.8.1.0).
Source
- Full tree: https://github.com/TheGeeks0424/Nitrox/tree/fix/storage-and-flood-sync
- Changed-files overlay:
syncorswim-source-v0.2.0-pre.1.zip(attached) — 7 files, 2 modified + 5 new.
GPL-3.0, derivative of SubnauticaNitrox/Nitrox. Intended to be offered upstream once play-tested.
v0.1.0-test.1 — Initial public test release
Pre-release. Code builds, deploys, and runs locally; full end-to-end soak testing with two players is in progress. Bug reports welcome via the issue tracker.
Patches Nitrox 1.8.1.0 (Subnautica build 1.22.83031)
Fixes
- Shared-container desync. Items deposited by one player into a shared container (Prawn storage, vehicle storage, wall lockers) now broadcast a full
InventoryItemEntitypayload instead of the thinEntityReparentedpacket. Receiving clients can lazy-create the entity locally, so deposits are no longer silently dropped. Closes the live-desync case and the rejoin data-loss case. - Base-flood desync. New
BaseFloodMetadataextractor + processor + Harmony patch onBaseFloodSim.Update. The simulation-owning client broadcasts per-cell water level + base hull strength at 1 Hz; non-owners apply underPacketSuppressorto avoid feedback loops.
Both fixes are client-side only. No server changes. No wire-protocol changes.
Install
- Download
SyncOrSwim-Installer.zipfrom the assets below. - Right-click → Properties → Unblock (Windows blocks scripts from internet zips by default).
- Extract anywhere; double-click
Install-SyncOrSwim.bat.
Full instructions in INSTALL.md.
Both players in a co-op session must install for the fix to be complete. A mixed setup only partially works.
Known limitations
- Only tested against Nitrox 1.8.1.0 + Subnautica 1.22.83031.
- Base-flood throttle is fixed at 1 Hz; if water-level updates look stepped, the knob is
THROTTLE_SECONDSat the top ofBaseFloodSim_Update_Patch.cs. - True simultaneous container access in the same frame can still race (pre-existing Nitrox behaviour, not introduced here).
Source code
The corresponding source for the patched DLLs is attached as syncorswim-source-v0.1.0-test.1.zip. See INSTALL.md for install steps and README.md for build-from-source steps.
Authors
Connor Sorey (@TheGeeks0424) and Zach.