Skip to content

Structure

This page explains the structure of a tournament in more details. For the basis, read the Glossary.

Round-robin

In round-robin stages, each group is a pool, which contains rounds, which contain matches.

Single elimination

In single elimination stages, there is at least one group (the "unique bracket"), which contains rounds, which contain matches.

The unique bracket yields a winner, and losers.

If the stage is configured to have a consolation final, it is also a group with a single round containing a single match, matching both semi-final losers.

Double elimination

In double elimination stages, there are two groups: the upper bracket (a.k.a. "winner bracket") and the lower bracket (a.k.a. "loser bracket").

The upper bracket yields a winner, and losers.

The lower bracket yields a winner, which may play in the grand final against the winner of the upper bracket.

If the stage is configured to have a grand final, it is also a group with one or two rounds (depending on settings.grandFinal), each containing a single match, matching the winner of the upper bracket and the winner of the lower bracket.

If the WB winner wins, he's the winner of the stage. But if he loses, the final is reset and there is a very last match. It might be fairer since it gives the WB winner the right to lose once during the stage...

If the stage is configured to have a consolation final, any existing final group is reused (i.e. the grand final and consolation final will both be in the final group). In this group, a round is created containing a single match, matching both upper bracket semi-final losers.

Technical detail about the consolation final

To differentiate the grand final and consolation final matches which always are number: 1, the consolation final match is number: 2 although it's the only match in its round.

Opponent position property in matches

The position property in opponent1 and opponent2 in a match is used to display the opponent's origin in the UI.

It holds the match number of the match whose winner will fill the current participant slot in the match.

For example, the match LB 1.1 (loser bracket, round 1, match 1) has the following values:

{
    "opponent1": {
        "id": null, // TBD
        "position": 1
    },
    "opponent2": {
        "id": null, // TBD
        "position": 2
    }
}

Although we don't know the opponent IDs yet, we know their source in advance. So in the UI, we show:

LB 1.1 Opponents
opponent1 Loser of WB 1.1
opponent2 Loser of WB 1.2