An Analysis of Agent Impact on Performance in Pro Valorant
Table of Contents
- Introduction
- Background
- Data Source
- Analysis
- Average Damage per Round (ADR)
- First Contact and First Contact Wins
- Assists per Round (APR)
- Clutch Win Rate
- Headshot Percent
- Does Player Flexibility Matter? - Prediction
- Methodology
- Evaluating the Model - Conclusion
Introduction
Valorant, Riot games’ newest release, brings a unique twist to the tactical shooter genre by introducing agents. Different agents have different abilities intended to allow them to excel in different scenarios. For example, agents categorized as Duelists have abilities that help them get kills and lead the charge onto the enemy bomb site. In contrast, agents categorized as Initiators have abilities that help their teammates take sites by clearing corners, or providing information. Controllers provide utility to obscure vision from the opponents, and Sentinels specialize in locking down bomb-sites. This naturally leads to the question, how well is Riot executing on their character fantasies? Does the agent you play have a statistically significant effect on your in game statistics?
This article will look at statistics from professional Valorant players and examine whether or not the agent the player plays has a significant effect on their stats.
Background
Valorant is a “tactical shooter” in which two teams take turns attacking and defending bomb-sites. Attackers win by planting the spike on a bomb-site and surviving long enough for the spike to detonate. Defenders win by defusing the spike or preventing the attackers from planting. The first to 13 rounds wins the match.
At the time of writing, there are 15 agents in Valorant grouped in to four categories based on their intended use:
- Controllers: Astra, Brimstone, Omen, Viper
- Duelists: Jett, Phoenix, Raze, Reyna, Yoru
- Initiators: Breach, Sova, Skye
- Sentinels: Cypher, Killjoy, Sage
- Note that because Yoru and Astra are new, I am omitting them from our analysis. Not to worry, this only removed a single digit number of data points.
Data Source
Our data consists of various statistics such as headshot percent, clutch percent, KDA, and various round-level statistics from 1,647 professional Valorant players world-wide. This data was obtained by scraping Vlr.gg’s individual player statistics page in R. The scraped data was then cleaned and some features not originally present in the data were engineered for the sake of our analysis.
The Analysis
Let’s first look at which agents the players are playing the most.
Here, we are counting the most played agent of each player. We can see that long-time staple agents such as Jett, Sova, and Omen that are mainstays topping the chart.
Let’s dive deeper into several key statistics and see their relationship with the agents played.
Average Damage per Round
Here, we have plotted Average Damage per Round (ADR) per professional player against the agent that player plays the most. Immediately, we see that the distribution of ADR for people who play duelists (Jett, Phoenix, Raze, Reyna) is higher than those for other characters. In fact, the top four spots for average ADR by agent are occupied by the four duelists. Amongst the other roles the distinction is less clear.
To get a better sense, let’s zoom out and look at it at the role level.
Our initial observations are reinforced when we look at the distributions of ADR by role. The duelist distribution is shifted to the right, while the other distributions seem to be more similar. To confirm, let’s run a one way ANOVA to test if there is a statistically significant difference in the means of the distributions.
ADR_aov = aov(ADR ~ role, data=table)
summary(ADR_aov)
From this we can conclude that the mean of at least one distribution is different from the others, which supports what we saw visually.
First Contact and First Contact Wins
As mentioned earlier, duelists are designed to take first contact — to be the first one into the bomb site. In order to measure this, I took a player’s First Kill and First Death stats and summed them to capture how many times they were either the first one to die, or the first one to get a kill in the round. From there, I also calculated how likely they were to get the first kill.
From the above two graphs we see that indeed duelists are usually the ones taking first contact. However, when we look at the percentage of times each character actually wins the first contact, we see that the difference narrows, with only Jett remaining significantly above 50%. Surprisingly, Viper’s average first contact win is higher than those of Phoenix and Reyna despite not having any abilities that directly help her in taking these first contacts.
Breaking the data down at the Role level we see that duelists are indeed taking many more first contacts, with their win percent being slightly higher than the other groups on average.
Assists per Round (APR)
So far the measures we have examined only separate duelists from the rest. Next, let’s look at a measure meant to give distinction to a different role: assists.
When we plot assists, we see that Breach, Sova, Skye, and Sage come out with the highest average APR. This again makes sense since their characters are designed to enable their teammates to get kills (i.e. Breach, Sova, and Skye) or designed to heal agents (i.e. Sage). Again this is confirmed when we group by roles.
Here the distribution for initiators (Breach, Sova, and Skye) stands out from the rest, which makes sense given what we said above.
Clutch Win Rate
“Clutching” a round is defined as winning the round while being the last player alive on your team (either by defusing the spike if you are on defense, preventing the opponent from defusing if you are on offense, or eliminating all the opponents). One may think that duelists would do well in clutch scenarios, but more often than not the spike is already planted in a clutch scenario, and thus agents who are able to deny access to the spike should excel. In fact, many teams often try to ensure that such agents are the last ones to die on their team to have the highest chance of a post-plant success.
Surprisingly enough, the data is much more uniform than anticipated. We see that agents such as Sova and Killjoy don’t actually perform that much better than agents such as Breach or Sage who have no abilities to get the opponent off of the spike.
This is again supported when we group at a role level. Here we can see that all the distributions roughly follow the same shape and have the same mean, which lends credit to the idea that maybe it doesn’t matter which agent is left in a clutch scenario and that it’s more about the individual player.
Headshot Percent
Finally, the last metric I want to examine is headshot percent. Hitting a headshot is extremely valuable in Valorant, as it often times multiplies the damage done by a single bullet by a factor of 4, allowing you to finish off an enemy with a single bullet.
Interestingly, there is no clear relationship between the agent a player plays and their headshot percent. In theory, it would make sense that the duelists, who are designed to secure themselves kills, would have higher headshot percents but the data suggests otherwise. Perhaps players playing duelists do not have the time to aim for the head given that they are the first ones into the site and need to move fast and clear multiple angles, whereas other classes of agents can take time to properly position their crosshair at the head-level.
Does Player Flexibility Matter?
So far we have examined various metrics based on the most frequently played agent for each player. However, many players play multiple agents, bringing added flexibility to their team. But do their stats suffer in exchange for that flexibility?
We see that most players play around 2–4 agents, with a minority one-tricking and a slightly larger portion playing 5+ agents.
When examining which agents are often played by the same player, we see that the vast majority of players play agents within the same role. For example, Killjoy — Cypher, Jett-Raze, Omen-Brimstone. Somewhat interesting is that there are many co-occurrences between Sova and Sage, two characters from different roles which suggests some slight overlap between the Controller and Sentinel pools.
In computing the correlation between the number of agents played and the other statistics we are examining, there is barely any correlation. This serves to imply that one-tricks perhaps aren’t worth it given the added flexibility that a wider agent pool can bring.
Trying to Predict Agents based on Player Stats
In our final test to examine the relationship between the role/agent played and the player’s statistics, let’s try to build a machine learning model to predict what agent/role a player plays based on their statistics!
First, let’s attempt it at the agent level. Because our output is non-numeric, we’ll use a support vector machine (SVM) to learn hyperplane boundaries between the statistics of different agents. To briefly explain, you can think of the statistics of a player to be a data point in some higher dimensional space (i.e. 4 stats means a point in 4 dimensions). An SVM will attempt to find hyperplanes that separate the points according to their labels (i.e. most played agent/role).
Methodology
To go about this, I first split our data into train/test sets with 80/20 proportions. Then, I used the training set to train an SVM model using the following formula.
mostPlayed ~ ADR + APR + headshot_percent + first_contact_won_per_round + clutch_percent + num_agents
Essentially, I am telling the SVM to use ADR, APR, headshot percent, etc to determine their most played agent. I then repeated this process but for role instead of agent.
Evaluating the Model
Having trained the model on the training set, I had it predict the most played agents for the players in the test set, and computed its accuracy.
For the baseline, I computed the accuracy of a model that just picked the most frequently occurring agent/role and returned that. The results are presented below.
Agent-level Model Accuracy : 39.38%
Agent-level Baseline Accuracy : 17.19%Role-level Model Accuracy : 60.62%
Role-level Baseline Accuracy : 33.43%
It turns out our model performs fairly well on this test set compared to the baseline! It is able to compute the most played agent/role correctly with frequency twice as high as our baseline, but these percentages still leave something to be desired.
Conclusion
In conclusion, there are key statistics that are correlated with the agent that a player plays. In general, duelists take first contact more often and have higher damage per round. On the other hand, initiators get much more assists per round. Interestingly enough, statistics such as clutch win percent and headshot percent don’t seem to be affected by the agent/role a player plays at all.
Further work can be done to improve this model by collecting match level data to better measure the impact that controllers and sentinels have. Controllers, given that their class fantasy is to obscure sight-lines, will be hard to measure, but the impact of Sentinels can perhaps be measured based on how often the spike is planted on the site they start at.
Overall, this leaves us with some interesting takeaways when it comes to evaluating player performance. Yes the argument can be made that a certain player brings some intangibles to a team, but if they are a duelist with a low first contact win rate, or an initiator with low assists then that is a sign of concern. Alternatively, if a player has a high clutch win percentage or headshot percent, chances are it is a reflection of them as a player rather than the agents/role they are playing. For teams looking to scout a new player, I hope this project provides some key measures that can be used as a first-pass filter to help narrow the pool of potential players.