RunBackup

v1.1.0·Updated 2026-07-24

Automatically backs up your save every level, so a team wipe doesn't end the run. Rotating copies, restore by hand.

About this mod Author’s original text

RunBackup

Automatically copies your save every time a level starts, so a team wipe

doesn't have to end the run.

Built and compiled against game build v0.4.4 (Cosmetics Update line).

Why

R.E.P.O. deletes the save file when every player dies, and there's no in-game

undo. It also writes a save at the moment you die, so quitting from the death

screen rescues nothing. The only protection is a copy made beforehand — which

means remembering to make one.

This does the remembering.

What it does

Hooks RunManager.ChangeLevel, which covers both moments the game auto-saves:

arriving at the Service Station, and the instant a new level begins. Every

save the game writes gets a copy.

Copies land in a timestamped folder named after the run, e.g.

2026-07-24_11-42-08_L4-Manor, so you can find the right one at a glance.

Oldest are pruned once you pass MaxBackups.

Restoring

  • Quit to the main menu (or close the game).
  • Open the backups folder — by default Documents\REPO RunBackups.

The exact path is also printed in LogOutput.log at startup.

  • Pick the backup from the level you want.
  • Copy its contents back into the saves folder, replacing what's there.
  • Load the game — you'll be at the start of that level.

Restoring is deliberately manual. Doing it automatically would mean writing

to the save folder while the game may be reading it, and getting that wrong

costs you the run it was meant to protect.

Host only

In multiplayer only the host has a save file at all, so only the host needs

this. Clients running it will simply never find a saves folder to copy.

Config

BepInEx/config/benjamin.runbackup.cfg

| Key | Default | Notes |

|---|---|---|

| Enabled | true | Master switch |

| MaxBackups | 10 | Oldest pruned first. A few hundred KB each |

| WriteDelay | 5.0 | Seconds to wait after a level change before copying |

| BackupDirectory | (empty) | Absolute path override. Empty = Documents\REPO RunBackups |

| Verbose | false | Logs every backup and prune |

WriteDelay exists because the game writes its save around the level change,

and copying mid-write would capture a truncated file. Raise it if a backup

ever looks incomplete.

Notes

The saves path is derived from Unity's Application.persistentDataPath

rather than a hardcoded AppData path, so it resolves correctly on Windows and

under Proton or a native Linux build.

Backups default to Documents\REPO RunBackups — somewhere you'll actually

find them — and are never written inside the game's saves folder, where

they'd risk being picked up by the game's own save list. If Documents doesn't

resolve (unusual setups), it falls back to a RunBackups folder beside the

saves folder.

Files are opened with ReadWrite sharing, so a backup can never block the game

from writing its own save even if the timing overlaps.

Tests

Unlike a gameplay patch, the file handling here is testable outside the game,

and it is. FileOps.cs has no Unity or BepInEx references so the same source

file compiles into a test harness covering recursive copying, byte-for-byte

integrity, copying while another process holds a save file open, prune

ordering and edge cases, and a 12-level rotation against a cap of 10.

Building

Requires.NET SDK 8.0+. Add the NuGet feeds in nuget.config, then:

dotnet build -c Release

Output lands in bin/Release/netstandard2.1/RunBackup.dll. Drop it in

BepInEx/plugins.

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.

Dependencies

Install these first, or the mod will not work:

BepInEx-BepInExPack

File & checksum

Filename
RunBackup-1.1.0.zip
File size
19.4 KiB