A better way to add build orders

In my mind, the heart of Spawning Tool is the extracted, readable build orders. To get to that point, however, there are a lot of replays to sort through, and I think that’s where the tagging system becomes valuable. Many of the tags are auto-generated from replay data or extrapolated from past data. The biggest area still requiring human analysis, however, is labeling build orders, which, judging from the front page, hasn’t been well-distributed in the community.

And I admit that the experience so far sucked. You had to find a replay on your own, and it was at least 4 or 5 clicks to punch in a build order. Hopefully, however, it’s a lot easier now with the new system for labeling build orders. There are a few parts to this.


First, you can now approve and reject suggested tags with one click. Previously, it was hard to know what taxonomy of build orders was, and it took too many steps. Now, there are a few thousand procedurally-generated suggested tags for you to approve. You can take a look at the build order and hit “yes” or “no” to determine whether the tag is appropriate or not.

Second, the interface to tag replays is up top on this page. Previously, it was hidden at the bottom of the page on the sidebar and took a click to open up. Now, you’re automatically focused into the box so you can add tags immediately on page load without having to click or scroll anywhere. Hopefully, you can pair up the action of approving or rejecting a suggested tag with more detailed tags on top of that.

Finally, you now see isolated build orders and can browse replay-to-replay. Previously, you had to bounce back and forth from browse (or open 10 tabs at once like me) to tag several replays in a row. In the build order labeling pages, you can jump from random build to build and stay on a roll.

The link to the build order labeler is on the front page, so you can hop straight into that and check out the world of actual in-game builds. Remember to login as well so that your tags are associated with you and counted in the leaderboard.

One more thing: my hope is that labeling build orders can become more and more automatic (though still with some human intervention). Machine learning is in the works and can generate suggestions, but it will only improve with more hand-labeled training data. I’m not sure where the tipping point is, but I’m excited to get to a point where that can take off on its own!

Close/Cross position win rates on different maps

I just posted this on reddit, though it’s reproduced below. If you have any comments, please do so on reddit where you’re likely to get better discussion than you would here!


Often, commentators will mention how certain maps favor certain races. I figured I would take a look at actual win rates to see how true those differences are.

Close Positions 52-57 (47.71%) 76-75 (50.33%) 52-77 (40.31%)
Cross Positions 25-26 (49.02%) 31-41 (43.06%) 36-39 (48.00%)
Total 81-89 (47.65%) 118-127 (48.16%) 98-123 (44.34%)
Star Station
Close Positions 4-4 (50.00%) 5-5 (50.00%) 6-7 (46.15%)
Cross Positions 36-37 (49.32%) 43-63 (40.57%) 91-70 (56.52%)
Total 43-44 (49.43%) 50-73 (40.65%) 106-82 (56.38%)
Close Positions 24-18 (57.14%) 29-27 (51.79%) 19-21 (47.50%)
Cross Positions 12-10 (54.55%) 17-11 (60.71%) 7-7 (50.00%)
Total 37-28 (56.92%) 49-41 (54.44%) 27-31 (46.55%)
Alterzim Stronghold
Close Positions 8-9 (47.06%) 17-8 (68.00%) 3-3 (50.00%)
Cross Positions 1-6 (14.29%) 7-2 (77.78%) 3-2 (60.00%)
Total 9-15 (37.50%) 24-10 (70.59%) 6-5 (54.55%)

Methods and Discussion

For each replay, the map is divided into a 3×3 grid, and each cell is assigned a clock position (11, 12, 1, 3, 5, 6, 7, 9). The starting building (CC, Hatch, Nexus) position for each player is recorded. With those, cross positions are all locations that don’t share either a column or row, leaving 3 cross positions for each starting location. For example, 11 is cross from 3, 5, and 6.

The Replays are mostly from released tournament replay packs uploaded to Spawning Tool. Unfortunately, the biggest source of professional games is WCS, and they haven’t released for 2013 season 3 or 2014 season 4 (though I’m excited to redo these numbers after they do!). Because of that, we don’t have as many examples from newer maps.

Maps are collapsed across the different versions (e.g. Frost and Frost LE are counted together). Star Station was changed to a 2 player map at some point, and Alterzim Stronghold is relatively new. For the other maps, close positions are twice as likely as cross positions, so that’s the difference in counts.

A confounding factor here is bans. Since players in tournaments can ban maps that they don’t have favorable matchups in, we have a biased sample on these maps. I don’t really have any thoughts here.

The cross/close position data is available on Spawning Tool (though it does require sticking &tag=1173 or &tag=1172 to work in the research tool), so I welcome you to poke around with the data there to see if you can find anything else. Also let me know if there is anything else you’re interested in that you think can be informed by replay analysis!

Spawning Tool update: UI tweaks

A few weeks ago, I sent out a survey (still open here if you want to fill it out) about how users use Spawning Tool and what they were interested in seeing in future development. Thanks to the feedback there, I have made quite a few changes recently. There are a few big ones I want to talk about in more detail in future posts, but here’s a list of some of the smaller ones.

First, the browse replays page now shows the names of tagged players. This happens to be on of the most important pieces of information to see at a glance, and it doesn’t clutter the interface. I would have liked to do map name as well, but the poor standardization in map names would be messy, and you’re better off using the hierarchy from the tag filters.

Second, I slapped race icons around on the site. One totally valid criticism of Spawning Tool is that it lacks any visuals. I’m not great with either visuals or data visualization, so I largely depend on text and numbers to convey things. I’m open to other suggestions on visuals as well.

Third, I opened up tag pages for all users. I was previously using this just as an administrator tool, but it’s a handy dashboard around a player or build order. Currently, it contains the list of replays tagged and the parents and children of the tag so you can see the hierarchy that exists behind the scenes. I’m a little scared of fleshing out the page too much since generating content is time-consuming and would probably look a lot like liquipedia content, but if you have any ideas on useful things for this page, I’m open to suggestions.

Fourth, there have been various tweaks to the research pages, which were largely inspired by my own annoyances in using them. You can now filter by build orders for each players, and the View Win Rates page has more data to read things off more easily. I think I buffed out the advanced research page as well, but you should consider that “under construction” even still.

Fifth, you can now drag-and-drop .SC2Replay files onto any page (other than the upload page) to instantly upload your replays. A common use case I see for replay sharing is getting feedback from others, and I wanted to make it as painless as possible for someone to share a replay and the build orders.

Those are the minor but not trivial updates. Look for updates soon on other features, and send along any feedback on these or other proposed changes for Spawning Tool.

Stats for WCS AM/EU semifinals

It’s past 3AM here, and over the past 6 hours or so, I have been cranking on a few minor features for Spawning Tool, but primarily machine learning to learn to label build orders. It’s not very well-trained at the moment, but it got to 61% on Reaper Expands, so it was above 50-50. More importantly, the code ran to completion! I’ll write more about that soon.

In the meantime, however, I think I might be sleeping in tomorrow, so I thought I would publish stats before heading to bed. Enjoy the semifinals tomorrow!

MC (P) v jjakji (T)
1. MC beat jjakji 3-1 at IEM Sao Paulo with surprises everywhere. He opened Blink, Phoenix, DTs, and Robo
2. Out of 10 recent TvPs, jjakji went for a Bio Mine composition. Expect to see more of it

MMA (T) v San (P)
1. San loves Templar. Before the 25 minute mark, he casts ~2.6x as many Storms as all PvTs, and Ghost usage is also up to compensate

Alicia (P) v HyuN (Z)
1. In 18 games, Alicia has never played a PvZ shorter than 12 minutes.
2. Unlike his ZvT, HyuN doesn’t care how long a ZvP lasts: his win rates are always about the same

Revival (Z) v Oz (P)
1. Oz does a lot of Forge Fast Expands (which are less popular than Nexus First and 1 Gate Expand builds) and at a lot of different timings

Stats for WCS AM/EU quarterfinals day 2

I’m a little late here, but here are some numbers:

Snute (Z) v MMA (T)
1. MMA beat Snute in the ATC Season 2 Finals http://spawningtool.com/7773/
2. Snute opened 15 Hatch, 16 Pool in all 10 ZvTs in 2014. However, he has also gone for Roach aggression, Swarm Hosts, and Ultralisks out of it http://spawningtool.com/research/tags/?after_time=&before_played_on=&p2-tag=&p1-race=&p1-tag=58&p2-race=2&before_time=&after_played_on=1%2F1%2F14

San (P) v Welmu (P)
1. I didn’t find much of interest for this matchup. In 2014, though, Welmu has at least 26 San replays to study

Polt (T) v Revival (Z)
1. Revival plays very long ZvTs. 8/11 (73%) went longer than 20 minutes compared to 45% of ZvTs globally
2. Polt also tends to go long, playing 19 / 35 (54%) over 20 minutes. This series could take awhile

Oz (P) v Arthur (P)
There aren’t many replays for these players other than Oz v sOs at IEM Katowice

Stats for WCS AM/EU quarterfinals day 1

Today, the WCS season finals begin for Europe and America. I compiled a few stats that I posted to Team Liquid and are reproduced below.


MC (P) v StarDust (P)
1. StarDust beat MC 2-0 at IEM Cologne. The games lasted 6:56 and 8:38 with MC attacking early in both games (ref)

2. MC is 3-9 (25%) in PvPs lasting 20-25 minutes, but 6-1 (86%) in PvP >25 minutes (ref)

3. MC is diligent in using his Phoenixes. Although he makes slightly fewer (.54 v .65) Phoenixes per game than his opponents, he uses Graviton Beam more often (2.81 v. 1.61) (ref 1) (ref 2)

VortiX (Z) v. jjakji (T)
1. VortiX opened Hatch First in 18/20 (90%) of ZvTs. It’s usually a 15 Hatch followed by a 16 Extractor or Pool. (ref)

2. VortiX is 4-0 in games 8-12 minutes long, all of which were Roach Baneling all-ins. However, he’s only 4-4 in games going Roach Baneling overall (ref)

Alicia (P) v. Bomber (T)
1. Alicia is 19-6 (76%) in games longer than 16 minutes, while only 69% overall. (ref)

2. Don’t play Bomber straight up in TvP. He’s 2-7 in games <16 minutes and 11-4 in games >16 minutes. Blink Stalkers and Dark Templar are good bets (ref 1) (ref 2)

TaeJa (T) v. HyuN (Z)
1. At ASUS ROG Summer 2013, TaeJa beat HyuN 3-2 (ref)

2. HyuN can be deadly in the early game. He’s 9-0 before 12 minutes and 13-2 before 16 minutes (ref)

I used the data from Spawning Tool to generate all of these statistics. Notably, replays for WCS 2013 season 3 and the current WCS season have not been released, so those are not included in the current sample. Some players have more data from other recent tournaments, whereas others may be based on older data with different play styles.

If you get chance, please poke around with the data on Spawning Tool and share any other interesting trends you find!