Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
RevivalSync
[HIGHLY EXPERIMENTAL - expect game-breaking bugs, not for normal play] Singleplayer-feel multiplayer for R.E.P.O. Made by Revival.
By Revival
| Date uploaded | a day ago |
| Version | 1.0.3 |
| Download link | Revival-RevivalSync-1.0.3.zip |
| Downloads | 7 |
| Dependency string | Revival-RevivalSync-1.0.3 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
RevivalSync
Made by Revival
⚠️ HIGHLY EXPERIMENTAL — NOT FOR NORMAL PLAY
This mod is in an active testing phase and is prone to many game-breaking bugs: desynced objects, broken carts and doors, loot behaving differently for each player, and anything else physics-related going wrong. Do not use it for runs you care about. Install it only if you're helping test, and expect things to break.
One mod that makes R.E.P.O. multiplayer feel like singleplayer — the successor to (and merger of) NetworkingRevived and NetworkTweaksRevived, rebuilt on the architecture of the original NetworkingReworked with its host-state capture technique.
What it does (client-side only — works with unmodded hosts)
- Instant grabs: valuables, props and carts respond the moment you grab them, no host round trip. Carts follow you at full speed with the game's real steering feel.
- Synced world: everything you're not holding is continuously blended toward the host's authoritative state, so desync cannot accumulate. Wedged/stuck objects snap free.
- Smooth everything else: enemies, doors, and other host-driven objects move with snapshot interpolation instead of choppy stepping.
- No random timeout kicks: Photon's client-side disconnect timer is neutralized via Photon's own settings (zero patches).
- Faster networking: packets processed every rendered frame.
Doors and cabinets are deliberately host-driven (like the original NetworkingReworked): their joints and springs are managed by host-only game code and cannot be simulated locally without breaking them. They're smoothed, but open on the host's authority.
Both players can (and should) install it — it automatically does nothing while you're the host and activates when you're the client.
Config
BepInEx/config/com.Revival.revivalsync.cfg — simulation strengths, cart options,
SmoothSync tuning, timeout toggle. VerboseLogging (ON by default during the testing
phase) records everything the sync system does — registrations, grabs, snaps, handbacks,
host packet flow, stale-data warnings — so bug reports come with the full story attached.
Include your BepInEx/LogOutput.log when reporting problems.
Install
- Install BepInEx (BepInExPack for R.E.P.O.).
- Drop
RevivalSync.dllintoBepInEx/plugins. - Remove NetworkingRevived, NetworkTweaksRevived, NetworkingReworked and REPONetworkTweaks if you still have them — RevivalSync replaces all of them and will warn if they're present.
CHANGELOG
Made by Revival
Source code / report bugs / help develop: https://github.com/Vladtheosis/RevivalSync
1.2.5 — first stable release
- Fixed doors and cupboards drifting out of sync with the host: the door's own auto-close spring (which runs locally) counted as "local motion" and blocked syncing — an open cupboard would quietly close itself on your screen while staying open for the host. The host's door angle is now continuously authoritative; only YOUR pushes, grabs and the settle right after them go local (so opening things stays instant)
- Known issue: doors/cupboards can still occasionally appear desynced from the host — this is ongoing work. Reports with Verbose Logging on are very welcome
1.2.2
- Thrown objects no longer snap to the host's landing spot after they fall: for 3 seconds after a throw the "wedged object" teleport is disabled (bounces legitimately land in different spots on each machine), and settling toward a resting host copy is capped to a calm glide speed instead of a zip
1.2.1
- Thrown objects no longer stop mid-air "catching their breath": the sync target is now led by your one-way ping (the host's copy always trails a moving object by exactly that), and after the throw grace corrections fade in gradually — the object follows the host's flight smoothly instead of braking toward its trailing position
- Fixed weird shop doors: releasing a door was going through the throw pipeline (throw grace + host-state overwrite), which masked the host's true door state — a locked shop door would reconcile toward where YOU left it instead of where the host keeps it. Doors are now fully exempt from throw handling
1.2.0
- The client controls what it touches: weapons, grenades and gadgets are back under local simulation for the true singleplayer feel — 1.1.9's blocklist made every tool you actively use feel host-laggy in hand. Weapon orientation is computed locally from each weapon's own aim/tilt tuning (no network data in the rotation loop, so none of the old glitching), gadgets mirror the host gently, and damage/explosions remain host-decided like vanilla
- Only genuinely self-moving objects stay on the game's normal sync: vehicles, drones, and the duck
1.1.9
- Adopted the original NetworkingReworked's item policy wholesale (credit: readthisifbad): weapons, powered gadgets (anything with a battery), grenades, mines, drones, upgrades and vehicles are never simulated — they use the game's normal sync, which is simply the reliable answer for objects with complex logic of their own. Correct orientation and behavior, at the cost of a small hand lag on those items only
- Simple items (health packs and plain carryables) keep the instant hand feel and predicted throws
1.1.8
- Fixed undrivable vehicles: the new drivable vehicles (Semiscooter etc.) were being synced toward the host's lagging copy while you drove them. Vehicles are now fully excluded from the simulation — they use their own driving physics and networking
- Fixed glitchy weapon hold: holding the host's rotation at full strength telegraphed every 10-per-second, ping-late network step. Guns and melee weapons now compute their hold orientation locally from their own tuning fields (aim offset, tilt) — the same numbers their scripts use — so there is no network data in the rotation loop at all. Other gadgets keep a gentle host mirror that can't telegraph steps
1.1.7
- Tool hold is now firm, not floppy: pointing the grab controller at the right rotation (1.1.6) wasn't enough — the game's base orientation torque is deliberately gentle. Host-side weapons feel firm because their scripts stack a 2x torque boost and heavy rotation damping on top; the mod now applies that exact recipe (the gun's own values) while holding the host's rotation
1.1.6
- Tool straightening finally works at full strength: the game's grab system re-captures its orientation target from the object's current rotation every frame, which silently cancelled every previous attempt that steered the object directly. The mod now writes the grab controller's own target (the same channel weapon scripts use) with the host's straightened rotation — the game's own tuned torque does the driving
1.1.5
- Config rebuilt for humans: section "1. Main" has plain on/off switches (Instant Carts / Instant Doors / Instant Items / No Timeout Kicks / Smooth Enemies), "2. Fine-Tuning" holds the numbers with plain-language explanations (defaults are good), "3. Debug" has Verbose Logging for bug reports. NOTE: settings from older versions reset to defaults once (the old entries are ignored); re-apply any personal tweaks in the new sections
1.1.4
- Tool straightening is now strong: it was switching itself off whenever the host's copy rested (no packets = no hold, and the game's torque crept the tool crooked again). The host's straightened rotation doesn't expire like positions do — the hold is now constant while you carry the tool, with roughly twice the corrective strength
1.1.3
- Held tools now STAY straight: the game's default grab torque wants a different orientation and was shoving the tool off the host's straightened rotation. We now do what the game's own weapon scripts do while imposing orientation — neutralize that torque and heavily damp rotation — then hold the host's rotation unopposed. Manually rotating a held item still takes priority, exactly like the game's gun code
- Completed the full study of the original NetworkingReworked (credit: readthisifbad): every technique catalogued in docs/NETWORKINGREWORKED-NOTES.md with adoption status
1.1.2
Three fixes powered by studying the original NetworkingReworked's code (credit: readthisifbad — techniques adopted with thanks):
- Thrown objects no longer stop mid-air when the throw grace ends: on release, the cached host state is overwritten with our own release state (NetworkingReworked's trick), so corrections never reference the host's stale "still in your hand" data
- Opening doors/cabinets is no longer delayed: a door in local motion now belongs entirely to local physics (NetworkingReworked's door model) — continuous rotation sync was fighting the locally-running hinge logic. The host is followed only when its door moves while yours rests (another player using it), plus a gentle long-idle reconcile
- Held tools' residual jitter fixed: the rotation mirror now steers angular velocity instead of forcing the transform each tick, so it cooperates with the grab physics instead of fighting it
1.1.1
- Fixed held weapons vibrating violently (1.1.0 regression): running the game's weapon orientation code locally fights the client-side grab physics. Weapons now mirror the host's straightened rotation instead, like every other gadget — straight in hand, no fight
- Fixed thrown objects "moving weirdly": right after a throw the host still thinks the object is in your hand, and corrections dragged the flight toward that stale data. Throws now fly on pure local physics for the grace period (config: PostThrowGrace), then reconcile smoothly
1.1.0
- Held weapons now straighten out in your hand like they do for the host: guns and melee weapons run the game's own orientation logic locally (instant), and every other gadget mirrors the host's straightened rotation while held
- Objects that drifted from the host's state no longer jiggle their way back or trail far behind: position forcing is gone entirely for physics objects, replaced by distance-scaled velocity steering that closes big gaps in under half a second — smoothly
- Out of the experimental phase: warnings retired, VerboseLogging defaults to off (turn it on and attach LogOutput.log when reporting bugs)
1.0.7
- Shop items (weapons, swords, grenades, energy crystals, tools...) are now simulated locally like valuables and carts: they follow your hand instantly instead of being host-driven with interpolation delay stacked on top ("tools feel laggy"). Thrown items fly with your predicted throw too. Their effects — damage, explosions, battery drain, breaking — remain host-decided exactly like vanilla. Config: Simulation > SimulateItems
1.0.6
- Fixed world-wide vibration/jitter ("phone on max"): sync corrections were forcing object positions every physics tick, fighting the physics engine 50x a second while chasing a target that resets with every network packet. Corrections now steer velocity instead — objects glide to the host's state and rigidbody interpolation stays smooth. Position forcing only remains for large divergences (guaranteed convergence) and host-kinematic objects
- Held-object drift corrections are now smooth velocity nudges too (no position stepping)
- Objects that are already in sync get a small deadband: no more micro-shimmer from chasing per-packet noise while at rest
- The network lag estimate is clamped so Photon clock noise can't kick host positions around
- Note: if you tuned SmoothSync RateSmoothing up, set it back to 0.1 — at 1.0 the update-rate estimate follows every packet-timing wobble and makes enemies/players jitter
1.0.5
- Pushing doors open with a cart (or your body, or held loot) no longer fights the sync: while you're physically pushing a door, it goes fully local so it swings immediately, then settles back to the host's state after — no more delayed/buggy door shoving
- Held objects no longer trust stale velocity data when the host pauses sending (a subtle source of weird cart corrections)
- When the host stops sending entirely (game hang, host quitting, connection loss), the sync no longer pins everything to the host's frozen last-known state — carts, doors and loot stay fully usable locally until data flows again (the "everything was stuck" freeze)
1.0.4
- Interim re-release published directly on Thunderstore: same code as 1.0.3, packaging tweaks only
1.0.3
- Fixed choppy shadowed objects: Photon only sends packets when something changes, and the blend treated stale data as live — objects vibrated/drifted around old targets. Silence now correctly means "the host's copy is at rest exactly there", and while packets flow the blend leads the target by the data's age for continuous motion. Blends also use interpolation-aware physics moves instead of raw position writes (no more visible stepping)
- Fixed cart desync when dragging from the body ("weak" mode): the local steering drive now engages only for handle grabs, matching what the host actually simulates
- Doors and cabinets are simulated locally again — done right this time (the way the original NetworkingReworked did it): the game's own hinge logic (closing torque, latching, bounce, stabilization) runs on your machine, the local joint is kept and unbreakable, host decides breaks and we mirror them. Doors respond instantly (config: SimulateHinges)
1.0.2
- CRITICAL: fixed the "no internet" bug (couldn't host or join, no error shown) that came back in 1.0.0/1.0.1. The new host-state capture hooked a PhotonNetwork method during mod loading, which force-starts Photon too early and silently kills all connectivity. The hook is now applied only after the game starts Photon itself. Update from 1.0.1 immediately.
- CRITICAL: discovered that the sync system's update loops (passive blending, drift correction, cart steering assist, handbacks — the entire anti-desync machinery) never actually ran in ANY previous version: this game never runs Update on mod-created objects. The loops now ride verified in-game hooks. This is very likely the root cause of most desync reported so far — this version is effectively the architecture's first real run.
1.0.1
- Marked the mod clearly as experimental/testing-phase in all package files
- VerboseLogging is now ON by default and records everything the sync system does: object registrations, client-mode transitions, grabs/releases/throws, snaps (with reason and distance), handbacks, dedupes, stale-host-data warnings, and 10-second stats (registered objects, held objects, host packet flow)
1.0.0
- Merged NetworkingRevived and NetworkTweaksRevived into one mod
- Host state is now captured at the raw network-event level (the original NetworkingReworked's proven technique) — immune to component order, other mods' patches, and the silent capture failures that left carts without host data
- Fixed held objects being skipped by drift correction when the game force-flags them "kinematic" for clients
- Doors and cabinets reverted to host-driven (with smoothing): their springs, joints and breaking are host-managed game logic that cannot be replicated locally without the springy/broken-door bugs — this matches what the original NetworkingReworked did
- Guaranteed cart steering, cargo riding, stuck-object snapping, velocity-aware drift correction, post-throw grace, timeout fix, LateUpdate dispatch and SmoothSync all carried over from the previous mods
- VerboseLogging now prints per-second held-object diagnostics (speed, drift, host packet age)