GungeonTogether 3Player
Three-player Steam co-op with physical remote players, synchronized world interactions, combat and mod support.
| Date uploaded | 4 days ago |
| Version | 0.10.8 |
| Download link | Rec-GungeonTogether_3Player-0.10.8.zip |
| Downloads | 98 |
| Dependency string | Rec-GungeonTogether_3Player-0.10.8 |
This mod requires the following mods to function
BepInEx-BepInExPack_EtG
BepInEx pack for Enter the Gungeon. Preconfigured and includes unstripped Unity DLLs.
Preferred version: 5.4.2101MtG_API-Mod_the_Gungeon_API
Adds the good parts of Mod the Gungeon to BepInEx.
Preferred version: 1.9.2README
GungeonTogether
This experimental continuation is based on the original GungeonTogether project by lam and contributors. It remains available under the included MIT License.
GungeonTogether is a multiplayer mod for Enter the Gungeon that allows online co-op play using Steam P2P networking.
The current session size is three players: one host and up to two clients.
Modded sessions are supported when every player uses the same BepInEx plugins, plugin versions and registered ModTheGungeon items. Incompatible clients are rejected with the first detected manifest difference.
Version 0.10.8 smooths remote players by preserving the sender's original 30 Hz movement timeline even when Steam delivers several packets in one frame. Its adaptive interpolation buffer reacts to real packet jitter without imposing the old fixed delay, while the physical proxy uses smooth velocity correction.
The mod uses the game's native co-op door, sealed-room and elevator rules and feeds the native camera the whole three-player bounding box. The host relays complete inventory snapshots (guns, ammo, passive items, active items and current weapon), making drops, missed events and reconnects self-healing. Ground pickups, shared money/keys and pickup claims remain host-authoritative. Inventory changes are sent reliably and removals are confirmed by a fast second revision, preventing stale packets from undoing a new pickup. Transaction IDs make world mutations idempotent, while host-session and floor-epoch stamps reject delayed gameplay packets from an earlier floor.
From the main menu, HOST LOBBY creates a discoverable Steam room and
JOIN LOBBY opens the in-game room list. The list shows the host, player count
and installed-version compatibility before joining.
Version 0.8.3 added the optional Isaac-style three-player HUD. Version 0.8.2 added shared run seeds, layout fingerprints and safe floor-load fallbacks.
Version 0.8.1 fixes the black/over-zoomed client view during floor transitions by parking persistent remote players beside the local player until the synchronized dungeon is ready, and retries room placement when generation finishes late.
Version 0.8.0 replaces visual-only remote sprites with network-controlled real
PlayerController instances. Remote players now participate in the built-in
co-op camera, collision, room, enemy targeting, inventory and floor-transition
systems. It also fixes the lobby player-list construction error, makes the
connection handshake idempotent and removes per-second packet-poll log spam.
Version 0.6 added persistent remote players across scene changes, smoother 20 Hz
player snapshots, stable host-driven floor transitions, exact modded pickup
identity matching, and safer gameplay patches. Version 0.5 added host-authoritative
enemy projectiles, exact projectile matching for multi-shot/charged guns, beam synchronization, and a locked run roster. New
players may join in the foyer; after the run starts, only a disconnected member
of that run may reconnect.
[!WARNING] THIS MOD IS STILL VERY EARLY IN DEVELOPMENT - DO NOT EXPECT A FUNCTIONAL EXPERIENCE RIGHT NOW
WIP WIP WIP WIP WIP WIP pls be nice
[!WARNING] ON HOLD, HAD SOME HUGE UNEXPECTED LIFE THINGS GET IN THE WAY, DO NOT WORRY, THIS MOD IS STILL IN DEVELOPMENT AND WE ARE STILL EXTREMELY EXCITED ABOUT THE FUTURE OF GUNGEONTOGETHER
The mod is free (because I'm not weird). however I'm broke asf so feel free to donate for my INSANELY INTENSE AND HARD LABOUR (jk) My paypal is [email protected] if you actually want to (for some reason)
Contributers
[!NOTE] As this mod runs through the steam network, it only works with the steam verison of the game as steamID is required
Features
What works so far
| System | Status | Notes |
|---|---|---|
| Steam invites/lobby system | 🟩 Done | Steam lobby creation and joining functional |
| Steam P2P networking | 🟨 Working | Real connections and Steam invites working |
| Three-player HUD | 🟨 Working | Isaac-style corner HUD; F8 switches to the native HUD |
| Player Synchronization | 🟨 Working | Real remote PlayerControllers with 20 Hz movement and animation sync |
| Three-player co-op | 🟨 Working | Native co-op room rules, three-player bounds camera and real PlayerControllers |
| Enemy Synchronization | 🟨 Working | Host-driven enemies across active rooms, including state and projectiles |
| Weapon Synchronization | 🟨 Working | Projectiles/beams plus full gun inventory, selection and per-gun ammo snapshots |
| Reconnection | 🟨 Working | Run roster locks after leaving the foyer; prior members can reconnect |
| Dungeon Synchronization | 🟨 Working | Shared seed, layout fingerprint and safe mismatch rejection |
| Items/economy | 🟨 Working | Full passive/active inventory snapshots, host-authoritative ground pickups, shared keys and money |
| Down/revive | 🟨 Working | Nearby living teammate revives a downed player after three seconds |
| Singleplayer | 🏁 Finished | Yippeeee!!!!! |
Planed for 1.0 release
- Online co-op multiplayer for Enter the Gungeon
- Steam P2P networking (no dedicated servers required), no parsec or streaming required
- Real-time synchronisation of
- Players
- Enemies
- Projectiles
- Dungeon
- Debug controls for testing
- Spectate when dead
- Enemy scaling (set difficulty in game)
Planned for the future
- EPIC GAMES SUPPORT (EOS P2P)
- Unlimited players
- EVERYTHING synced
- Custom Game Modes
- Race mode (competing in identical dungeons, first player to finish wins)
- Mirror mode (identical dungeons, can hurt one another but can't see eachother, shooting is synced across dungeons)
- Teammate revive items
- Team based buffs and items
Installation
- Install BepInEx for Enter the Gungeon
- Copy
GungeonTogether.dllto[ETG Install]/BepInEx/plugins/ - Launch Enter the Gungeon
Building
This only applies to people who want to build from source, or if we forget to post builds :)
- You will need to setup BepInExPack_ETG (either with a mod manager like r2ModMan or manually)
- Place the required game, BepInEx and ModTheGungeon reference assemblies in
GungeonTogether/Libs/ - Run
dotnet build GungeonTogether/GungeonTogether.csproj -c Release - Launch Enter the Gungeon
Technical Details
Built with BepInEx framework using Steam P2P networking for a seamless multiplayer experience. Unfortunately if you play the game through epic or windows store this mod will not work, as it runs through steams p2p api only, which means you need a steamID for it to work. Sorry guys... (EPIC COMING SOON)
[!NOTE] Wiki!!! https://deepwiki.com/llamerrr/GungeonTogether Thanks to https://github.com/TheExploration
1.0 release coming one day!!!!!!
CHANGELOG
Changelog
0.10.8
- Remote movement now preserves the sender's 30 Hz snapshot timeline when Steam delivers packets in bursts, removing stop/jump motion.
- The interpolation buffer adapts to measured packet jitter and starts at 85 ms instead of imposing a fixed 120 ms delay.
- Remote rigidbodies use velocity feed-forward with proportional correction instead of frame-sized velocity spikes.
- Protocol version 21 prevents mixing the old and new movement timelines.
0.10.7
- Death now follows the base game: no more frozen "downed" state. The dying player plays the native death/ghost flow; the other side sees the proxy as dead (game over when both are dead). Network revive disabled.
- Diagnostics: [Damage] ENEMY lines (hits on enemies) and [Combat] lines (who the first enemy targets).
0.10.6
- Remote player animation: sprite frames are now played on the same delayed timeline as the interpolated position (was newest-packet sprite on a 120 ms delayed body); position send rate 20 -> 30 Hz.
- Diagnostics: [Damage] log lines (source, amount, room, position) for the first 60 hits on any player.
0.10.5
- Fix: ownerless companions (cloned with the remote player proxy) no longer throw a NullReferenceException every frame in CompanionController.Update.
0.10.4
- Fix: NPC conversations and all Breach (foyer) interactions/breakables are no longer synchronized. Replaying a dialogue on the other machine froze input and broke the game ("cannot pass doors").
0.10.3
- Remote player movement: snapshot interpolation (120 ms buffer) instead of last-packet prediction, tighter physics tracking, and warp only after a sustained gap. Fixes jittery movement and periodic teleporting.
0.10.2
- Fix: remote avatar no longer re-applies identical health/armor every packet (removes the "changing health" log flood).
- [Progress] sync summaries are now logged at Info level so they appear in LogOutput.log.
0.10.1
- Client no longer rolls its own private seed when a floor starts loading before the host world state is applied; it reuses the host seed.
0.10.0 - ProgressProfile sync
- All players now play with the intersection of everyone's progress (flags, stats, encountered rooms/items), like Isaac Online: the least-progressed player decides. Computed in memory only; save files are never modified.
- Map layout/unlocks now match between host and clients, fixing the world-mismatch rejection after dungeon load.
- New config
ProgressSync/Enabled(default true). Host and clients should use the same value. - Protocol version 20 (all players must update).
- Fix: remote avatar no longer spams "changing health" log lines.
0.9.8
- The authoritative foyer state now starts the client's normal playable-Breach transition instead of calling a foyer load while the title menu is still active.
- Duplicate reliable world-state packets no longer cancel and restart an in-progress client placement.
- Same-world placement retries until the local player exists instead of failing after one early attempt.
- Protocol version 19 prevents mixing visually identical but binary-different 0.9.7 test packages.
0.9.7
- Clients now enter the host's Breach only through the authoritative world-state packet; the menu no longer starts a second competing foyer load after joining.
- A newer host world state cancels an older delayed placement, preventing a queued Breach teleport from firing after dungeon loading has begun.
- Includes the
LEAVEmain-menu return fix prepared after 0.9.6. - Protocol version 18 rejects earlier builds that still contain the double-load race.
0.9.6
- Added a
JOIN LOBBYoption beside the main-menu host flow. - Added an in-game Steam lobby browser showing the host name, player count and version compatibility.
- Hosted rooms are discoverable as public Steam lobbies, while the browser filters out every lobby that is not created by Gungeon Together.
- Full or incompatible rooms remain visible for diagnosis but cannot be joined.
LEAVEnow closes the network session and returns to the real main menu instead of silently leaving the player in a single-player breach.
0.9.5
- Preserve reliable delivery when structural inventory changes are relayed through the host; lightweight heartbeat snapshots remain unreliable.
- Added sender-minted transaction IDs for pickups, ground-item changes, interactions and breakables so retransmission or snapshot replay cannot apply a world mutation twice.
- Added host-session and floor-epoch stamps to movement, combat, rooms, vitals, inventory and world-event packets; delayed packets from an earlier floor are rejected before application.
- Reconnecting clients use a fresh transaction namespace while retaining the host's current world identity.
- Fixed the lobby UI reporting a pending or rejected Steam-lobby member as game-connected; protocol/mod mismatches now remain out of the game and show an explicit rejection reason and per-member connection state.
- Protocol version 17 rejects older clients that do not carry transaction and world stamps.
0.9.4
- Inventory removals require two distinct revisions, preventing a stale snapshot from dropping a freshly acquired item.
- A reliable confirmation snapshot follows inventory changes after 0.45 seconds, so legitimate drops do not wait for the two-second heartbeat.
- Ammo counts no longer alter the inventory fingerprint, avoiding reliable inventory traffic for every shot; ammo continues through the regular vitals stream and inventory heartbeat.
- Fixed null passive/active item reconciliation and throttled failed modded-item grant retries.
- Protocol version 16 rejects mixed 0.9.2/0.9.3 sessions.
- Release DLLs are built directly from the tagged source with versioned assembly metadata.
0.9.3
- Internal inventory-race test build; superseded by 0.9.4.
0.9.2
- Restored the game's native co-op door, sealed-room and elevator movement instead of warping the party on every room transition.
- Added periodic host-relayed inventory snapshots for all guns, per-gun ammo, passive items, active items and current weapon selection.
- Inventory snapshots repair missed pickup/drop events and initialize reconnecting players correctly.
- Added explicit ground-pickup removal messages so expired, sold or otherwise removed drops do not remain on clients.
- Added host-side distance validation for client pickup claims.
- Camera overrides are now cleared only when Gungeon Together owns them.
- Protocol version 15; every participant must use 0.9.2.
0.9.1
- Internal test build for native co-op door transitions; superseded by 0.9.2.
0.9.0
- Added party-wide room transitions and three-player native camera bounds.
- Registered all three controllers for room logic and enemy targeting.
- Synchronized enemies across active rooms and activated nearby teammate revives.
- Added host-authoritative ground drops, pickup claims and shared money/keys.
- Reject mismatched generated maps caused by different mods or unlock state.
- Added measured round-trip latency and synchronized gun aim direction.
- Protocol version 13; every participant must use 0.9.0.
0.8.3
- Added the optional Isaac-style three-player corner HUD and F8 toggle.
0.8.2
- Added shared run seeds, map fingerprints, safe placement and black-screen fallbacks.
0.8.1
- Protected the camera during floor loads and retried late room placement.
0.8.0
- Replaced visual-only avatars with physical network-controlled PlayerControllers.
- Added host-authoritative interactions, room state, shared resources and modded equipment identity.