Stats of the Storm

Stats of the Storm is a Heroes of the Storm replay parser that uses a local database to create detailed match summary reports, player performance reports, and overall hero statistics for your database.

Stats of the Storm can also be used to create reports detailing team performance, and organize matches into collections to represent different divisions in a league.

It also comes with a HotsAPI/HotsLogs uploader built in.

Download

Stats of the Storm is available for Windows and macOS (experimental). You can download the latest build from the Releases page.

Windows users: Download the stats-of-the-storm-setup-x.x.x.exe file.

Mac users: Download either the stats-of-the-storm-x.x.x.dmg or stats-of-the-storm-x.x.x-mac.zip.

Setup

The first thing you'll want to do is set up the parser in the Settings menu, which you can reach by opening the menu in the top left corner of the app. The application is unsigned, so you will need to tell your respective OS to allow the installation of the app.

Once you install the program, you can start parsing your own matches, or explore a database created by someone else. An example of this has been created for Phase 1 of the 2018 HGC, and Season 4 of the NGS, and instructions can be found here.

The macOS build should be considered experimental at this time. I am testing the app on a VM, so it may behave differently on actual hardware. Please let me know what sort of problems come up there.

Want to help develop? Found a bug? Check out the project repository.

Features

  • Match Database
  • Match Details
  • Player Details
  • Team Details
  • Collection Stats
  • Uploader
  • Export JSON and PDF Data

How To

  • Parse Replays
  • Make a Team
  • Use Filters
  • Use Collections
  • Use Aliases
  • Load an External Database
  • Do a Clean Uninstall

Reference

  • Replay File Format Reference
  • Stat Definitions

FAQ

Why doesn't this do [x]? It's either on the list or I haven't thought about it. If you want it to do [x], let me know, or try making a pull request.

Why doesn't this just upload to HotsLogs? Honestly it was just eaiser to let HotsAPI do it because there's an option for it.

It crashed help me? File a bug report on the issues page and I'll see what I can do. Include as much info as you can, and check the Development Console (Ctrl+Shift+I) for errors.

How can I help? Set up the development environment as detailed on the repository readme and then take a look at the open issues and try fixing or implementing one! When you're ready, submit a pull request and we'll get the feature in there.

HotS updated, but the parser doesn't work? The parser in this app is tied to Blizzard's heroprotocol library. When this library updates, I will push an update for the app as soon as I can. It may take longer to update if a new hero is added, as I then have to make sure the heroes-talents repository is also updated.

Why don't I see all the players in the Player Details page? Personal databases have a lot of players that only show up once or twice. In order to keep the app responsive, players with fewer than 5 matches in the database are automatically excluded from the Player Details page. You can change this threshold in the Settings page with the Player Menu Threshold option.

Features

Match Database

Match DB Search for matches by mode, map, patch, season, hero presence, player presence, or team.

Match Details

Match Summary Standard End of Match statistics, bans, award details, and talents.

Full Draft Full match draft, not just bans. Available for replays from HotS 2.0 or newer (v2.25.0).

Stat Graphs Interactive charts for overall team damage/healing, teamfight damage/healing, and CC time

Team Stats Combined team statistics for levels 10 and 20, mercenaries, and structures.

Detailed Stats Detailed stats table (including hidden replay statistics such as clutch heals and escapes)

XP Graphs

Team XP Total Team XP

Minion XP Team minion soak versus theoretical maximum possible minion xp on the map

Detailed Stats XP contribution graph

Full Match Timeline

Match Timeline Lists the times of major match events including team takedowns, levels, level advantage, structures destroyed, objectives, mercenary captures, and also how long each mercenary unit was active.

Taunts and Chat

Taunts and Chat Team (and all if it's a custom game) chat, along with every spray, dance, taunt, voice line, and of course, bstep, used in the match, along with a count of takedowns or deaths that happened during the taunt.

Player Details

Stats of the Storm generates reports for each player found in the database.

Player Details Hero summary, map summary, and aggregate data for each player.

Player Hero Details Hero details and talent selection per-player.

Player Hero Pool Hero pool details for each player.

Player Hero Builds Talent builds overall and per-player.

Player Comparison Comparison with the average for a wide range of stats across the entire database, or a specified collection.

Hero Synergy With and against hero win rates.

Skins and Taunts Win rate with each skin, and most importantly, number of taunt actions taken, takedowns near taunt, and deaths near taunt. Also shows award stats.

Player Hero Details Detailed average stats table for all heroes played by a player. Includes replay-only hidden statistics. View average, min, max, median, and total stats.

Player Progression Win rate, KDA, and award rate over time graphs. Available intervals include month, week, patch, and season.

Team Details

In order to use teams, you first need to define who's on a team. See Team Building Instructions for more details.

The team hero summary, and team map summary provide the same info as the player details.

Team Stats Team stats also include bans, win rate against hero, average time to levels 10 and 20, average mercenary stats, total structure stats, and average team-wide damage stats.

Team Draft Priority Team draft priority, including picks, and bans.

Team vs Average Stats

Comparison of average team stats across the entire database, or a specified collection.

Roster Stats Average roster stats summary with link to the player's profile for more details.

Collection Stats

Aggregated data over the entire database (or current collection).

Overall Hero Stats Hero statistics including win, ban, and popularity rates. Filterable by role. Can also view detailed average stats (across all players) in the Hero Details tab.

Overall Hero Draft Stats Hero pick and ban rate stats for the entire collection.

Overall Hero Composition Stats

Team composition statistics.

Overall Hero Pool Stats

Overall hero pool stats. Can determine how many heroes never got picked/banned, never played, or never banned.

Overall Team Stats Rank teams by their average stats. Provides four categories to browse through.

Overall Hero Trends See win, pick, and ban rates for each hero over two specified intervals.

Overall Player Stats IMPORTANT: If you are using large databases (more than 500 players) you should set filters on your query before running, otherwise you will be waiting for the app to respond for a long time.

Displays overall individual player stats. Filterable by hero.

Overall Player Stats

Overall map and match statistics, including blue/red team advantage, first pick win stats, and first objective win stats (where available).

Built-in HotsAPI Uploader

Built In Uploader Upload your matches to HotsAPI (and HotsLogs if you like) automatically when you import a match. Stats of the Storm does not actively monitor your replay folder at the moment, so you'll have to remember to upload them manually for now.

Exporting Data

The app allows data to be exported in JSON and PDF formats.

With JSON data, you can export match data, and player data.

With PDFs, you can create printable reports for most parts of the application. Note that PDF printing takes a snapshot of the current section, which means that you'll have to make sure your tables are sorted in your desired order before using the print function. The application will briefly change layout and color while printing, and will return to normal when complete. If it does not return to normal, let me know.