Git Gud — Chapter 4

matteia
12 min readJun 25, 2024

--

Streaks ? — Beyond the Controversy

We are all familiar with the ages-old debate on whether or not streaks exist. What is a ‘streak’ ? Should the term only mean a series of games that result in multiple wins ? Or losses ? Obviously, both. However, in order to proceed further, we must decide on what it actually is.

For the purpose of this chapter, we may define a streak as follows: a series of games for a player with one of the possible outcomes being the predominant elements of said series due to factors that do not stem from the player or player performance and behaviour. In other words, it is a list of consecutive games where the results repeat themselves and feel somewhat predetermined to some meaningful degree.

For example, if the results of 10 games were all wins (or W W W W W W W W W W), it would be a ‘win streak’. By our very definition, 10 games of 9 wins and 1 defeat (or W W L W W W W W W W) would also likely be dubbed as such. The opposite should also stand to declare 10 games of 2 wins and 8 defeats (or W L W L L L L L L L) as a ‘losing’ streak.

Unfortunately as of now, there is almost no way for the public to know if such streaks exist unless there is a leak to be exploited somewhere in the game’s overall pipeline and infrastructure or a service-wide code audit. Players may point out a few indicators and make a few claims here and there while other players and affiliated parties may also come up with valid counter points to defend and nullify such accusations. All things status quo, we may never know for sure. Plus, even if things do look almost certain, there is always the NCND or what is known as the ‘Glomar Response’ (“… I can neither confirm nor deny that such streaks do exist …”) that anyone working with the matchmaking system could resort to.

However, instead of endlessly dragging on about a topic that we may never know the truth of, we can do something more interesting. What if they do ? Then we may ask the following questions: Why would they exist ? What benefit(s) do they yield ?

Step 1.

Perfect Matchmaking (win rate = 50%)

For the first case, we assume that the matchmaking algorithm is impossibly perfect, with no flaws and guarantees a 50% win rate for Paul. Then, we suppose that the same applies to other players, who may want to climb up the ladder by the same amount, requiring the same amount of net games won (40 games), regardless of their MMRs at each specific point in time.

Below is a table of results generated in Python to simulate this for Paul to see how many games it would take for him to reach the goal.

Then another script was written for one hundred players to do the same again.

The table for 100 players shows that the average number of games actually played across all users is well above 18,000, our threshold for what can be deemed physically possible in a year. Granted, some users may only have to play a few hundred games, but outliers occur where some players have to play exponentially more. In other words, this is an unhealthy matchmaking model and it needs some adjustments.

Also, those with keen eyes may notice something interesting. For the second part of the experiment for 100 players, there was a major problem. Originally, the intention was to run simulations for 1,000 players however this was not easily feasible as the computation would sometimes never end. This was due to the fact that for some players, the value of net games won would plummet below zero and require even more games to be played to make up for the losses. This resulted in millions of games played by some players which is not possible. In order to handle this issue, for this part of our experiment, the size of the player pool was downsized to 100 from 1000 to shorten the compute time. In addition, random seeds were selected and fixed for the purpose of yielding consistent results.

Step 2.

Near Perfect Matchmaking (win rate = 50.1%)

One quick fix to the problem of some players having to play tens of millions of games is to implement a near-perfect matchmaking model where the targeted win rate of the matchmaking algorithm is 50.1%. This way, because of the slightly positive win rate, players’ net games won will stack more frequently, albeit still at a slow rate. Below are the tables for Paul and 1,000 players, respectively.

*The number of players involved was reverted back to 1,000 from 100 because the computation would theoretically end due to the new win rate being above 50%.

This looks a lot more physically possible, time-wise, as it seems on average that not many are playing more than a million games per season or split. However, because these values are averages, some very specifically unfortunate players may still be doing so but their numbers are being evened out by other players who only play a few hundred games or less.

However, some more adjustments should be made to lower the average number of games played per player so that it is within our possible number of games played per season or split (18,000 or 9,000/6,000 respectively). We could calculate the average number of games played by 1,000 players per different targeted win rate. The range of win rates could potentially start from 50.1% or 0.501 to all the way up to 60% or 0.6. The plot below illustrates the results.

The range of the win rates was obtained by starting from 50.1% and incrementing it by 0.1%p until 59.9% or 0.599. The graph is a reciprocal function obviously due to the fact that the underlying implied equation was net games won(N) divided by a denominator that is equal to double the win rate minus one (2wr -1) or N / (2wr — 1). With no random seed applied, while the win rate being at 59.9% or 0.599, the number of average games played was 200.87 games in this run. Interestingly, we can clearly see that the amount of games required to play starts to fall within a physically feasible range for players when the win rate is above 50.2%. We will take notice of two points at the 51% and 53% marks and the games played at these win rates, around 2000 games and 660 games, respectively as benchmarks for potential future reference.

Step 3.

Streak Matchmaking (streak chance = 50%, streak duration = 6, event rate = 85%)

Before observing and investigating the effects of ‘streak matchmaking’, it is crucial to establish a clear understanding of what a ‘streak’ is and how the experiments were set up. When a player queues up for her very first game of the season or split, either a win streak or a losing streak is selected for her randomly with a predetermined probability (streak chance). The given streak will last for a predetermined number of games (streak duration). During a streak, the result of the game that corresponds to the purpose of the streak can be named an ‘event’. In each streak, the ‘event rate’ is always substantially higher than the ‘counter-event rate’. When the player has fulfilled his streak duration, upon next queue-up, a new streak will be decided, regardless of the previous streak, repeating the cycle.

For example, suppose Paul was waiting for his first game of a split. By a 50% streak chance, he is put into a win streak during which his event rate (win rate) will be 85% and his chance of losing 15%. This streak will continue for 6 games as the streak duration is set to 6. After a fantastic series 5 wins and 1 defeat, he clicks for another game. Sadly, he has been given a losing streak(streak chance = 50%) where for the next 6 games(streak duration) he will lose at a 85% chance(event rate).

The results of these two tables are quite interesting. The first table shows that Paul may have to play more than 274 million games which can only be achieved by playing non-stop for 15,639 years ( = 274,000,000 / 17,520). This may only happen when a losing streak is followed by another for multiple times past the point where the net games won is well below zero. However, from this we should keep in mind that occurrences like this will happen to players quite more than we would like and therefore should not be written off as anomalies or mere outliers.

The second table emphasises this further as even when the number of games played are spread out across 1,000 players as ‘the average number of games played per run’, the value can still be in the hundreds of thousands or even in millions. This may prove that under these settings, the number of net games won may frequently become negative due to the influence of a series of losing streaks and make it hard to hit the required amount that is net 40 games won. To account for this for now, a bottom for net games won may be applied as a quick fix to soften the said impact of such a series.

*It is also worth pointing out that the average win rate (per player) can be misleading. This value is obtained by summing all of the win rates of all players involved and dividing by the number of players. For example, if, in a particular run of three players, one player only played 100 games and another 200 and the last player played 300 million games, the average win rate per player would still be higher. This is due to the fact that the first player has a win rate of 70% or 0.7, the second 60% or 0.6 and the last player approximately 50% or 0.5. The simplest sum of all three values and dividing it by 3 would get us something ever so slightly above 60% or 0.6, a number that may bewilder the third player and almost make him think it’s unfair.

Step 4.

Streak Matchmaking(streak chance = 50%, streak duration = 6, event rate = 85%, bottom=0)

To account for the issue of some players potentially having to play millions of games, a bottom for net games won may be implemented as a safety net to soften the impact of consecutive losing streaks. This safety bottom intends to mimic certain measures a matchmaking algorithm may have to ensure that players are evaluated persistently and that they hit that net 40 games won, even after having gone through multiple losing streaks. Of course, where they end up in rank with said net games won is not of concern for now.

Let us suppose that only during a losing streak, if a player’s net games won falls below a preset value (eg. 0), it will internally be reset to that given value configured by the safety net regardless of how many losses he sustains until the current losing streak ends. Also, if he were to be put in another losing streak again, his net games won would still be ‘protected’, in the sense that it would not go below the ‘bottom’. Losses would start being deducted from his net games won only when he accumulated an amount of net games won above the threshold whether it be during a win streak or a losing streak.

The tables below each show how Paul’s journeys would unfold until he reached the required amount of net games won and how it would be for a population of 1,000 players across five hypothetically separate and different runs. Again, the latter was generated with fixed random seeds for the purpose of reproducibility of results.

From the first table, we can clearly see that Paul plays significantly fewer games than before. Accordingly, the average number of games played is substantially lower. We could also say that it is too much so. This is due to the effect that the safety net or the ‘bottom’ has on the experiment. It protects the players too much as it keeps the amount of net games won always equal to or above zero hence making the stacking of wins much more likely to happen. It may as well be safe to assume that further experimentation with different values for the bottom is justified in order to increase the average number of games played across the population.

Step 5.

Streak Matchmaking (ceteris paribus, bottom = -10, -20, -30, -40)

Simulations for 1,000 players were run five times with the values for the bottom net games won being -10, -20, -30 and -40 respectively. Here we may see how the average number of games played change according to different values.

The four tables above demonstrate a very intriguing point. As the safety net or the ‘bottom’ decreases, the average win rate does not dwindle as much while the average number of games played increases. In fact, from these simulations alone, it seems that a decrease in the bottom by 10 games results in an increase in the average number of games played by 200 ~ 300 games. From the end of Step 2, it was pointed out that under a near perfect matchmaking regime, the targeted win rate of 53% would result in around 660 games. However, under the streak matchmaking system, the average jumps up to approximately 1490 games, a huge increment by at least 100%, considering fluctuation in results with different random seeds.

On the surface, it seems that players can enjoy a healthy win rate of around 53.5%, which is 2%p above our first benchmark (51%) and almost 0.5%p above the second from the previously given curve. This is most likely caused by the enormous divide between the ‘rich’ and the ‘poor’, team luck-wise or ‘team diff-wise’. While a few players may end up with good starting fortunes that ensure streaks of wins and inflate the average win rate, the majority of the players would be at the mercy of the ebb and flow of such ‘luck’. The most unfortunate ones would be directly headed to ‘elo-hell’ or the bottom of the pyramid bringing down the average win rate. But this effect may be mitigated by the matchmaking algorithm as it almost always guarantees that the very worst of players also get win rates close to 50% or slightly less. It should also not be forgotten that if enough time is given for all players to play indefinitely without the given split or season ending, all players’ rankings and records of wins and defeats would even out. Yes, even with incredible luck, if a player does not adapt to his new ‘highs’, he will get demoted if he plays enough games (and true for the inverse as well). However, this may not be possible as players can only play so much (at most, 18,000 games per year, 24/7).

Next: Chapter 5

Previous: Chapter 3

--

--