Overwatch Ranked Data
Collecting and curating a public dataset on Overwatch ranked matches
April 18, 2018
Table of Contents
I started playing Overwatch towards the end of Season 2, and I thought it would be interesting to start collecting data from my own ranked games. The goal was to maintain a dataset of Overwatch ranked data that I could analyze to better understand how skill rating (SR) changes as a function of, for example, win/loss streaks and medals. I have made the dataset public in case anyone wants to run their own statistics or visualizations. However, I only have a few seasons' worth of data as I took a break from the game after Season 4 and picked it up again during Season 9.
The data is from my own ranked matches (1500-2600 SR), and the values are taken from screenshots before and after each match. The values were manually typed into the spreadsheet and include variables such as number of medals, eliminations, healing, etc. I’m (slowly) working on a Python tool that uses the Google Cloud Vision API to capture data directly from the screenshots and insert them into Google Sheets. However, that’s a long way off due to limited time. If anyone knows of a more efficient way, let me know. I really wish Blizzard had an API for this...
All of the data can be found in my GitHub repo or on Kaggle.
Data variables
Game #
– ID of the game within that seasonStart SR
– Skill rating before starting the gameEnd SR
– Skill rating after the gameSR Change
– Change in skill ratingTeam SR avg
– My team’s average skill rating, taken from the match-up screen before character selectionEnemy SR avg
– Enemy team’s average skill rating, taken from the match-up screen before character selectionTeam Stack
– Largest number of players on my team that are grouped togetherEnemy Stack
– Largest number of players on the enemy team that are grouped togetherRole 1
– My primary role throughout the match (offense, defense, tank, support)Role 2
– My secondary role (if any) throughout the match (offense, defense, tank, support)Result
– Win/loss/drawStreak
– Number of consecutive games that have been won/lost. Losing streaks are negative, winning streaks are positiveLeaver
– Did any of the players leave the match towards the end of the game?Map
– Game map
The following variables were all taken from the post-game stats screen. I’m not 100% sure what the "career" values represent – they are averages, and I believe they work on a per-character basis:
Match Time
– Length of the match in “MM:SS” formatElim
– Number of eliminationsElim_career
– Number of career eliminationsElim_medal
– Elimination medal (if any)Obj_kills
– Number of objective killsObj_kills_career
– Number of career objective killsObj_kills_medal
– Objective kills medal (if any)Obj_time
– Objective timeObj_time_career
– Career objective timeObj_time_medal
– Objective time medal (if any)Dmg
– Damage doneDmg_career
– Career damage doneDmg_medal
– Damage done medal (if any)Heal
– Healing doneHeal_career
– Career healing doneHeal_medal
– Healing done medal (if any)Death
– Number of deathsDeath_career
– Number of career deaths
There is no API for this data, so it had to all be grabbed manually...
Caveats about the data
- These are fairly low-ranked games (mostly around gold), and the relationships between variables may change completely at lower/higher ranks.
- If someone on a team is doing their placement matches, no average SR is given by the game. In this case, I denoted the teams' average SR with
P
. - For team/enemy stack sizes, it’s possible for there to be multiple groups within each team. In that case, I just used the largest sized group.
- I didn’t track the individual characters that I played during the games, as it’s possible to change characters multiple times. Therefore, I only tracked the roles I played (offense, defense, tank, support).
- Yes, I mostly play support (Moira and Lucio, if you’re wondering…).
- There are more winning streaks than losing streaks as I didn’t want to tank games just for the sake of data collection.
- It’s difficult to know what Blizzard considers a leaver, so if anyone was missing when the score screen popped up, they were considered a leaver regardless of if anyone left in the middle.
- The performance statistics (e.g., eliminations) are totals across the entire match, not split by characters played (this would be quite time-consuming to track).
- I didn’t track individual performance statistics during earlier seasons.
- There are some additional variables that I would like to capture. However, Overwatch ranked data is pretty difficult to track in any detail or in large quantities. It’s either too time-consuming (each player’s current skill rating) or very difficult to get without some sort of API access (average stats of a character at a particular skill rating, across all players in the game).
I’ll keep updating this over time as I collect more ranked data. Let me know if you think there is additional data I should be tracking, or any particular analyses you’d like to see.
You can find my analysis of this data in my other Overwatch blog posts — for example, a post about data visualization can be found here. You can also find analyses by other users on Kaggle.
My Overwatch profile can be found here if you’re interested: Winegum-1637.