Skip to content

Releases: TheGeeks0424/SyncOrSwim

v0.2.0-pre.1 — storage + flood sync, one installer for players and host

Choose a tag to compare

@TheGeeks0424 TheGeeks0424 released this 10 Jun 01:49

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

  1. 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.
  2. 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 (server subfolder → 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 via SpawnEntities.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 upstream 1.8.1.0 tag: 3bc0a0dd, c9abfef6, 2989034f).

Install

Everyone — both players and the server host — runs the same installer on their own Nitrox 1.8.1.0 folder:

  1. Close Subnautica, the Nitrox launcher, and the Nitrox server.
  2. Extract SyncOrSwim-Installer.zip into one folder (keep the server subfolder).
  3. 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

GPL-3.0, derivative of SubnauticaNitrox/Nitrox. Intended to be offered upstream once play-tested.

v0.1.0-test.1 — Initial public test release

Choose a tag to compare

@TheGeeks0424 TheGeeks0424 released this 08 Jun 23:04

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 InventoryItemEntity payload instead of the thin EntityReparented packet. 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 BaseFloodMetadata extractor + processor + Harmony patch on BaseFloodSim.Update. The simulation-owning client broadcasts per-cell water level + base hull strength at 1 Hz; non-owners apply under PacketSuppressor to avoid feedback loops.

Both fixes are client-side only. No server changes. No wire-protocol changes.

Install

  1. Download SyncOrSwim-Installer.zip from the assets below.
  2. Right-click → PropertiesUnblock (Windows blocks scripts from internet zips by default).
  3. 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_SECONDS at the top of BaseFloodSim_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.