GameSaverRevived
Auto-saves every card pick so a crash or disconnect doesn't end the run. Bug-fix fork of otDan's GameSaver. Fixes written with AI assistance.
模組介紹 作者原文
GameSaverRevived
Auto-saves every card pick so a crash or disconnect doesn't end the run. Bug-fix fork of otDan's GameSaver. Fixes written with AI assistance.
A bug-fix fork of otDan's GameSaver (MIT).
All of the original design and UI is otDan's work. This fork exists because the save browser
had stopped working: the LOAD and BACK buttons did nothing, players showed up twice, card
counts were wrong, and rounds needed several clicks to select or became unselectable entirely.
AI disclosure: the bug fixes, the offline share-code system and the icon in this fork
were written with AI assistance, reviewed and tested by a human. The original mod's design
and UI are otDan's work. ROUNDS has no "AI Generated" category, so this
note is the disclosure.
Works with RoundsWithFriends
and LobbyImprovements.
What it does
Every time cards are picked, the mod snapshots the whole match: every player's cards, points,
rounds won, colour, and the game mode settings. If the game falls over, someone drops, or the
lobby dies, the host opens a new lobby, hits LOAD, picks the round, and starts the match.
Everyone gets their cards and score back and the run continues.
Saves live in BepInEx/config/Saves. Only the host sees the LOAD button, because only the
host can drive the restore.
Sharing a save
Pick a round, hit EXPORT, and a code is copied to your clipboard. Paste it to a friend;
they hit IMPORT and it appears in their browser. Whoever hosts next can then load it.
The code is the save. Nothing is uploaded, there is no account, no API key and no server that
can expire or disappear, and it works offline. Encoding is deterministic, so the same save always
produces the identical code and two people can compare codes to confirm they are about to load
the same state.
Typical codes run 400 to 1300 characters, which fits in one Discord message. A very large lobby
with long decks can exceed the 2000-character limit, so every export is also written to
BepInEx/config/Saves/_shared/ as a text file you can attach instead. IMPORT reads whatever is
in the text box, or falls back to your clipboard if it is empty.
The original used paste.ee: it uploaded your entire saves folder and returned a
five-character id, with the author's personal API token compiled into the mod. That is why a
short code was possible, and also why it broke.
Installing
Install through r2modman or Mod Manager along with its dependencies.
Remove or disable otDan-GameSaver first. This fork keeps the original plugin GUID on
purpose so it acts as a drop-in replacement, and BepInEx resolves a GUID clash by loading only
the highest version. That means installing both is harmless but pointless, and leaving the old
one enabled while downgrading this one would silently bring the bugs back.
What was fixed
Card resolution no longer takes the whole menu down with it. One unresolvable card used to
throw out of the resolution loop. The half-filled list was then cached forever, which is why
players with 18 cards displayed 5. The same exception escaped through StartCoroutine, which
returns null when an iterator throws on its first step, and that null went into the list
that Close() walks with StopCoroutine - so LOAD and BACK threw a NullReferenceException
before doing anything, for the rest of the session. Cards now resolve one at a time behind a
try/catch, the list is only published once complete, and anything unresolvable shows as???
instead of killing the menu.
The most common trigger was a randomly-generated card from RandomCardsGenerator. Its
GenerateRandomCard(int seed) overload passes a null player and then dereferences it, and
only survives when the seed happens to still be in that process's in-memory cache from the
original match. So the identical save could load fine on one machine and throw on another.
Selecting things works on the first click. Clicking a round used to start a builder
coroutine that hid rows one per frame and, at the same time, an enabler
安裝與使用 安裝:BepInEx 外掛
- 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
- 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
- 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
- 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。
帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。
下面這些內容需要先安裝,否則該模組不會生效: