Ali Şahan Yalçın
DocsWhy a join failed

Sessions

Why a join failed

Turning a failed join into something you can actually tell the player.

"Could not join" is the least useful thing a game can say. A join has six or seven distinct failure points and Steam reports them through three different mechanisms, so without something structured every one of them reaches the player as the same shrug.

Join Session returns a Steam Join Diagnosis:

FieldMeaning
SuccessWhether it worked
FailureA structured reason you can branch on
Player MessagePlain language, ready to put on screen
Technical DetailFor your log or a bug report
Worth RetryingWhether trying again might work
LobbyThe session, when the join got that far

The failure reasons

ReasonWhat it meansRetry?
Steam UnavailableSteam is not connectedYes
Session No Longer ExistsThe host ended itNo
Session FullNo roomYes
Not Accepting PlayersThe match already startedNo
Banned From SessionThe host banned this accountNo
BlockedOne player has the other blocked on SteamNo
Account LimitedSteam requires a purchase to use matchmakingNo
Wrong PasswordJoined, then rejected on the password checkYes
Version MismatchThe host is on a different buildNo
No Server AddressThe host has not started the match yetYes
Travel FailedEverything worked until the connection itselfYes

Using it

The simplest useful handling is two nodes:

  • Show Player Message in your UI.
  • If Worth Retrying is true, show a Retry button.
  • That alone puts you ahead of most shipped games.

    For more, branch on Failure:

  • Wrong Password should clear the field and focus it, not send them back to the browser.
  • Version Mismatch should point at whatever updates your game.
  • Session Full should refresh the list.
  • The post join checks

    Some of these can only be decided after the Steam level join succeeds, because none of the session metadata is readable until you are inside the lobby. Password and version are both in that group.

    When one of those rejects you, SteamForge leaves the lobby again on your behalf. Without that the player would show as a member of a session they were refused from.