Welcome everyone to the scouting series. In the next ten articles, we will be studying what aspects of the game make every player special, and how we can use them to scout the scene and find the players that better fit what your team needs. Specifically, we will use:
- 3 economy dimensions: performance for each player and each type of round is measured for three types of rounds: fulls buys, antiecos, and half-buys.
- 2 situational dimensions: pistol rounds and spotlight rounds.
- 5 specialist dimensions: opening potential, multikill potential, clutch factor, AWP impact, and support abilities.
In this article, we will be using data from 69 different tournaments, and 4590 maps, including 476 players with more than 30 maps, all over 2024. The percentiles are estimated using data aggregated for the year, extracted from demos using awpy.
First, we’ll introduce the metrics used throughout the analysis. Following this, we will then use six of the estimated metrics to separate players into three key aspects of the game: opening kills with real impact on the round (Opening Kill vs Opening -Kill Win Rate), multi-kills with real impact on the round (Multi-Kill Score vs Multi-Kill Win Rate) and player independence (Trade Kills vs Deaths Traded). Thirdly, we will be doing five comparisons between players with the same role but different styles, finding out if our numbers match the eye test. Finally, we will work on creating a total score for players’ performance in full buy rounds, combining all the metrics included previously to find prospects with one specific role in mind: a young aggressive rifler.
Defining performance in different types of rounds
13 different metrics to separate great from average
In the three economy dimensions, we will be using the following metrics:
- Kills per Round (KPR): number of kills that a given player gets, corrected per the number of rounds played.
- Deaths per Round (DPR): number of deaths that a given player suffers, corrected per the number of rounds played. This statistic is inverted, since having a lower value is better.
- Trade Kills per Round (TKPR): number of trade kills that a given player gets, corrected per the number of rounds played.
- Percentage of Deaths Traded (DTR): percentage of deaths that are traded.
- Average Damage per Round (ADR): average damage caused to enemy players in each round played.
- Opening Attempts per Round (OPAT): number of times that a given player
- Opening Kills per Round (OPKPR): number of opening kills that a given player gets, corrected per the number of rounds played.
- Opening Deaths per Round (OPDPR): number of opening deaths that a given player concedes, corrected per the number of rounds played. This statistic is inverted, since having a lower value is better.
- Opening Deaths Traded (EDTR): percentage of opening deaths for a given player that are traded within 5 seconds of happening.
- Win Rate in rounds with opening kill (EK WR): win rate in rounds where the player gets an opening kill.
- Percentage of bullets that are headshot (HSBUL): percentage of bullets that are headshot, out of all the bullets that hit an enemy player.
- Multi-Kill Score per round (MKPR): this score is estimated giving a player 1 point for each 2k, 1.5 points for each 3k, 2 points for each 4k and 2.5 points for each 5k. The final score is then corrected per the number of rounds played.
- Win Rate in rounds with multi-kills (MK WR): win rate in rounds where the player gets a multi-kill.
There are a couple of small details that we need to address regarding these metrics. Since we are going to measure the performance of each player across a whole season, we have two options in each metric:
- Estimate each metric for each map played, and then get the average across all maps.
- Sum all of the events for each metric across all maps played, and then correct them by the total amount of rounds played in all of the maps.
For the untrained eye, this detail may be ignored, but as usual, the devil is in the details. The first case may seem perfectly correct, but with that particular approach, a given player could get extremely high or low values for some metrics in a given map where the number of rounds played is small. Intuitively, you may think that by taking the median that should be solved. However, we would consistently ignore the number of rounds played, so the correct approach would be to include a loading for each metric that takes into account the number of rounds played. The second approach is already being considered, and we can get a fairly precise estimate of the performance that we can consistently expect from any player.
Finally, you may be wondering why I have not included survived rounds, since it is a fairly easy statistic to extract and common nowadays. My opinion concerning that particular stat is that it is completely unnecessary: we are already measuring deaths, with DPR, and all the other stats are already measuring the impact that any player has on the outcome of the round. Just surviving will never give you any round in CS, you need actually to do things in the round, and we can measure that. Surviving just lets you play with a better economy next round, but remember: we are already taking only full buys vs full buys rounds, so it is irrelevant.
Differentiating players using scatterplots
Opening Kill vs Opening-Kill Win Rate: early vs late-round players
The next figure represents the rate in full buy rounds where the given player gets the opening kill, in the X-axis, and the amount of opening kills that each player gets per full buy rounds in the Y-axis. Remember, we are working with percentiles: a player with a 100th percentile for a given stat means that he is at the top of that particular area, but in this case, a 100th percentile in win rate does not mean a 100% win rate.
In the top-right corner, we can see a clear dominator: ZywOo is extremely good at getting opening kills, and his team is extremely good at making good use of them. Moreover, we have a cluster of less aggressive AWPers with extremely high round conversion including w0nderful, Jame, and torzsi. This profile of players could be a good option: you look for young aggressive players and improve the win rate of their opening kills, protecting them and building a structure behind it, just like Liquid is trying to do with ultimate. We also have the opposite option: aggressive AWPers whose rounds are not being converted as much, such as dexter or ultimate.
In terms of riflers, we have the usual suspects: YEKINDAR, xertioN, jkaem, NiKo, donk, EliGe, or malbs. ewjerkz, from the Portuguese team SAW, stands out as an aggressive rifler with a high round conversion and could be a good pick-up for top teams such as, for example, FaZe if they decide to replace rain. Obviously, riflers assume more risks when looking for entry kills, and are usually either traded or heavily damaged, which affects their win rate. In terms of riflers with a low amount of opening kills, we have supports such as Jimpphat, Grim, or Krimz.
Multi-Kill Score vs Multi-Kill Win Rate: multi kills with real impact
Next, we will look at multi-kill rounds, focusing on which players are getting the most impactful multi-kills. In the following figure we have, in the X-axis, win rate in full buy rounds where the given player gets a multi-kill, and in the Y-axis the multi-kill score corrected per rounds played. Just like in the previous figure, a 100th percentile in win rate does not mean a 100% win rate, it means that the team is the best at converting the multi-kills of that given player into rounds won.
In the top right corner, we have the group of players that more frequently get multi-kills, and whose multikills are more likely to be converted into a round win. This group includes players like donk, dexter, EliGe, JDC, xertioN, flameZ or xKacpersky. It is interesting to notice that a good amount of pure old-school IGLs share a really low multi-score percentile, but there is a wide range of differences in win rate. Snappi, HooXi, cadiaN, and Snax have a below 50 percentile in win rate, whereas apEX, siuhy, karrigan, and Aleksib have win-rate are located north of the 80th percentile.
The top left corner consists of players who are getting high multi-kill scores per round, but the multi-kills are not being converted into rounds won. In this group we find awpers like MartinezSa, Ultimate or Sunpayus, which may be getting multi-kills saving, and passive riflers/lurkers such as adamS, KSCERATO or Jimpphat.
Trade Kills vs Deaths Traded: packs vs individuals
Studying trade kills is a good way to measure if a given player, or team, relies more on a pack mentality where players are grouped and deaths can be traded or they have more freedom and, in consequence, there is less trade potential. A good overview of how trading stats can show a team’s structure can be found at HLTV. In our dataset, the players who are more used to playing in a pack are located in the top right corner. Particularly, players like Jimpphat, electronic, flamez, jL, or XANTARES are good traders and mostly get traded when they die. On the contrary, players like Snappi, dexter, YEKINDAR, Snax, jkaem, sjuush, or Jame trade very rarely, and when they die the trade is not likely to happen. Some of these players are known for being used by their IGLs to take map control and gain info, which could explain the low amount of deaths traded. In the case of Jame, it could be explained by the fact that he is usually the last man alive, which makes it impossible to be traded, and should take long-range duels with the AWP, which would be harder to trade. Most awpers are below the 50th percentile in deaths traded.
Comparing playstyles using Player vs Player Comparisons
sh1ro vs m0nesy: battle of the AWPers
When it comes to AWPers, there are two main categories: system AWPers and support AWPers. System awpers are those that have an extremely important role in the system of the team, being responsible for a good amount of the early aggression, creating space for his team and constantly looking for information and kills. Their team heavily relies on their performance to win a round. In contrast, support AWPers are those that are a part of the system, giving cover and support for their teammates by holding angles, throwing support utility, trading, and taking good spots in the late round where they can shine. Even though all AWPers do a combination of both, most of them shine more in one of this two dimensions. Depending on the system that you are planning to build you should select the AWPers that better fit your playstyle. System AWPers need a lot of resources to take full advantage of their capabilities, whereas support AWPers are easier to include in teams with a couple of star players.
A good comparison of two excellent AWPers with completely different playstyles is sh1ro vs monesy, with the former being a support AWPer and the latter being a system AWPer. In the spider graph we can see that there is a good amount of overlapping between the two, but monesy scores significantly higher in ADR, opening attempts per round, opening kills per round, multi-kills and multi-kill win rate. In contrast, sh1ro is extremely good at trade kills and is close to the 100th percentile in DPR and OPDPR. Once we get to the support dimension, we would expect sh1ro to outperform monesy in most of the metrics included, which is something that we are not considering right now.
jL vs donk: battle of the aggressive riflers
Now, let’s change our focus to aggressive riflers. For this section we have chosen jL and donk, both star players in two of the best teams of this year. donk is exceptionally good, scoring above 95 in percentiles for KPR, TKPR, ADR, OPAT, OPKPR, MK SCORE and HSBUL. jL is having an incredible year as well, but there are noticeable differences. He is less aggressive early round, which has a positive impact on his OPDPR where he outperforms donk, as well as his DPR and DTR. In this case, donk could be considered a pure entry fragger, whereas jL would fit better a star player role where he can choose the rounds and situations where he wants to fight early.
siuhy vs karrigan: battle of the IGLs
IGLs are known for being bad fraggers and are often used as bona fide decoys, giving information and supporting their star riflers. However, there are different styles. For this comparison, we have chosen karrigan, and his tipped-to-be future replacement siuhy. Both have similar profiles, with high MKWR but low MK SCORE, high opening deaths traded, and high deaths traded. The biggest difference between these two players is that siuhy is a better fragger, which translates to better TKPR, better KPR, and considerably better OPKWR. By all means, siuhy seems to be a similar profile of player and good replacement in the future if karrigan decides to step down from competitive play. However, it is important to notice that, while karrigan plays rotator and support positions on CT side, siuhy has some star positions, such as connector on Mirage. If you are interested in positions, I recommend that you have a look at the positions database created by NER0cs.
ropz vs huNter: battle of the lurkers
Next, we are going to compare two significantly different lurkers. On the one hand, ropz is known for being passive, to the point where sometimes he can lack impact on the outcome of the rounds. He has good KPR and DPR, but his MKWR is average, which could be reasonable if most of his multi-kills occur when the round is already lost. He is also pretty good in terms of ADR, and even though his OPAT are fairly low, he has acceptable OPKPR for being a passive player. However, his OPDTR is considerably low, suggesting that whenever he goes for early aggression he is usually on his own.
On the contrary, huNter is a different profile of lurker. His KPR and his MKSCORE are considerably low, but he scores high in DTR, TKPR, and OPDTR, suggesting that he is more of a pack player rather than your typical lone-wolf lurker. It is also curious that his HSBUL percentile is way lower than the one of ropz. Moreover, his MKWR is slightly worse, suggesting that his impact on the outcome of the round is less significant.
zont1x vs mezii: battle of the supports
Finally, we are going to look at two players with support/anchor roles. zont1x has been under the scope lately, with unfortunate declarations writing checks that his performance can not cash. Looking at his metrics, we can see that part of his work includes getting the opening kills, which may be related to playing CT positions where Ts may fight early round. Moreover, his MKSCORE is acceptable, and his MKWR is really good. However, he performs pretty badly at TKPR, and extremely badly at HSBUL, something he has been criticized for lately. Mezii has a completely different profile, with higher values of TKPR and especially DTR and OPDTR. Just like we pointed out before, for this type of role the support abilities dimension is fundamental to get a complete picture of what each player brings to the server.
Filtering players: building scores for specific playstyles
Integrating all the stats into scores to filter players
The last thing remaining is using everything that we have learned before to filter the profile of player that a given team is looking for. The process looks like this:
- First, we would have to talk with the staff of the team, following a questionnaire where they can answer simple questions regarding style, positioning, level of aggression, level of independence, role, and so on.
- All the metrics extracted are scaled, so all of them are comparable and, therefore, easier to combine. Specifically, we are going to scale them between 0.5 and 1.5, forcing them to be centered at 1, and I will explain later why.
- The metrics are combined together in groups, and each group is assigned loadings depending on what the team is looking to prioritize.
- The final scores are merged together and players are classified using percentiles just like we did before.
- Finally, we can select the most interesting players and create in-depth reports on each one of them. This part will be the final piece of the series.
Now, let’s get to work! For the first step, we are going to assume that the given team is looking for a young aggressive rifler. Next, we need to combine all the metrics using groups and assign loadings to each one of them. The groups that I have chosen are the following, although they are just my personal preference and you could create them as you considered:
- Fragging: this category combines KPR, DPR, ADR, and HSBUL into a score. Particularly, KPR, ADR, and HSBUL will have positive signs, and DPR negative signs since having high DPR is indicative of bad performance. The formula is (KPR – DPR) + ADR + 1/2*HSBUL, with HSBUL contributing only half of its value since headshots are considerably less important.
- Multi-Kill Potential: this category combines MK SCORE and MK WR. Since the win rate measures how impactful your multi-kills are on the result of the round, we are going to multiply them, and this is the reason why we want to range between 0.5 and 1.5. If a given player is average at MK WR, MK SCORE will be multiplied by 1 and, in consequence, remain the same. If a given player is below average, then MK WR would be below 1 and penalize MK SCORE. Consequently, players with above-average MK WR will have values greater than 1, benefiting the score. Therefore, the formula would be: MK WR * MK SCORE.
- Pack Mentality: this category combines TKPR and DTR and aims to measure how frequently a given player plays inside a pack. The formula is : TKPR + DTR.
- Early Aggression: this category combines all of the metrics related to opening kills: OPAT, OPKPR, OPDPR, and OPKWR. In this case, the formula is a bit more complex, but nothing we can not understand: (OPAT + (OPKPR – (OPDPR / OPDTR))) * OPKWR. The first is just attempts, and is multiplied by a second term formed by a combination of OPKPR, OPDPR and OPDTR. The easiest way to understand it is with an example. A player good at opening kills, such as donk, will have high OPKPR, low OPDPR, and high OPDTR. For example, let’s assume these values: OPAT is 1.3, OPKPR is 1.3, OPDPR is 0.6, OPDTR is 1.1 and OPKWR is 0.8. Since OPDTR is greater than zero, the effect of OPDPR becomes smaller (0.6/1.1=0.54) because a good amount of those deaths are getting traded. The term including OPKPR has a value of 0.86 (1.3-0.54), and by adding OPAT we get a value of 2.16 (1.3+0.86). Finally, we benefit players whose entry kills are converting into a win, but since Spirit is not working well with the 5v4, the player gets punished, getting a final score of 1.73.
If you got lost in the formulas, do not worry about it. What is important to get from this section is that we are going to combine all the metrics, using win rates to benefit players whose actions are resulting in wins, and punishing people with low win rates. How you can combine the metrics can vary and should vary depending on what you are looking for, this is just an example of how it would be done.
Top 10 young aggressive players
Now, it is time to jump into stage four and decide how we are going to value each of the four dimensions. Since we are looking for an aggressive rifler, the dimension with the greatest weight should be early aggression. Multi-kill potential should be the second most important dimension, measuring if our player is capable of getting opening kills and multi-killing. Fragging is important but should have less weight than the two previous ones since it is more general. Finally, pack mentality is not that important for us, so we will give it the lowest weight. We could use whatever numbers we feel like, but I like using numbers that add up to 1. This would give a formula like this:
Final Score = 0.1 * Fragging + 0.25 * Multi-Kill + 0.05 * Pack Mentality + 0.6 * Early Aggression
Using this formula, the top 10 best riflers born after the year 2004 are the following:
PLAYER | NATIONALITY | AGE | TEAM | FINAL SCORE | PERCENTILE |
donk | Russia | 17 years | Team Spirit | 1.85 | 100 |
nota | Russia | 17 years | AMKAL | 1.79 | 99 |
FL4MUS | Russia | 20 years | GamerLegion | 1.64 | 98 |
insani | Brazil | 20 years | MIBR | 1.58 | 95 |
r3salt | Russia | 19 years | 9 Pandas | 1.58 | 95 |
xertioN | Israel | 20 years | MOUZ | 1.56 | 94 |
mzinho | Mongolia | 17 years | TheMongolZ | 1.51 | 92 |
xKacpersky | Poland | 18 years | ENCE | 1.51 | 92 |
Xant3r | Russia | 20 years | Nemiga | 1.49 | 91 |
Zyphon | Denmark | 20 years | TSM | 1.48 | 90 |
Seems like we have some well-known names, as well as some newcomers! Obviously, if our system works fine, donk should be the best in this category and xertioN is also a good example of an aggressive young rifler. FL4MUS and xKacpersky, recent pickups for ENCE and GamerLegion which are teams known for finding and developing new talents with a limited budget. We also have a group of young Russian players that are still playing for lower-level teams, such as nota from AMKAL and Xant3r from Nemiga. These could be viable options, depending on the length of their contract and the languages that they can speak in a team environment. mzinho has been playing well and contributing to the development of TheMongolZ, and could be a good option for European teams if they can speak English. insani, one of the most promising players right now in the Brazilian scene, gets a really high score as well. Lastly, Zyphon has stood out as an aggressive rifler in Denmark and could solve some of the aggression problems that Astralis suffers from.
That’s All Folks!
I hope you enjoyed this piece and found it interesting. Extracting this amount of data takes forever, and preparing all the statistics behind is not a simple task when you have to deal with datasets as big as this one. Unfortunately, the amount of information that I can present in a single piece is fairly limited, so if there is any player comparison or any specific role that you would like to see in the following dimensions make sure to let us know!