Appearance
Tournaments
A Turny.gg tournament is one or more stages played in order. Each stage has a format (Swiss, single elimination, and so on) and its own settings, and advancement rules decide who moves from one stage to the next. This page describes exactly what the tournament engine does with those settings, so you can predict pairings and standings before your event starts.
Formats
What each game offers
The create form offers these formats and starts every new stage from these defaults. Everything except the match-win % formula and the two floors can be changed per stage, under the stage's Advanced settings.
| Setting | Legends of Runeterra | Pokémon TCG | Riftbound |
|---|---|---|---|
| Formats | Single elimination, Double elimination, Round robin, Swiss | Single elimination, Double elimination, Round robin, Swiss | Single elimination, Double elimination, Round robin, Swiss, Cumulative Points (Free-for-All), Threshold Win (Free-for-All) |
| Swiss: number of rounds | 5 | 5, with a recommendation by player count | 5 |
| Swiss: points for a win / draw / loss | 3 / 0 / 0 | 3 / 1 / 0 | 3 / 1 / 0 |
| Swiss: allow draws | No | Yes | Yes |
| Swiss: bye handling | No byes | Award full points (3) | Award full points (3) |
| Swiss: pairing style | Random within score groups | Random within score groups | Random within score groups |
| Swiss: prevent repeat matchups | Yes | Yes | Yes |
| Swiss: tiebreakers | Buchholz | Opponent match win percentage, then Opponent-opponent match win percentage | Opponent match win percentage, then Game win percentage, then Opponent game win percentage |
| Swiss: match-win % formula | Not set | Wins over rounds | Match points |
| Swiss: opponent match-win floor | None | 25% | 33% |
| Swiss: game-win floor | None | None | 33% |
| Round robin: points for a win / draw / loss | 3 / 0 / 0 | 3 / 1 / 0 | 3 / 1 / 0 |
| Round robin: tiebreakers | Head-to-head, then Score difference | Head-to-head, then Score difference | Head-to-head, then Score difference |
When to use each
- Swiss: the default choice for open events. Every player plays every round, paired against players on the same record, for a fixed number of rounds. Pair it with a top cut when you need a single winner. See Swiss.
- Single elimination: one loss and you are out. Fast and easy to follow, which makes it the usual top cut after Swiss.
- Double elimination: a player is out after their second loss, dropping to the losers bracket after the first. It takes about twice as many rounds as single elimination, in exchange for one bad match not ending anyone's day. Grand finals is either a Single set, or a Bracket reset: if the losers-bracket player wins the first set, a second set decides the title, since both players then have one loss.
- Round robin: everyone plays everyone, once or twice (Round robin cycles). The fairest format for small groups, but the number of rounds grows with the field. For a big field, split it with Grouping (a number of groups, or players per group) under the stage's Advanced settings, which every one-on-one format offers.
- Free-for-all (Riftbound only): three or more players per game, scored by finishing position. See Free-for-all scoring.
For single elimination, Allow byes is off by default. With it off, the stage only starts when the player count fills the bracket exactly (4, 8, 16 and so on); turn it on to give the top seeds byes into round two. Hold third-place match adds a match between the two semifinal losers.
The Seeding method of an elimination stage (and the First-round seeding of a Swiss stage) is one of Manual, Random, Rating or Prior stage results. A tournament's first stage defaults to Random; any later stage defaults to Prior stage results, so the best finishers of the previous stage get the best seeds.
Multi-stage events and top cut
Add a second stage and an advancement rule to turn a Swiss stage into "Swiss plus a top 8". Each rule reads:
- From stage: the stage whose results it uses.
- Condition: a Placement range (for example 1 to 8) or a Points range (for example 9 points or more).
- Action: Advance to a later stage, or Eliminate.
A classic top cut is one rule: from the Swiss stage, placements 1 to 8, Advance to a single-elimination stage seeded by Prior stage results. Swiss 1st then plays 8th, 2nd plays 7th, and so on. Advancement uses the earlier stage's final standings, so it happens once that stage is complete.
Cut tiebreaker decides what happens when players tied on points and on every tiebreaker straddle the cut line (for example 8th and 9th are exactly equal):
- Better initial seed advances (the default): the cut stays at exactly the size you set.
- Draw lots: a random draw picks who advances; the cut stays the same size.
- Advance the whole tie: everyone in the tie advances, so the next stage can get more players than planned. Give it room, for example single elimination with Allow byes on.
Two options only appear when they apply:
- Allow early cutoff (a single or double elimination stage, with a placement range starting at 1): the stage stops as soon as the players in the range are decided, instead of playing on to a single winner. Use it for a day-one bracket that only needs to find a top 8.
- Advance mode: Continue brackets (double elimination into double elimination): the next stage carries on the same bracket where the first one stopped, so every player keeps their winners or losers bracket position. Reset bracket (the default) starts a fresh bracket.
A tournament is either all one-on-one stages or all free-for-all stages; the two cannot be mixed in one event.
Swiss
Pairing
Round 1 orders players by the stage's First-round seeding, then pairs them by the Pairing style. From round 2 on, the engine:
- Orders players by the current standings: points, then the stage's tiebreakers, then initial seed.
- Splits them into score groups: everyone on the same points.
- Pairs each score group from the top. If a group has an odd number of players, its lowest-ranked player drops down and is paired in the next group.
Pairing style decides who meets whom inside a score group:
- Random within score groups (the default): random pairings within the group, as in most trading card game events.
- Fold (top half vs bottom half): the top half of the group plays the bottom half, 1st against the first player of the bottom half, and so on, as in chess.
- Adjacent standings order: 1st plays 2nd, 3rd plays 4th, and so on.
With Prevent repeat matchups on (the default), a pairing that would repeat an earlier match is replaced by the rematch-free pairing that keeps players closest to their own score group. If no rematch-free pairing exists at all, the next round cannot be generated and the organizer sees an error; turn Prevent repeat matchups off for that stage, or change its pairing style, both of which stay editable while the stage runs. In a very large, late round the search can give up, and then the engine uses the plain pairing even if it contains a rematch.
A Swiss stage ends after its Number of rounds.
Choosing a round count
The engine never picks the round count for you: the stage plays exactly the Number of rounds you set (default 5). For Pokémon TCG, the create form also suggests the Play! Pokémon handbook's count for your Maximum participants, with an Apply button.
As a rule of thumb, with no draws, n rounds leave at most one undefeated player out of 2^n. That count finds a clear winner without a top cut. With a top cut, you can often stop a round or two sooner, since the cut decides the winner.
| Players | Rounds for one undefeated player | Pokémon TCG recommendation |
|---|---|---|
| 4 | 2 | 3 |
| 5 to 8 | 3 | 3 |
| 9 to 12 | 4 | 4 |
| 13 to 16 | 4 | 5 |
| 17 to 32 | 5 | 5 |
| 33 to 64 | 6 | 6 |
| 65 to 128 | 7 | 7 |
| 129 to 226 | 8 | 8 |
| 227 to 256 | 8 | 9 |
| 257 to 409 | 9 | 9 |
| 410 to 512 | 9 | 10 |
| 513 to 1024 | 10 | 10 |
Byes
With an odd number of players, one player sits out each round. It is the lowest-ranked player who has not had a bye yet; a player only gets a second bye once everyone has had one. Byes are not opponents: they never count toward Buchholz, opponent win percentages or any other opponent-based tiebreaker.
Bye handling decides what sitting out is worth:
- Award full points: the bye counts as a match win worth Points per bye.
- Award zero points or No byes: the player still sits out, but gets nothing: no points, and the round is not added to their record.
Late registrants
With Late entry on (Swiss only), players can still join an event that has started, up to and including the round set in Allow late entry through round. Every round already completed when they join counts as a loss for them: they get the points for a loss (0 by default) and the loss appears in their record, but with no opponent, so it adds nothing to anyone's tiebreakers. It is not a bye, so they can still receive a bye later. They are paired from the next round on, like anyone else on their points.
Tiebreakers
Standings rank players by points first. Players on the same points are compared by each applied tiebreaker in order (the Applied in order list in the stage's tiebreaker settings), and if they are still equal, the better initial seed ranks higher. Players equal on points and on every tiebreaker share a placement. Percentages are rounded to four decimal places (0.01%) before they are compared.
| Tiebreaker | Value | Available in | How it is computed |
|---|---|---|---|
| Head-to-head | head_to_head | Round robin, Swiss | Among players tied on points, the points each one earned in matches against the others in that tie. A player with no one else on their points total scores 0. |
| Score difference | score_difference | Round robin, Swiss | Games won minus games lost, summed over every match played. |
| Game win percentage | game_win_percentage | Round robin, Swiss | Games won divided by games played. In Swiss, a game-win floor set by the game raises any lower value to the floor. A player with no games played scores 0 (or the floor). |
| Points scored | points_scored | Round robin, Swiss | Total games won, summed over every match played. |
| Buchholz | buchholz | Swiss | The sum of the current points of every opponent played. Byes add nothing. |
| Median Buchholz | median_buchholz | Swiss | Buchholz without the single highest and single lowest opponent. With two or fewer opponents nothing is dropped, so it equals Buchholz. |
| Sonneborn-Berger | sonneborn_berger | Swiss | The current points of every opponent the player beat, plus half the points of every opponent they drew with. Losses add nothing. |
| Opponent match win percentage | opponent_match_win_percentage | Swiss | The average of each opponent's match-win percentage (OMW%). Each opponent's value comes from the stage's win-percentage formula and is raised to the game's floor first, if it has one. Byes are not opponents. |
| Opponent-opponent match win percentage | opponent_opponent_match_win_percentage | Swiss | The average OMW% of the player's opponents (OOMW%), weighted by how many opponents each of them has played. That is the average match-win percentage of the opponents' opponents. |
| Opponent game win percentage | opponent_game_win_percentage | Swiss | The average of each opponent's game-win percentage (OGW%), each raised to the game-win floor first, if the game has one. Byes are not opponents. |
Worked example
Five players play a three-round Swiss with 3 points for a win, 1 for a draw and 0 for a loss, byes worth full points, and best-of-three matches. Scores are games won.
| Round | Player | Score | Opponent |
|---|---|---|---|
| 1 | Ana | 2-0 | Ben |
| 1 | Cam | 2-1 | Dee |
| 1 | Eli | Bye | |
| 2 | Ana | 2-1 | Cam |
| 2 | Eli | 2-0 | Ben |
| 2 | Dee | Bye | |
| 3 | Ana | 1-1 | Dee |
| 3 | Cam | 2-0 | Eli |
| 3 | Ben | Bye |
The final standings, with every tiebreaker computed and Head-to-head applied first. Records are wins, losses and draws, and a bye counts as a win.
| Rank | Player | Record | Points | Head-to-head | Score difference | Game win % | Points scored |
|---|---|---|---|---|---|---|---|
| 1 | Ana | 2-0-1 | 7 | 0 | +3 | 71.43% | 5 |
| 2 | Cam | 2-1-0 | 6 | 3 | +2 | 62.5% | 5 |
| 3 | Eli | 2-1-0 | 6 | 0 | 0 | 50% | 2 |
| 4 | Dee | 1-1-1 | 4 | 0 | -1 | 40% | 2 |
| 5 | Ben | 1-2-0 | 3 | 0 | -4 | 0% | 0 |
| Player | Buchholz | Median Buchholz | Sonneborn-Berger | OMW% | OOMW% | OGW% |
|---|---|---|---|---|---|---|
| Ana | 13 | 4 | 11 | 50% | 71.43% | 34.17% |
| Cam | 17 | 6 | 10 | 66.67% | 57.14% | 53.81% |
| Eli | 9 | 9 | 3 | 50% | 70% | 31.25% |
| Dee | 13 | 13 | 3.5 | 75% | 58.33% | 66.96% |
| Ben | 13 | 13 | 0 | 75% | 50% | 60.71% |
The opponent percentages above use no win-percentage formula and no floors (the Legends of Runeterra defaults). Working a few of them through:
- Head-to-head: Cam and Eli are tied on 6 points and met in round 3, which Cam won. Cam scores the 3 points from that match and Eli scores 0, so Cam ranks above Eli. Ana is alone on 7 points and scores 0.
- Score difference: Ana won 2-0, 2-1 and drew 1-1: 5 games won, 2 lost, so +3.
- Game win %: Ana won 5 of her 7 games: 71.43%. Eli won 2 of 4 (the bye adds no games): 50%.
- Points scored: Ana won 2 + 2 + 1 = 5 games, and so did Cam (2 + 1 + 2).
- Buchholz: Cam played Dee (4 points), Ana (7) and Eli (6): 4 + 7 + 6 = 17. Eli played only Ben (3) and Cam (6), since the bye is not an opponent: 9.
- Median Buchholz: Cam drops his best opponent (Ana, 7) and his worst (Dee, 4), leaving Eli's 6. Eli has only two opponents, so nothing is dropped and he keeps 9. In a small event with byes this can favor the players who had one.
- Sonneborn-Berger: Ana beat Ben (3) and Cam (6) and drew with Dee (half of 4 is 2): 3 + 6 + 2 = 11. Dee's only result that counts is his draw with Ana: half of 7 is 3.5.
- OMW%: with no formula set, a match-win % is wins plus half of draws over matches, with a full-points bye counting as a won match. Ben (1-2-0) has 33.33%, Cam (2-1-0) 66.67% and Dee (1-1-1) 50%, so Ana's OMW% is (33.33% + 66.67% + 50%) / 3 = 50%.
- OOMW%: Ana's opponents have OMW% of 75% (Ben, 2 opponents), 66.67% (Cam, 3 opponents) and 75% (Dee, 2 opponents). Weighted by opponents played: (75% × 2 + 66.67% × 3 + 75% × 2) / 7 = 71.43%.
- OGW%: Ana's opponents won 0% (Ben), 62.5% (Cam) and 40% (Dee) of their games: (0% + 62.5% + 40%) / 3 = 34.17%.
Match-win formulas and floors
OMW% and OOMW% average the opponents' match-win percentages, and how a match-win % is worked out from a record is set per game:
| Formula | Value | How it is computed | Default for |
|---|---|---|---|
| Not set | Wins plus half of draws, divided by matches played. A bye that awards full points counts as a won match. | Legends of Runeterra | |
| Match points | match_points | Match points divided by the points for a win times the matches played (Magic Tournament Rules, Appendix C). With 3 points for a win and 1 for a draw, a draw is worth a third of a win. A bye that awards full points counts as a won match. | Riftbound |
| Wins over rounds | wins_over_rounds | Wins divided by rounds played (Play! Pokémon Tournament Rules Handbook, section 5.3.3.1). A draw counts as zero wins, and a bye counts as neither a win nor a round played. | Pokémon TCG |
Each player's own match-win % in the worked example, under each formula:
| Player | Not set | Match points | Wins over rounds |
|---|---|---|---|
| Ana | 83.33% | 77.78% | 66.67% |
| Ben | 33.33% | 33.33% | 0% |
| Cam | 66.67% | 66.67% | 66.67% |
| Dee | 50% | 44.44% | 0% |
| Eli | 66.67% | 66.67% | 50% |
The formulas disagree most about byes and draws. Under wins over rounds, Ben's only win was his bye, so he has won 0 of his 2 rounds played; Dee drew and lost his two rounds, also 0%.
A floor raises any opponent's match-win % below it to the floor before averaging, so a player is not punished too hard for opponents who lost every match or dropped early. The game-win floor does the same for Game win % and OGW%. Pokémon TCG uses a 25% opponent floor, and Riftbound uses 33% for both. With each game's defaults, the OMW% in the worked example becomes:
| Player | Pokémon TCG | Riftbound |
|---|---|---|
| Ana | 38.89% | 48.15% |
| Cam | 47.22% | 62.96% |
| Eli | 45.83% | 50% |
| Dee | 66.67% | 72.22% |
| Ben | 58.33% | 72.22% |
For Ana under the Pokémon TCG defaults, Ben and Dee both have 0% and are raised to 25%, so her OMW% is (25% + 66.67% + 25%) / 3 = 38.89%. Without the floor it would be 22.22%.
Free-for-all scoring
Riftbound offers two free-for-all formats. Players are split into lobbies (pods), and every match awards Placement points by finishing position in the lobby.
- Cumulative Points: every lobby plays a fixed Number of matches, and final standings are total points. Players on the same total share a placement.
- Threshold Win: matches continue until a player reaches Points to win and finishes at the Required finish or better in the match where they get there. If several players qualify in the same match, the one with the most points wins. Set Maximum matches to cap the stage; if no one has won by then, If no one wins decides it (Highest points wins).
These are the Riftbound defaults for a new free-for-all stage:
| Setting | Riftbound |
|---|---|
| Players per lobby | 4 |
| Placement points | 1st: 3, 2nd: 2, 3rd: 1, 4th: 0 |
| Tie scoring | Competition |
| Cumulative Points (Free-for-All): number of matches | 3 |
| Threshold Win (Free-for-All): points to win | 6 |
| Threshold Win (Free-for-All): required finish | 1st or better |
With those defaults, a win is worth 3 points and the threshold is 6, so a player needs at least two wins to take the stage. In this four-player pod, Ana reaches 7 points in match 3 but finishes 2nd, so she has not won yet. Ben wins match 4 with 9 points; Ana also has 9, but finished 2nd, so Ben takes the stage.
| Match | Ana | Ben | Cam | Dee | Result |
|---|---|---|---|---|---|
| 1 | 1st | 2nd | 3rd | 4th | No winner yet |
| 2 | 2nd | 1st | 3rd | 4th | No winner yet |
| 3 | 2nd | 3rd | 1st | 4th | No winner yet |
| 4 | 2nd | 1st | 3rd | 4th | Ben wins |
Tie scoring decides what tied players in a lobby earn. Competition (the default) gives each of them the points for the tied place: two players tied for 2nd both get 2nd-place points. Split shares the points of the places the tie covers: two players tied for 2nd each get the average of the 2nd- and 3rd-place points. Elimination points, if set, add points for each opponent a player eliminates.
Lobbies are formed by Lobby seeding (initial seed, current standings or random) and Lobby distribution (snake by default), and Reshuffle lobbies decides whether they are redrawn between matches.