How do I start?

StarCraft II API
I want in on this. I want to play with this so badly it hurts.

I remember stumbling accross old Brood War AI competitions and loving the idea so very much. Now StarCraft II is going to be a research bed for DeepMind... a project backed by Google?! I'm thrilled and I want to be involved however I can.

I don't claim to fully understand the capabilities that will be opened up to us, but I do see that there will be source code to a client app example in C++ to start and Python to possibly follow (Do I pitch in my vote here to expedite that Python example?)

Here's where I'm at:

I work in IT as a Systems Analyst who helps to find solutions, develops intermediate scripted customizations and workflows to suite the business process, then implements and supports those solutions ongoing.

I know Python pretty well, and I can manipulate C++ with a little help from Google. I know nothing about AI concepts beyond what I've learned intrinsically in my profession and through my devout interest in video games.

As a young adult I tried to write a program that analyzed the input of online Roulette spins and tried to forecast the next picks. I theorized that the computer randomization was imperfect and that correlations could be exploited. I improved the odds over hundreds of thousands of plays to be better than the -2.7% baseline of a European table, but not enough to become profitable (never above 0% for a prolonged period). It was fun. I learned Python this way. It's a period of my life that I'm proud of and I remember fondly.

I'm also a Go player, albeit not a very good one. The game sparked my interest because it baffled computers... until AlphaGo.

Last but not least, I'm a huge StarCraft II fan. I never made it past Platinum because I get serious shakes from the ladder anxiety, but I adore the game.

Where do I go from here? What should I do while awaiting the SC2/DeepMind API and client examples?

Would it behoove me to start playing with BWAPI and other BroodWar AI tools? (many found here:

Are there any books I should check out (particularly audiobooks? My commute sucks...)

What can I study? Where can I learn? How can I build up to be ready to play with these new toys?

Who wants to get together and just talk this stuff through? Is there a community starting up yet, or is it too early to seek each other out?
First of all, a subreddit was started on this topic:
I'm sure it will be active when the API is released.

Secondly, I'm not sure what aspect of the development you want to be involved in. If you're going to solo everything, you're certainly going to need to read up on some basic deep learning and reinforcement learning. In addition to this, it'll be useful to get some hands-on-experience by experimenting with TensorFlow, as you seem to be quite fond of Google.

See if you understand this paper. You don't have to understand all the mathematics behind it, just the principles of the technique and the point of the architecture. If it's hard to understand, start off with something like this:

More resources:

If you're really dedicated, I can recommend
It's well written and very actual, and you might recognize the author: Yoshua Bengio
Thanks so much GrackyChan! You've reinforced some things that I've started exploring (Deep Learning, TensorFlow) and I very much appreciate all of the resources!

I have no idea where I'll fit in at this juncture... which is why I want to study up to prepare and hope to not get left behind. lol.
It really depends on what you expect out of it. I'm in a similar position, I really enjoyed creating and playing against BW AIs long time ago (quite simple custom scripts, before BWAPI was there). I would like to get involved with SC2 ones as well, but it's been a while I haven't done software development so I'm just working on some python side-project to get familiar with it.

I am not sure about going into deep learning, I will probably try to do something easier even though it probably won't be as efficient in the long run.

For you, there are probably quite a few things that you can do already, regarding design and implementation of the bot (even if obvisouly you won't be able to do everything yet or test it).
For instance you could parse the build order from a liquipedia page or spawningtool so that in the future a player could just give such URL to your bot and it would try to use corresponding build order. As a player it could be quite fun to see how well a given build order does or to train against specific build orders.

Obviously without having the API ready you may do useless work or things not compatible with the API provided.

Join the Conversation

Return to Forum