Error Handling #
The internet was unfortunately not built to prioritize real-time multiplayer games. Players can have all sorts of issues due to their machine or internet connection, and even the most reliable data centers can go offline. There are also error cases outside of network connectivity issues. Let’s take a look at how we handle some of these scenarios.
Game server never responds #
When a match is found, the Game Instance service calls the Match Capacity service to find an available game server. If a game server isn’t found or never responds, the Game Instance service releases all players after a configurable timeout. This way, players are able to re-enter matchmaking.
The game instance does not appear to end #
Pragma Engine will have a configurable maximum game instance duration. This prevents the engine from assuming that players are still in a game instance and therefore blocking them from playing another game.
Players disconnect from the game while it is still ongoing #
The Session service tracks each player’s state and is aware that the disconnected player was playing a game. When the player attempts to reconnect and if the game instance is still ongoing, the engine sends game instance details and connection information so that the player can rejoin their game.
Game server and game client version mismatch #
You can specify matching game server and client versions via the
PartyService.gameServerCompatibilityPlugin. If players using an older game client version remain connected to the platform at the time you remove the matching game server from service, Pragma will remove and prevent them from re-entering matchmaking. We provide the
OrderedGameServerCompatibilityPlugin as a sample implementation for how this functionality can be implemented.