Changes in the World of Brackets

An explanation of the basics of bracketing and the recent changes on smashgg

Jas Laferriere
start.gg

--

A very simple double-elimination bracket.

tl;dr

  • Maintaining seed order across phases connected by progressions has been improved
  • Losers bracket generation has been changed, improving bracket consistency and reducing the chance for rematches.
  • New options for avoiding same-pool matchups has been added.
  • Added information in bracket configuration in an attempt to steer tournament organizers clear of configuring an event with a high likelihood for rematches.

At smashgg, brackets are a core part of our product. As such, we are constantly interested in finding ways to improve them. smashgg is quite unique in its ability to configure an event into a variety of phases with progressions that feed into one another. A single double-elimination bracket is simple, but a multi-phase event that includes pools, a death-pool, floated entrants, skipped phases, etc, that’s where things get tricky.

For example, the important questions that come up in the complex case are:

  1. How is seeding preserved across phases?
  2. How to prevent the same players from playing each other multiple times (double-jeopardy)?

Recently some major improvements have been made to the way we handle the issues that come up when running a complex event. The goal of this post is to highlight how our bracketing will work going forward.

General Bracketing

Before we dive into all the new stuff, it might be helpful to take a step back and explain the basics of bracketing on smashgg.

Phases, pools, and progressions are the building blocks of an event

The above image explains how an event is broken down into phases, which contain pools, and how those phases are connected by progressions. Note that a phase will always contain at least one pool, and the pool is the home of the bracket. Every pool will have a single bracket associated with it.

Single Phase Double-Elimination

Starting with the most basic event possible, we will detail how a double elimination bracket goes about avoiding rematches.

Event made up of one phase and one pool and the resulting bracket for 8 players

The above event is about as simple as they get. These events are great for small local tournaments – they are simple to run and to understand. Players get matched up based on seeding in winners and if a player loses twice, they’re out of the tournament.

The most interesting thing to note about double-elimination brackets is how they go about avoiding rematches. If players were dropped down into losers haphazardly, rematches would happen all the time. Instead, the bracket alternates through four different drop down orders in order avoid this.

Drop cycle used to avoid rematches. Each winners round will use the subsequent drop order

So for a single bracket, rematches are avoided using a cycle of drop down orders. This has always been the case on smashgg. We’ll start to see some actual changes when we start considering more complicated events.

Multi-Phase Events

Now that we’ve seen the simplest possible case for an event, let’s go a little deeper and build out the event shown in the example diagram at the top of this section — 4 Pools into a top 32 into a top 8.

Preserving Seeding Across Phases

Seeds placed in different pools in a phase are snaked throughout those pools. The following graphic explains the concept using the “Pools” phase.

Seeds snaking across the four pools in the “Pools” phase

In the above example, the top seed in the phase (Seed1) starts in the top left and the seeds progress to the right along the orange arrow. When the last pool is reached, the seeds then continue to the left along the blue arrow.

Snaking seeds across pools creates the most balanced pools, but how does it interact with progressions?

Previously, pool snaking, progressions, and seeding for the next phase did not play together all too well. Let’s look at the before and after.

Old progressions — Projected top 32 seeding from “Pools” phase. Showcases seed mismatches

The above image shows the old method of moving seeds from one phase to the next. As can be seen, the snaking order is lost in translation. The phases are iterated through sequentially and the previous seed ordering is not maintained.

Please note that in our old system this did not necessarily translate to bad brackets. There was logic during bracket generation that made it so that previous matchups would be maintained and although the seeds were wrong, the matchups may have been correct. That said, it was definitely an issue and needed fixing.

New progressions — Projected top 32 seeding from “Pools” phase

The above image shows the new method of moving seeds from one phase to the next. The result this time is the exact same seed ordering as in the previous phase.

From now on, when setting up an event, the projected seeding for future phases progressed into should always follow the same order as the seeding of the previous phase.

Losers Bracket Generation

Another change made in the recent bracket release is how losers brackets are generated. Previously when players started in losers bracket, the losers and winners brackets would be generated individually and the losers drop order described in an earlier section would be carried over from the previous bracket. This method was not only complicated, but was also prone to creating double jeopardy.

Losers bracket generation has been greatly simplified by initially starting everyone in winners according to their seed. In other words, a standardly seeded winners bracket is generated with a normal losers bracket initially containing no players. From there the sets are visited in order and players that are supposed to start in losers are dropped down to losers in the same manner as a set loss. The result of this is a bracket that is always “normalized” in terms of seeding. And for a standard power of 2 pools feeding into a single bracket, this will always generate what is known as a continued bracket.

Assuming no upsets, the above bracket avoids rematches. Even though the pools continue playing each other, the matches should not cause rematches because the winners will be dropping into losers in such a way that they are matched up against players from other pools.

Unfortunately, this was not good enough for a few reasons:

  1. In the case of round-robin to double-elimination, people playing each other again in winners bracket feels a bit silly. Example
  2. In the case where there are floated entrants, generating a normalized bracket can in fact create early rematches. Example
  3. In the case of upsets, continued brackets can cause very early double-jeopardy. Example

Clearly something else was required.

Same-Pool Avoidance

Really the only solution to the problems described at the end of the previous section is to de-normalize the bracket. In other words, either the seeding needs to change to avoid potential conflicts or the locations where the seeds go needs to change to accomplish the same. There are some benefits in keeping the seeding intact so we opted to go with the latter. The players maintain the same seeds but are placed in non-normal locations. The question remained though — how do the players get moved?

It wasn’t until a tweet to @killahertz_ that this part of the system was really unblocked. Jesse, ex-tournament organizer and the head behind the Nebulous tournament series, spoke of splitting brackets into clusters and swapping players. The discussion helped kick off the following algorithm.

Losers bracket split into clusters. A cluster also contains all of the sets in its sub-clusters. One cluster cannot have more than two direct sub-clusters.

The high-level steps of the algorithm are as follows:

  1. Break up the bracket into clusters as shown in image above.
  2. Go through the clusters in order from right to left, assign scores to each pool based on how many players from those pools are in the sub-clusters.
  3. Check for score imbalances within the two sub-clusters and swap players between sub-clusters if the imbalance can be resolved by swapping.

The result of the above algorithm is that players coming from the same pool will be moved as far away from each other as possible. This certainly has benefits in some scenarios but it really should be used sparingly. For example, jumbling up winners bracket when doing double-elimination to double-elimination progressions is not a good idea. By definition of double-elimination, players in winners have not played each other before and by enabling winners pool avoidance the likelihood of double-jeopardy is increased.

It’s important to note that the changes detailed in this post do not completely eliminate the possibility of double-jeopardy, they simply make it more rare. Configuring a bad bracket can lead to cases where double-jeopardy is unavoidable. The simplest case of this is creating double-elimination pools with 2 players making it out. The losers final of each pool will very often be a rematch of a match in winners. There are other cases where bad configuration will increase the chances of double-jeopardy and we will do our best to recommend options to tournament organizers to help them steer clear of these scenarios.

Bracket Examples

Below we provide a few example events that can be used to see the new bracket generation in action. Enable projected mode to view the projected seed matchups.

--

--