Skip to main content

Lost connection: rejoin, reconnect, split brain

A dropped connection does not always mean the host is gone. These rules keep one player's network trouble from splitting the match. They need an adapter with presence and announcements (Steam does both).

Is the host gone, or only us?​

When the connection drops, the client asks the adapter whether the host is still in the session (Steam: lobby membership).

  • The host is still there: the client rejoins the host (state RejoiningHost) for up to Rejoin Timeout and gets its state back as a returning player. No migration, so a player with a hiccup never splits off into a match of their own.
  • The host leaves the session meanwhile: the client migrates after all.
  • The host stays but cannot be reached: the client gives up (Migrate When Host Unreachable off, the default) or migrates anyway (on).

Connecting to the new host​

Connections are retried Max Reconnect Attempts times, Reconnect Retry Delay apart. If that host stays unreachable, the client moves on to the next candidate. A candidate that does not announce itself within Candidate Timeout is skipped.

First announcement wins​

Waiting clients join any host that announces the new epoch, not only the candidate they were waiting for. A candidate whose turn comes while another host is already up joins that host instead of starting its own.

Two hosts at once​

This can happen when a slow successor comes up after the others gave up on it. Hosts watch each other's announcements. A host that sees a better one on two checks in a row yields and moves its players there.

Better means, in order: more players, higher epoch, earlier in the election order.

The winner restores the moved players as returning players. Progress made on the losing host is lost.

LAN / Null​

The Null adapter has no presence and no announcements, so none of this applies: clients wait a fixed time for the successor, and two hosts can still happen.