FinalBot runs automated tournaments regularly, and the results are used to calculate tournament places and competition and series ranks. This article is designed to tell you everything you could ever want to know about how things work, but if you have any questions, please raise them in the forum.
First of all, let’s clarify some of the terminology we try to use consistently since it could get confusing otherwise:
A competition is a game or other engine that you build a bot for. Hold ‘Em is an example of one of our competitions.
A series is a scheduled set of tournaments within a competition that defines specific properties (tournament recurrence, bots per team, teams per matchup, engine settings, etc). Hold ‘Em has several regular series, including the Daily Ranking (Standard) series.
A tournament is a set of matchups where teams of bots are played off against each other, resulting in a final set of places for the competitors. Note that in some competitions, such as Hold ‘Em, each team is limited to a single bot.
A matchup is a specific game within a tournament that includes some or all of the teams. Each matchup results in a forced-rank list of teams which are used to determine their matchup in the next round of the tournament, if applicable.
There are also sometimes contests, which are times when we’ll award prizes for tournament placement, series or competition ranking, or just because you got lucky. Check out the contest instructions page for more details on how these work.
When a new bot is added to a competition, it starts out with 1000 competition points. In every matchup, it contributes a percentage of its points to the matchup pool. The percentage is defined at the series level, and is typically around 1%. At the end of the matchup, points from this pool are awarded to the highest ranking teams. If there are 5 or fewer teams, all the points go to the top finisher. Beyond 5 teams, the top third of teams (rounded down) receive points. First, all bots on “points” teams receive their original points wagered back. Of the remaining points, 70% are split as evenly as possible among the bots on the top team. The remaining 30% are then split 70/30 between the second team and everyone else (if applicable). The process is repeated until the final team receives the remaining points or the points are exhausted. Note that there are scenarios where bots may not gain points despite finishing “in the points”, but no bot will ever lose net points when finishing there.
A Quick Example
Let’s say you have 10 teams with 1 bot each beginning with 1000 points each. To start, they all submit 1% of their points for a total pool of 100 points. After the matchup, each of the top 3 teams (10/3, less remainder) receive their original points back. Of the remaining 70 points, the 1st-place team gets an extra 49 points. The 2nd place team gets 70% of the remaining 21 for a grand total of 14 more. The 3rd place team (the final points team) gets the remaining 7. As a result, the final points are:
1st: 59 points (+49)
2nd: 24 (+14)
3rd: 17 (+7)
Everyone else: -10
We also keep track of each bot’s rank in a given series, although that’s generally limited to recent performance since we don’t use a points system on a per-series basis. Right now it’s just their average finish over the last 10 tournaments.
Among other things, each series defines how its tournaments are seeded. Generally, tournaments are seeded using each bot’s current competition rank. However, seeding may instead be based on current series rank, random selection, or by explicit seeding configured by a FinalBot administrator. Once all bots are seeded, they’re formed into teams. When the teams are formed using more than one bot, they’re matched up with teammates using a snaking draft. In a snaking draft, the bots are distributed across teams by seed to promote even competition. For example, if there are 4 teams of 2 bots, the #1 seed will be teamed with the #8 seed, #2 with #7, and so on. To fill out teams with open spaces, a house bot will be provided. It won’t be awful, but it probably won’t be that good either. Set your expectations accordingly.
There are two types of tournaments currently run on FinalBot: single elimination and ranking. Each tournament type involves matchups that are designed using the snaking draft technique to build out brackets, although in this case the brackets are designed to favor the teams with the higher seeds. For example, in a 16-team tournament where there are 2 teams per matchup, seed #1 will play #16 first, #2 will play #15, and so on. The brackets are also balanced so that the highest seed matchups occur later in the tournament, such as seeds #1 and #2 meeting up in the final round at the earliest.
Single Elimination Tournaments
In a single elimination tournament, every matchup produces a winning team that moves on to the next round. All other teams are eliminated and do not play additional matchups. Ultimately, there will be a single undefeated team, which will place 1st in the tournament. After this team, the other teams are placed based on their finish position in the final matchup. After that, teams who finished 2nd in the previous round are placed equally. The process is repeated for each finish position, and then repeated for each round.
A Quick Example
Let’s say we have a 16-team tournament with 4 bots per matchup. This tournament would have 2 rounds and 5 total matchups (4 in the first round, 1 in the second). The teams that win their respective 1st round matchups would move to the second round, and their finish place in that matchup would be their finish place in the tournament (1st would be 1st, 2nd would be 2nd, and so on). Next, all teams who finished 2nd in their first round matchups would equally receive 5th place in the tournament. 3rd place finishers in the first round would each receive 9th place tournament finishes, and the remaining 4th place first-round finishers would finish the tournament tied for 13th place.
Ranking tournaments are structured in a similar way to single elimination tournaments, except that they are limited to tournaments featuring 2 teams per matchup. In these tournaments, the losing team of a matchup will often go on to play another team who has a similar performance record in the tournament. At a certain point all teams will have shaken out to a specific rank within the tournament based on their record (and the tournament records of their opponents).
Since ranking tournaments can result in a significant number of matchups, they are generally capped to include a maximum number of teams. In the event that there are more eligible teams than ranking tournament slots, teams are put through a single elimination tournament pool to determine who gets to compete in the ranking tournament. For example, if there are 18 teams and the ranking tournament has a maximum of 16 allowed, teams seeded #15 and #18 will play off for one spot while #16 and #17 will play off for another. The remaining teams get a bye into the ranking tournament. In the event there are 32 teams for a 16-team ranking tournament, there are no byes and each team must win their 1-game single-elimination tournament to make it to the ranking tournament component. If there were 64 teams for the 16-team ranking tournament, then each 4-team pool would have a 2-round single elimination tournament to shake out the 16 ranking tournament competitors.