It's WALL OF TEXT AND PICTURES TIME
Forward TL;DR
What I've created thus far is just a hodge-podge of random stuff I've found I can garner from replays these days, as well as what what I think people could find useful with them.
This is meant to answer a set of questions about large numbers of games of StarCraft.
Before I go any further: Shoutouts to TLO for letting me use all his ladder games. What you're seeing is information from his last 380 ladder games.
Introduction (you could skip this bit I suppose!):
I've made a few posts in the past saying "HEY LOOK AT WHAT I'VE DONE!" only to have something come along and stop it working (see http://www.teamliquid.net/forum/starcraft-2/309211-starcraft-map-analysis-stargraphed).
So, naturally, I decided to do it again.
This time, with the 2.0.8 patch last year, I found out that a lot more information was stored in replays. In the past it was just raw user inputs that was simulated in the game when you ran the replay.
However, now this is not the case. You have seen with things like SCELight that you can get the buildings you created, upgrades made, etc. With tools like that giving you qualitative analysis of each of your games, and sites such as Aligulac giving you quantitative analysis of players and how they do in tournaments, I thought maybe I could combine the two. Turns out, I can!
I started out thinking that, if tournaments release their replays, I can grab all the games from all the players and use this to profile them. Create an overview of this player in a tournament setting. Could I use this to predict what they would do on any given map in a given matchup? Could I say "Ziggy says there's a 74% chance that MC will go quick stargate on this map vs Zerg"? Well, maybe, but as I was working on it and talking to some people about it, it turned out that we could turn this into a training tool, or in fact a tool that could actually do quite a few things.
Introduction over
Parsing Replays:
This tool uses Blizzard's S2 Protocol (https://github.com/Blizzard/s2protocol - Thanks, Blizzard!). I have not written my own replay parsing engine as of yet. I might do it I get the time and/or inclination to do so. As for now, this tool provides what I'm after doing!
It takes ~ 15-60 seconds to parse a replay based on time. Because of this, Replays are then stored off in a format that just keeps track of what I'm interested in. This means I can load replays much faster after they've been parsed. I do this because, unlike qualitative tools, I'm not interested in how you hotkey your army. I'm just here to give you STATS ABOUT ALL YOUR GAMES AT ONCE. RIGHT TO YOUR FACE.
Player Matchup Overviews:
You want to know how well you've been doing in each of your matchups? NO PROBLEM!
Obviously I have no real information from the last 2-7 days, because he's been at SSC
So far so Aligulac, but there's more!
Build Orders:
"What does a build look like?"
I have included the ability to configure build orders.
With this you can fill in any length of build, beginning and ending at any point. This is a build where Zerg goes onto 3 bases, at least one queen per base, gets a reasonably fast ling speed (7 minutes) and at least 24 drones.
When configuring the build, each section has its own start/end point. If you wanted to, you could add another 8 lings that start and end at a different point, it's all good.
Or you could use it to filter replays based on whether a roach warren was built at all:
Player Build Overviews:
"What do my games look like?"
A straight up look at how your games have been
Can be toggled to show upgrades/units, too!
I tried to add some extra information and functionality to this, so -
Want to see the times instead of food values for these, and group them up to the first 7:30? YOU SURE CAN!
It will also give you information in each grouped build item. You can see first/average/latest time they were placed:
As you can see, it gives you your overall win percentage, as well as the lengths of all the games you've played. On the right, you can see it copies that information. This is actually updated based on which of the replays you've selected, as such:
From this we can see that TLO's 3 post common builds up to the 7:30 mark actually give him a slightly higher win rate than anything else.
It is also possible to filter by map as well.
You can see a bunch of strings on the right under the filtered win percentages. Those are all the replays that correspond to the highlighted rows. If you have access to them and they are in the location from which they are parsed, you can copy them off to another folder for a closer look, if you so like.
Why would you do this? It's possible to filter, as you can see in the top right, based on your saved build order configurations. Useful if you want to practice a build and copy out your games where you've done them. You can tag replays, too, which will allow you to easily filter those replays in future.
Build Order Scoring:
"How good am I getting at this build?"
This one is very much a work in progress. Is it possible to rate how well you do a build? Still in the process of finding out, but this is what I have so far:
So, you can pick a player and a build and it'll show information on that build. You can see the best, average and worst times for any replay that fulfils the build order criteria. This extends to each element of the build.
The graphs show:
1) The completion times and how often that time is hit, as well as how many of those games you win with.
2) The time at which you completed the build over... time. If you see what I mean.
On the right you can see the "best" values for each build. The bottom right allows you to compare an unparsed replay. If it contains the build you're filtering against it'll show you where it comes in relation to the already parsed replays. COMPARE YOURSELF TO THE PROS, YO.
Build Order Wars:
"What should I be doing against X?"
Something that is generally already known, but comparison of build orders.
Some basic ones: 3 base zerg (3 hatches before 8 minutes) vs 3 base Protoss (3 nexuses before 10 minutes):
Zerg wins 53 out of 85 of these games. you can see how the matchup swings back and forth over time. I have no idea why. This, I think, is just straight up for numbers. We never see enough numbers in StarCraft casts.
One thing you saw in the first link I showed was a heatmap. I bet you're all wondering where those are. FEAR NOT!
Heat Maps:
That's right. I have heat maps for two different kinds of things.
Buildings:
You can filter by map, matchup, spawn location, building type, replay filter.
You want to know where protoss builds proxy pylons before the 9 minute mark on Daedelus, when they spawn top left? I GOT YOU, BRO.
Obviously this is going to be a really small subset of games, hence there aren't many (it's all Protoss vs TLO games on this map!)
As well as being useful to know where people are building proxy pylons at you, you can see the glory that is where all the units have died.
This can, again, be filtered in the same way (except not by building, that would be odd).
Aspiring map makers may be able to use this to make sure that fights are varied and spread over the map, that all bases are taken where possible and that it's not just all focused on one area the whole time.
I'm basically just asking you not make Habitation Station
The "All Mid" of SC2 Maps
Anyway, that's all I've got so far:
Pre-Emptive Answers
It's rather ugly
Yes, I know it's not very pretty. I'm bad at art based stuff, and I basically learned WPF as I was making this, so it's a bit sloppy in places. However, it works!
Can I use this?
I'll be potentially releasing this for use in the next couple of weeks. I'll bundle everything that you would need to use to run it where I can. However, you will most likely need to install Python (2.7) yourself to make it work. This is to run S2Protocol. This requirement will possibly be removed in later iterations if I can get the time to write my own replay parsing engine.
That's a dumb name
I can't think fo a better one. I've already used StarGraphed. Maybe "StarGraphed: The Next Generation" and I could rename all the buttons that do things to "Make It So"
Feel free to hit me up here on a PM or grab me on Twitter @Gowerly if you have any questions or suggestions. I'll add the most common ones to the OP here.
Thanks for reading!