Skip to content

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.

SettingLegends of RuneterraPokémon TCGRiftbound
FormatsSingle elimination, Double elimination, Round robin, SwissSingle elimination, Double elimination, Round robin, SwissSingle elimination, Double elimination, Round robin, Swiss, Cumulative Points (Free-for-All), Threshold Win (Free-for-All)
Swiss: number of rounds55, with a recommendation by player count5
Swiss: points for a win / draw / loss3 / 0 / 03 / 1 / 03 / 1 / 0
Swiss: allow drawsNoYesYes
Swiss: bye handlingNo byesAward full points (3)Award full points (3)
Swiss: pairing styleRandom within score groupsRandom within score groupsRandom within score groups
Swiss: prevent repeat matchupsYesYesYes
Swiss: tiebreakersBuchholzOpponent match win percentage, then Opponent-opponent match win percentageOpponent match win percentage, then Game win percentage, then Opponent game win percentage
Swiss: match-win % formulaNot setWins over roundsMatch points
Swiss: opponent match-win floorNone25%33%
Swiss: game-win floorNoneNone33%
Round robin: points for a win / draw / loss3 / 0 / 03 / 1 / 03 / 1 / 0
Round robin: tiebreakersHead-to-head, then Score differenceHead-to-head, then Score differenceHead-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:

  1. Orders players by the current standings: points, then the stage's tiebreakers, then initial seed.
  2. Splits them into score groups: everyone on the same points.
  3. 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.

PlayersRounds for one undefeated playerPokémon TCG recommendation
423
5 to 833
9 to 1244
13 to 1645
17 to 3255
33 to 6466
65 to 12877
129 to 22688
227 to 25689
257 to 40999
410 to 512910
513 to 10241010

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.

TiebreakerValueAvailable inHow it is computed
Head-to-headhead_to_headRound robin, SwissAmong 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 differencescore_differenceRound robin, SwissGames won minus games lost, summed over every match played.
Game win percentagegame_win_percentageRound robin, SwissGames 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 scoredpoints_scoredRound robin, SwissTotal games won, summed over every match played.
BuchholzbuchholzSwissThe sum of the current points of every opponent played. Byes add nothing.
Median Buchholzmedian_buchholzSwissBuchholz without the single highest and single lowest opponent. With two or fewer opponents nothing is dropped, so it equals Buchholz.
Sonneborn-Bergersonneborn_bergerSwissThe current points of every opponent the player beat, plus half the points of every opponent they drew with. Losses add nothing.
Opponent match win percentageopponent_match_win_percentageSwissThe 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 percentageopponent_opponent_match_win_percentageSwissThe 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 percentageopponent_game_win_percentageSwissThe 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.

RoundPlayerScoreOpponent
1Ana2-0Ben
1Cam2-1Dee
1EliBye
2Ana2-1Cam
2Eli2-0Ben
2DeeBye
3Ana1-1Dee
3Cam2-0Eli
3BenBye

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.

RankPlayerRecordPointsHead-to-headScore differenceGame win %Points scored
1Ana2-0-170+371.43%5
2Cam2-1-063+262.5%5
3Eli2-1-060050%2
4Dee1-1-140-140%2
5Ben1-2-030-40%0
PlayerBuchholzMedian BuchholzSonneborn-BergerOMW%OOMW%OGW%
Ana1341150%71.43%34.17%
Cam1761066.67%57.14%53.81%
Eli99350%70%31.25%
Dee13133.575%58.33%66.96%
Ben1313075%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:

FormulaValueHow it is computedDefault for
Not setWins plus half of draws, divided by matches played. A bye that awards full points counts as a won match.Legends of Runeterra
Match pointsmatch_pointsMatch 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 roundswins_over_roundsWins 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:

PlayerNot setMatch pointsWins over rounds
Ana83.33%77.78%66.67%
Ben33.33%33.33%0%
Cam66.67%66.67%66.67%
Dee50%44.44%0%
Eli66.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:

PlayerPokémon TCGRiftbound
Ana38.89%48.15%
Cam47.22%62.96%
Eli45.83%50%
Dee66.67%72.22%
Ben58.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:

SettingRiftbound
Players per lobby4
Placement points1st: 3, 2nd: 2, 3rd: 1, 4th: 0
Tie scoringCompetition
Cumulative Points (Free-for-All): number of matches3
Threshold Win (Free-for-All): points to win6
Threshold Win (Free-for-All): required finish1st 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.

MatchAnaBenCamDeeResult
11st2nd3rd4thNo winner yet
22nd1st3rd4thNo winner yet
32nd3rd1st4thNo winner yet
42nd1st3rd4thBen 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.

Turny.gg documentation