Quick answer: Capture the session ID, each player role, and the migration events on co-op bug reports, because host migration, transferring authority when the host leaves, is a fragile moment where state transfer goes wrong. The shared session ID lets you correlate reports across players to see what broke during the handoff.
Co-op games that let players drop in and out face a uniquely tricky problem: what happens when the host, the player whose machine holds the authoritative game state, leaves. Host migration transfers that authority to another player, and it is one of the most fragile moments in any networked game, because the entire game state has to survive a handoff between machines under imperfect conditions. The bugs that result, lost state, duplicated entities, players stranded, are hard to reproduce, and capturing the session and migration context is the key to fixing them.
Host migration is a fragile handoff
In a typical co-op session, one player is the host, running the authoritative simulation that the others sync to. When the host leaves, whether they quit, crash, or lose connection, the session must either end or transfer authority to another player. Host migration is that transfer, and it is fragile because the new host must reconstruct or inherit the full game state and seamlessly take over as the source of truth.
Many things can go wrong in that handoff. State that lived only on the old host can be lost, the transition can leave players in an inconsistent state, entities can be duplicated or dropped, and the timing of the migration relative to in-flight actions can produce edge cases. These bugs only happen during the brief, complex moment of migration, which makes them rare and hard to reproduce without capturing exactly what happened.
Capture the session and roles
The foundation for debugging co-op bugs is a shared session ID attached to every report from that session, plus each player current role: host or client, and whether they were the old or new host across a migration. Without the session ID, reports from different players in the same session are unrelated, and you cannot reconstruct the shared event from the multiple perspectives that a migration bug requires.
When the old host, the new host, and the other clients all file reports tagged with the same session ID, you can line them up and see the migration from every angle. The roles tell you who held authority before and after, which is essential for understanding a state-transfer bug, because the discrepancy is usually between what the old host had and what the new host received. The session ID and roles are what turn scattered reports into a coherent picture of the handoff.
Capture the migration events
The migration itself is a sequence of events, the host leaving, a new host being chosen, state being transferred, clients reconnecting to the new host, and capturing this sequence is what lets you understand a migration bug. Record the migration trigger, the timing, which player became the new host, and the state-transfer steps, so you can see exactly how the handoff proceeded.
Many migration bugs are timing bugs, where an action was in flight when the migration occurred, or where the migration happened in an unexpected order. The captured event sequence reveals these timing issues, showing that, for example, a player action was lost because it was being processed by the old host at the moment authority transferred. This level of detail is impossible for players to report but essential for diagnosing the handoff.
Drop-in and drop-out bugs
Co-op games with drop-in and drop-out join face related bugs beyond migration: a player joining mid-session who does not receive the correct current state, a player leaving who leaves dangling references or whose owned entities are mishandled, a rejoin that creates a duplicate. These transitions, like migration, are moments where the session membership changes and state must be reconciled.
Capture the join and leave events with the session and player context so these transition bugs are diagnosable. A report that a joining player saw the wrong state becomes clear when you can see what state was sent to them at join time, and a report of duplicated characters after a rejoin points at the join logic failing to recognize a returning player. The membership-change events are the context that explains these drop-in and drop-out bugs.
Setting it up with Bugnet
Add an in-game report option and attach the session ID, each player role, the migration events, and the join and leave history as custom fields. Bugnet stores them so co-op bugs arrive with the session context needed to correlate reports across players and reconstruct what happened during a migration or membership change.
Enable automatic crash capture too, because host migration and player transitions are exactly the kind of complex state changes that can crash a client outright. Those crashes arrive with the same session context, so you can see whether a crash correlates with a migration event, and grouping reports by session lets you assemble the multi-player view that makes these otherwise-elusive handoff bugs reproducible and fixable.
Build a migration test harness
Because host migration is hard to trigger naturally, build a test setup that forces it on demand: a way to kill the host at a chosen moment and verify the new host inherits the correct state. Testing migration deliberately, including at awkward moments like during an action or a state change, catches the handoff bugs that would otherwise only appear rarely in the field.
Feed your captured migration bugs into this harness, recreating the conditions, the timing, the in-flight action, the session state, that produced each reported bug. Over time you build a suite of migration scenarios that exercises the fragile handoff under all the conditions your real players have encountered. For a co-op game where host migration is a core feature, that deliberate, repeatable testing of the handoff is what makes drop-in co-op feel seamless instead of fragile, which is exactly the experience players expect from playing together.
Host migration is the moment the whole game changes hands. Capture the session so you can watch the handoff.