Did I Get Stomped Due To Skill Mismatches?
Every CSGO player has gotten stomped in a pug and thought "how did he know to check that angle?!?" and "why can't I buy a frag this game?!?" The underlying question behind these frustrations is: why do teams of similarly ranked players in MM/ESEA/FACEIT have such unequal outcomes? I think it's because players have different skill sets, and some "similarly ranked players" are bad matchups, like aggressive entry fraggers overwhelming defensive players who can't handle the pressure.
This skills mismatch hypothesis seems nice, but I want to quantitatively test it. As I discussed in my previous blog post explaining the CSKnow data set, I'm working on a spatio-temporal database to create CSGO analytics. These analytics could provide the quantitative evidence to test the hypothesis. But I need more than just a system. I also need a plan for what skills to measure with the system.
There are many different skills that a CSGO player must combine. These include reaction time, game sense, and teamwork. SalvationsElite has an interesting video breaking down the different skills necessary to be a COD pro. It would be great if I could analyze a player's CSGO demo files and automatically break down rate their skills in similar categories for CSGO. However, I'm not ready to do a complete breakdown of all skills that make up a CSGO players. So let's focus on one skill in particular: game sense. What does it mean to have a good sense of your surroundings independent of (a) teammates' calls and (b) your ability to execute on that sense?
Intuitive Definition of Game Sense
Let's start with a qualitative definition of game sense. This intuitive definition will guide our quantitative one. Since CSGO is a game of incomplete information, I'm going to structure the qualitative definition based on how confident a player is in the different parts of their game sense.
- ~100% Confident
- Teammates - Any competent CSGO player should always know their teammates' positions, health, and weapons.
- Enemies Metadata - The HUD unambiguously displays the number of enemies alive and the positions of enemies considered "visible on radar".
- 1-99% Confident
- Enemies Heard – These enemies' positions are approximate since footstep sounds are less informative than vision or radar info. Also, footsteps can be muffled depending on distance or other noise effect.
- Enemies Partially Seen – A player may see a few pixels of an enemy but not notice them because they don't show up on radar and didn't notice the few pixels. Here’s an example of a slightly visible enemy that doesn’t show up on radar and you might not notice.
- Bomb Time Remaining – No one can count 40 seconds perfectly, so the remaining time to defuse the bomb is approximate. This is surprising since a machine should know this with 100% confidence.
- Enemy Economy and Weapons – Players know roughly how much money the team has, but not exactly. Therefore, they don't know exactly which weapons an enemy team may buy. Confidence increases over the course of each round as you encounter more enemies.
- ~0% Confident
- Enemies Unseen and Unheard - Players may have prior beliefs about the expected locations of enemies, but no actual knowledge of their current positions. These prior beliefs may be due to:
- enemy behavior in prior rounds of the current game
- standard behavior of all players in CSGO
Quantitative Definition of Game Sense
Now that we have the intuition, we can come up with a quantitative definition. I'm going to provide a few ways to measure each of the properties listed above. We can combine those properties using an equation like a1 * teammates_metric + a2 * enemies_metadata_metric + a3 * enemies_heard_metric + .... I would manually adjust values for the ai parameters based on what yielded logical rankings with pros rated highly on game sense and amateurs (like me) rated lower.
- ~100% Confident
- percent of possible trades converted
- percent of time nearest teammate to enemy is lowest health
- percent of time rifler is nearer to enemy than awper
- Enemies Metadata
- average reaction time for enemies on radar but not initially visible to you
- amount of wallbang damage on enemies visible on radar
- percent of time running when approaching a site that is known to be clear
- percent of defuses failed when no enemies alive and you have sufficient time to defuse
- 1-99% Confident
- Enemies Heard and Partially Seen - These are the same metrics as Enemies Metadata, but with an adjustment for confidence based on footstep loudness or number of visible pixels of enemy.
- Bomb Time Remaining
- number of deaths to bomb explosions when:
- on CT
- on T and no CTs remain
- average distance of pistol vs rifle deaths relative to average distance of rifle vs rifle deaths
- frequency of shoulder peeks or utility usage when fighting an awper without an awp
- Enemies Unseen and Unheard
- percent of deaths due to unseen enemies
- when pushing a site, percent of ignored angles that don't have enemies
- I'm going to weight this by angle popularity. It's much more impressive to ignore goose on de_dust2's A site than elevator, since goose is a more common and more valuable position.
- See my prior blog post for an example of how to identify likely peeking angles and when players ignore them.
This Is Only The First Step
This blog post is only the first step in defining and measuring game sense. I would be thrilled to get your feedback on any of this post. The areas that need the most work are:
- qualitative components of game sense that I missed
- other ways to convert these qualitative ideas to quantitative metrics
- a more rigorous methodology for determining the ai constants
If you have questions or comments about this analysis, please email me at email@example.com.