The System:
For full transparency, I ranked the entire active player base and most inactive players on a 7-tier skill hierarchy, SABCDEF. I then collaborated with a few other high level players to give input and finalize what we thought would be a good dataset to run simulations on.
This process of ranking everyone was completely subjective and I understand that might be a little dubious. I was worried at first how this kind of thing would be received, as it is pretty flawed in principle. I ended up running hundreds of simulations on subsets of 12 in our community and it ended up seeming more accurate than our data-driven system in the past. Since testing this system on pickup, we’ve had consistently balanced fort lobbies that I think the most skeptical are willing to over look the lack of actual data to support this structure. Which is the most I was hoping for.
I used some criteria that does grant players mobility within tiers should they improve, and I am also very open to expanding this system if a good suggestion comes my way.
The Math:
Each player is given a numerical value based on their corresponding tier (S=7, A=6, … F=1). The algorithm finds the 4 highest rated players in the queue and splits them randomly into two teams.
The numerical values are tallied across both teams so far. The team with the greater score is given the lowest ranked available player, and the team with the lower score is granted the highest ranked available player. If the teams have an equal score, they are each granted the highest ranked available player. This step is repeated until both teams are full.
There are also some checks in place for if the difference between teams tier rating score passes a certain threshold, the queue is then rerolled and the algorithm starts over with fresh teams. This measure is in place so as to not create teams too lopsided to where the initial split of players cannot be balanced around.
The benefit of this system is that is there more variability on the top end of teams. S/A tier players now have a greater chance of being on the same team as each other, while having the rest of the queue to be distributed evenly and accordingly around that strength. A problem with the last fortauto system was that if two S tier players added, there was a 0% chance of them ever being on the same team.
The Logistics:
The entire architecture of this code is predicated on your discord account. I painstakingly went through every single player’s unique ID and attached a tier to it. This means, that if you use your primary discord account that you’ve always used, this algorithm will work. If you use a different account, the algorithm will not recognize you and it will put you in “E-tier”. This is intended for new or returning players who might not have used our discord before. If you’re a veteran player and use a burner discord account this will likely impact the balance this system gives and is smurfing.
The Commands:
!roll - any player can do this after pickup pops. It is only available once. There is a bug where if two people enter !roll simultaneously, it run’s the algorithm on a double-queue. In that case just…
!reroll - this will run the algorithm again on the queue. Intended use for when a roll looks imbalanced or if teams are similar to a previous game. As of now this command is available to small list of ‘trustees’. (Windrider, Ampz, Desolate, delinquent, vov, kronkleberry)
!clear - will clear the teams and queue. Only available to trustees.
THINGS TO CONSIDER BEFORE YOU COMPLAIN:
- This algorithm merely suggests teams. I worked to make it create teams as balanced as possible while still incorporating elements of randomness so as to not spit out the same teams every time.
- Balancing 2 teams of 6 in the size of our community with these limitations is insanely difficult. There are so few players that consistently add for pickup, there is massive skill gap from top to bottom, even from tier to tier, and more often than not, that skill variety is represented in a pickup lobby. Most every other game will separate a MASTER player from a BRONZE player, but is this game we are tasked with putting them in the same game and somehow making it work.
- The algorithm does not select positions for each team. This is a massive and direct influence of how a match can play out. Some players excel at certain positions and are weaker at others, it is your job as a team to figure out something that works for everyone and understand the impact this can have on the match. A certain line up of 6 players can be much stronger than those 6 players in a different order. The algorithm doesn’t directly account for that. (Although players who are well rounded at all positions are generally tiered higher.)
- Aside from positions, there are numerous other variables that dictate the outcome of a fort match beyond team balance. Someone can be lagging badly and not playing well. Someone might sub out for a player of different skill level. Someone could make a poor decision that leads to what could be a 20-point swing in the match. Someone can die/troll on the grind and throw the entire round for your team. Just to name a few.
Another point I’d like to make is that having balanced teams is great and makes the games more worth playing, but the real reason a lot of us requested an automated system is to bypass the amount of time it takes to pick teams. Teams are now made within seconds of the queue being filled, go to the server immediately!!!!!