Search for (from) spins in World of Tanks / Habr
After seeing this article, I decided to publish my own, but already about World of Tanks (WoT). To understand what twisting or untwisting is, you need to explain the basic mechanics of the game. Before each battle, two teams of 15 players are randomly formed, depending on the type of equipment they have chosen, and then the battle itself is launched. In combat, each vehicle has a certain number of hit points, armor penetration and onetime damage, the vehicle is considered destroyed if it has 0 hit points. And the distinguishing feature of WoT is that armor penetration and damage dealt are normally distributed. And this is where twists and turns come into play. For example, players believe that armor penetration and damage are not truly random, but are determined by some cunning algorithm to prevent strong players from winning a lot (spins) and, on the contrary, to help weak players make at least some results so that they do not lose interest in the game (spins ).
Contents
Object of research and source of data
First, I tried to compile a list of mechanisms through which it is possible to implement spinup and I got the following:

Loss per shot: easy to collect data and therefore easy to analyze

Penetration during shots: unfortunately, there is no possibility to collect data here, because this information is not displayed anywhere

Accuracy: A projectile can deviate from its ideal trajectory randomly

Balancer: situations when a stronger player more often gets into deliberately weak teams and vice versa

Finishing an opponent: an opponent who has one shot left survives him
Data to check for the presence or absence of tweaks, I collected from the stream two strong players (KorbenDallas – a witness to the cult of tweaks and the_barbarian – not particularly a believer in them) who played on the same tank (T95E6) for quite a long time. This made it possible to collect considerable samples for analysis. In this article I will discuss points 1, 4 and 5.
Loss from a shot
For this section, data was collected from several streams and the sample size was approximately 500 values for each player.
As you can see in the image above, the histograms for the shot damage fit quite well on the normal distribution curve, suggesting that the shot damage is most likely normally distributed. Also, on the basis of these samples, the average value, the root mean square deviation was calculated. They totaled 400.3 and 32.39 for the_barbarian and 399.38 and 33.3 for KorbenDallas, which is well in line with the passport loss of 400 units. Using these data, I estimated threesigma confidence intervals and got the following: 400.3±4.1 for the_barbarian and 399.38±4.9. These intervals overlap well and there is no reason to say that one player has an advantage over another. Thus, the average values are most likely not the object of twists and this is expected, since such deviations are quite easy to notice.
Now let’s deal with the following types of twists: if you hit high damage per shot many times in a row, the player will get into a spin (that is, the next shots will have much lower damage than average) or vice versa. To check this kind of twist, you will have to turn to time series analysis.
For time series, you need to construct an autocorrelation function. If there are values that are very different from their neighbors, then duplicates exist. However, autocorrelation can detect only the presence of a linear relationship, which may not be true for the analyzed samples. Therefore, I calculated the “auto mutual information”, that is, the mutual information between the original time series and its shifted copy. And got this:
As can be seen, for a small amount of displacement, the value of mutual information is small, but from zero. This is due to the finite sample size. And with an increase in the shift, the sample sizes decrease (i.e., the shift is not cyclical) and mutual information increases with the help of fewer samples. But these results again indicate that there are most likely no twists.
Readers may have a legitimate question, how sensitive is “auto mutual information” to the presence of tweaks. For this, a dishonest time series was generated according to the following principle: if twice in a row the damage was less (more) than average, then the next shot will have more (less) average damage. As can be seen from the figure below, even such a small interference in the generation of random variables can be noticed. To be fair, the rogue series has a value that stands out prominently at the beginning of the graph about 1 in 6 times.
Balancer
As I mentioned earlier, another way to implement tweaks is the balancer, that is, the algorithm responsible for creating teams. Here, the main thesis is that weak players are thrown into a deliberately stronger team, and strong players into a weak one. Part of the reason for this opinion is the fact that the winning percentage of players is somewhere between 43% and 70%. The lowest values of the percentage of victories can be achieved only by engaging in open damage, and the highest by playing in a platoon (that is, always together and with voice communication) of three strong players. However, the reason lies rather in something else.
It’s not that the balancer tracks the player’s win percentage and tries to pull it up or, on the contrary, lower it, but that all tank communities are a huge interacting and selfcoordinated system. This will be manifested, for example, in the fact that it is simultaneously losing what is incapable, because if there are losers, there will be winners (nothing can be neglected, because there are very few of them). Yes, there are very bad players who will always drag the team down. But, firstly, tanks play 15v15 and their contribution can be offset by other players. Second, they may face equally bad players, and one of them will have to win, which will increase their win percentage. And here a vicious circle appears: the more bad players there are (the percentage of wins is less than 43%), the more often they will meet each other in battles, then their chances of winning will already be 50:50, and this will inevitably lead to an increase in their percentage wins, because previously it was generally 43%.
To test my reasoning, I used the following model. I took 1000 players (you can take another number, it is not essential). I gave each player a random, uniformly distributed number between 0 and 1 (although other distributions can be taken), which can be called a skill. 0 means that the player does not understand anything at all and will always lose, and 1 means that the player will always win. Then I conducted battles for these players according to this principle. First, I created a team of random players and calculated the average score of the team. And whoever showed more skill won. And such battles were held many times, so that each player recorded about a hundred battles. And after that, I built the following graphs of the dependence of the player’s percentage of victories on his skill. As you can see for 15v15 fights, the individual player’s skill has little effect and a very bad player can have the same win percentage as a good player. In 3v3 battles, a strong player can pull a team out, while a weak one can sink it.
I also tried to explain the asymmetry between the lower and upper bound on the percentage of wins (43% is much closer to 50% than 70%). For this, let’s assume that each tank has 2000 hit points. Then, in order to have 50% of victories, you need to cause an average of 2000 losses. If the player is very bad, his minimum contribution will be 0 losses (and it cannot be lower, because otherwise it is already targeted damage). A good player, on the other hand, has no such restrictions and can deal 5,000 damage on average, thus covering the contribution of 2.5 players and acquiring a win percentage much further away from 50% than a bad player’s win percentage.
Finishing
The last point I would like to discuss is the adversary harassment. It often happens that the enemy has 350 hit points, the average damage when penetrating is 400, but due to the fact that the damage is distributed randomly, less than 350 damage passes through.
And while I was watching a stream for a data set, I would sometimes pay attention to how a streamer reacted to whether or not they finished an opponent. And made such a sign.
extraction 
did not finish 
everything 

paid attention 
2 
6 
8 
didn’t pay attention 
3 
2 
5 
5 
8 
13 
I then applied Fisher’s exact test to determine whether there was a relationship between these events and the response to them. The probability of obtaining such results according to the Fisher test is 20%. This indicates some bias (the player more often notices that he does not finish off the enemy due to the untwisting than that he finishes them off), but the confidence probability of this is quite small and therefore it is impossible to state for sure here.
And a little about psychology
It seems to me that spins and spins were invented because random variables don’t behave the way the player wants them to. For example, very often you can hear complaints that the damage three/four/five times in a row was (above) below the average and this is due to (under) unscrewing. One possibility of these events is not so small (1 to 8/16/32). The following example illustrates this well. If you compare a sequence of 0 and 1 with equal probability created by a computer and a person, you can notice the difference: in the human sequence, 0 and 1 alternate much more often, while in the computer one you can find five 0s in a row.
In this example, try to guess where whose sequence is:
011000110100111010000111000110101001011010101111010
1101111111111111011000011111111100000000111101111101000
Hidden text
The correct answer is: the first line is human
The second line for the player, if 1 is counted as an aboveaverage loss, and 0 is below the average, it will feel like this: 1101111111111101 (it was tightened) 1000011110111 (so far, all norms, but should be unscrewed) 00000000 (а001) .
Another mental distortion is that negative experiences are remembered much better than positive ones. Therefore, a player may not remember how yesterday he had above average damage many times in a row (or he got into strong teams), but it’s great to remember how yesterday he couldn’t finish someone because of much lower than average damage and lost the fight.
In fact, cheats and spinoffs are invented by the subconscious mind to justify successes and failures in the game.
Instead of imprisonment
In this article, I have only tested the existence of some unscrewing mechanisms and have come to the conclusion that there is no reason to believe that they exist (at least in the mechanisms that I have been able to test). It can be argued that there are very clever tweaks that cannot be detected by these tests. But the following analogy comes to mind. Someone in his garage makes burned Mercedes, and once this person sold a Mercedes, but the buyer noticed that it was burned. They were usually beaten for this, and in order not to get burned in this place the next time, this part is either replaced with the original, or becomes completely identical to the original. At the next sale, they notice problems with another part and it also has to be replaced, and so on until this someone starts producing a complete analogue of Mercedes. And the question arises, why torture yourself so much and make a Mercedes in the garage, if you can go to work at the Mercedes factory and get the same money? And the same question arises for twists. Why bother with it when honest random gives similar results?