Managing a Match
In order to make use of the platform, a game server must follow a specific lifecycle when hosting a match. This lifecycle is described below.
Hosting a Standard Matchβ
As a simple example, we will look at the process that is followed when an individual player wants to play a match on FACEIT. This process encompasses the main elements that are required for any game server to integrate with the FACEIT matchmaking ecosystem.
This flow describes a 2v2 scenario, but FACEIT supports many different types of matches with different configurations of players.
Matchmakingβ
Firstly, the player joins a FACEIT matchmaking queue for the game mode they wish to play. This places them alongside other players who are already waiting.
When enough players are queued for the chosen game mode, the FACEIT matchmaking service groups the available players together for a match. The players are able to vote on their preferences for the match, such as what location the server is in, and which maps should be played. These settings are compiled together to form a configuration for the match.
Server Assignmentβ
The FACEIT game server provisioning service is known as Facebot. Once all the parameters for the match are decided upon, the match configuration and its players are passed on to Facebot. Facebot selects a suitable server from the FACEIT Game Server Registry (the pool of currently available servers) based on the chosen match parameters.
Match Configurationβ
Facebot sends the relevant match configuration to the selected server. Upon accepting the configuration, the server prepares to host the match. Facebot now considers the server "busy", and will not send the server any new match configurations until it becomes available again.
Match Readyβ
Once the server is finished setting up, it notifies Facebot that it is ready. Facebot then tells the players to connect to the game server. This is usually achieved by passing a deep link to each playerβs game client, which contains the address and port of the target server.
Match Startedβ
The players involved in the match connect to the server during warmup time. Once all players are connected, the server notifies Facebot that the match has started. At this point, the match is considered in play.
Match Updatedβ
During the match, the server sends updates to Facebot about notable events that have occurred within the game. For example, when one player kills another and scores a point, the server informs Facebot so that the live score on the FACEIT platform can be updated.
Match Finishedβ
When the match comes to an end, the game server notifies Facebot that the match has finished. The final scores for all participants are recorded.
Finally, the game server performs any cleanup that it requires, and informs Facebot that it is no longer busy. After this point, Facebot may select the game server again in future to host other matches.
Abnormal Match Terminationβ
If all goes to plan, a FACEIT match should proceed as described above without issue. However, there are also two ways in which a FACEIT match may terminate early. In both of these cases, no score is recorded for any participant in the match. It is still the responsibility of the game server to subsequently inform Facebot when it is available to receive new match configurations.
Match Cancelβ
Firstly, an administrator for a FACEIT match may decide that the match needs to be cancelled. This decision is executed on the FACEIT platform itself, which informs Facebot. Facebot makes a request to the game server in question that the currently ongoing match be cancelled.
Match Abortedβ
Alternatively, a match that is ready may not be able to start because not all players have connected in time. In this case, the server notifies Facebot that the match has been aborted.
Other Dataβ
In addition to the steps described in the standard match lifecycle, the game server may choose to send extra information to Facebot once a match has finished. This data is optional, and its purpose will vary depending on the requirements of the game. It must be sent after a match has finished, and before the server informs Facebot that it is ready for new matches.
Match Statsβ
The server may send detailed statistics about the match that has just been played. These statistics are specific to the game in question, and how they are processed can be configured within the FACEIT Game Studio. Usually stats are sent in the Match Finished message, but can be sent separately in a Match Stats message if they must be computed asynchronously.
Round-Based Matchesβ
In games which consist of of rounds, one entire match may be played over multiple rounds. In this case, the match itself is not over until all required rounds have been played.
FACEIT supports two different ways of managing rounds:
- The game server can specify the current round number when sending messages to FACEIT. FACEIT will track the provided scores against their rounds, and will only consider the match complete once all rounds are complete. This is the recommended method of managing rounds, as it means the end-to-end experience will likely be better for players - they will not need to exit and re-enter the game server each round.
- If the game server does not natively support the concept of rounds, one match configuration can be generated by FACEIT per round. These match configurations may be sent to the same game server, or to different servers. Players within the game must leave and re-join the server for each round.
FACEIT recommends that if a game supports multiple rounds in a match, the first of the two approaches above is followed. This will give players a better overall experience of the game, and will help prevent complications that may arise due to some players failing to re-join the server for consecutive rounds.