MidGameJoin
Allows Steam friends to join an active RoundsWithFriends private match as spectators, then enter after card selection with average-card catch-up picks.
By JEFFSTER
| Date uploaded | a week ago |
| Version | 0.1.0 |
| Download link | JEFFSTER-MidGameJoin-0.1.0.zip |
| Downloads | 96 |
| Dependency string | JEFFSTER-MidGameJoin-0.1.0 |
This mod requires the following mods to function
BepInEx-BepInExPack_ROUNDS
BepInEx pack for ROUNDS. Preconfigured and ready to use.
Preferred version: 5.4.1900willis81808-UnboundLib
This is a helpful utility for ROUNDS modders aimed at simplifying common tasks.
Preferred version: 3.2.14README
MidGameJoin
MidGameJoin is a ROUNDS add-on for RoundsWithFriends 2.2.2 that lets Steam friends join a private match after it has already started.
How late joining works
A friend may join through a Steam invite or Steam's Join Game option while the match is running. The late joiner is kept as a spectator and is not added to the combat player list during the current fight.
After the existing players finish the current cycle's normal card picks, MidGameJoin freezes the insertion batch. Each late joiner receives a number of manual catch-up picks equal to the floored average of the existing active players' current card counts. For example, card counts of 4, 5, 6, and 4 average to 4.75, so the late joiner receives 4 catch-up picks.
In Team Deathmatch, a waiting spectator chooses their team before the insertion batch locks. They may change that selection while waiting. In Free-for-All (FFA), no team choice is required.
The next combat begins only after every late joiner in the locked batch has either completed catch-up selection, disconnected, or been rolled back to spectator because validation failed.
Requirements
Everyone in the private match must have the same MidGameJoin version installed. MidGameJoin is designed for private RoundsWithFriends games using:
- BepInExPack for ROUNDS 5.4.1900
- UnboundLib 3.2.14
- RoundsWithFriends 2.2.2
Supported
- Steam friend Join Game
- Steam Invite joins
- RoundsWithFriends private Team Deathmatch
- RoundsWithFriends private Free-for-All (FFA) / Deathmatch
- Multiple late joiners in one insertion batch
- Spectating while waiting
- Manual average-card catch-up picks, rounded down
Not supported
- Public matchmaking
- Joining directly into an active fight
- Mixing clients that do and do not have MidGameJoin installed
Host migration
Host migration is handled conservatively. If RoundsWithFriends performs its network restart while spectators are pending, those pending players may be returned to the spectator/waiting state and deferred by one card cycle rather than risking duplicate combat players. Players that were already fully active are left alone.
Development status
Version 0.1.0 must pass the multiplayer checklist included with the source before it should be published publicly. A source/package layout produced without a successful compile or two-client Steam test is a development build, not a release-validated Thunderstore upload.
Building from the development source
On Windows, after installing the .NET desktop development tools, double-click BUILD_MIDGAMEJOIN.bat in the source folder. Choose the Steam ROUNDS game folder first, then choose the Thunderstore profile folder that contains BepInEx. The helper runs the core tests, builds MidGameJoin.dll, creates dist/MidGameJoin-0.1.0.zip, and writes build-output.log if anything fails.
CHANGELOG
Changelog
0.1.3 - Thunderstore archive compatibility
- Repackages the Thunderstore upload using a staged directory and
ZipFile.CreateFromDirectory. - Keeps
manifest.json,README.md, andicon.pngat the true ZIP root with standard archive layout. - Keeps the selectable icon flow and the forward-slash
plugins/MidGameJoin/MidGameJoin.dllpath. - Advances the version so earlier rejected/reserved uploads do not block this corrected release.
0.1.2 - Rejected-version recovery
- Moves to a new immutable Thunderstore version because 0.1.1 is already reserved by the rejected upload.
- Keeps the corrected forward-slash ZIP entry format for
plugins/MidGameJoin/MidGameJoin.dll. - Keeps selectable Thunderstore icon support from the previous builder.
0.1.1 - Build/package update
- Adds selectable Thunderstore icon support in the one-click builder.
- Bumps the package/plugin version so Thunderstore accepts a new upload.
- Fixes ZIP entry separators so nested plugin paths use standard forward slashes accepted by Thunderstore.
0.1.0 - Development candidate
- Added private-match late joining for RoundsWithFriends.
- Added spectator-only waiting for players who connect during an active match.
- Added Steam Invite and Steam friend Join Game late-join flows.
- Added Team Deathmatch team selection while spectating.
- Added Free-for-All insertion without team selection.
- Added a frozen catch-up count based on the floored average card count of the existing active players.
- Added manual catch-up card selection before the newcomer becomes active.
- Added support for multiple late joiners in one insertion batch.
- Added protocol/nonce validation, duplicate-message guards, disconnect rollback, and conservative host-migration recovery.
Release status: this version is not ready for public Thunderstore publication until it successfully compiles against the target profile and the multiplayer release gates in docs/testing/multiplayer-checklist.md pass on real Steam clients.