StarCraft II Artifical Intelligence Application:
Predictive Bot using Generative Adversarial Networks
Tell Me More

Overview

SC2Reader

A python library that extracts data from various Starcraft II resources to power tools and services for the SC2 community.

Generative Adversarial Networks (GANs)

Generative Adversarial Networks implement a minimax game between two completely opposite types of networks - Generative vs. Discriminative networks. Discriminative networks are well known; they find a concept boundary to discriminate/classify between a set of values, or regress over them; i.e. they learn to predict a label given a feature set. Generative networks, on the other hand, learn to predict the feature set given a label; in essence, generate a 'fake' feature set that qualifies as that label, which the discriminator can't tell whether it came from the original data distribution, or was generated by the Generator network. This enables stacking the two networks together; feeding the output of the Generator to the Discriminator (which is trying to discriminate between data coming from the Generator vs. the original Data Distribution using Kullback-Leibler Divergence). Essentially it becomes a game where the Generator keeps trying to fool the Discriminator - and when it succeeds (i.e. the Discriminator fails), we have an optimal feature set!

On the Cloud

Powered by the Google Cloud Platform - enabling high-speed DL computations from a mere SSH client.

Our latest results (Raw log-level GAN output)

Portfolio

Purpose

Built for gamers, by gamers. StarCraft 2 players globally would like to hone skillsets to gain an edge in competitive scene. How do players know where they can improve? What are the players' weaknesses? How do the players compare to the perforamce of winning professionals? With a focus of evaluating game data, we wanted to create an analytics bot that analyzes large bytes of SC2 player replay data, evaluates, and concludes with helpful feedback.

Design & Technical Approach

Neural Networks Computational model based on structure and function of a biological neural network. Classifies game states in an adversarial setting, i.e. workers killed, buildings built, buildings destroyed, etc.

Generative Adversarial Networks Recently researched (Goodfellow et.al. 2014) algorithm to diversify input feature sets - allowing more DL insight to the data rather than generic constraints. Backpropagation takes place over the gradient of the Expectation (E) of the outputs of each of the Discriminator(D) and the Generator (G) networks. The Generator begins with a noise vector achieved from a Gaussian Parzen window - and adjusts that input vector based on how the Discriminator reacts to it - which simply reports it's KL-Divergence.

Unsupervised Machine Learning Machine Learning paradigm that involves attempting to learn datasets without explicit input-output pairs - rather we find an expected value and attempt to maximize that as much as D would allow. Utilizes unlabeled data to evaluate and conclude with feature domains. Algorithm comprehended game state events, incorporated weights to each, and outputted with associated areas for improvement per user, given replay data.

SC2Reader A python library that extracts data from various Starcraft II resources to power tools and services for the SC2 community. These include Replays, Maps, and Game Summaries. Retrieved information is converted to python-readable JSON format.


How We Did It

GCP's wide variety of instances would be our major helper - without it training would be impossible!

GitHub, as always, essential to any project; doesn't fail to come through one more time.

Keras! A lifesaver - a deep learning library meant to be used by humans - readable and codable by humans as well.

Using SC2reader, we were able to extract data from replays, reading into the code, and searching through every single property of the replay object - all backed by a test-driven approach. Albeit, slightly better managed documentation couldn't hurt!

With our personal typings for playerStats, which was an object mapping of SC2Reader's output, helped in serving the data to the network instantly.

Tech Stack

And Our Journey Using It





  • Week: 1

    Set up Starcraft. Finish setting up PySC2 & TensorFlow dev environments. Fork the pysc2-examples repository to test out the sample bots, and glean useful modules. Start designing adversarial planning structure, implementing basic GANs.

  • Week: 2 & 3

    Implement a neural network to train over initial datasets. Test difference between ANNs and GANs, and compare. Perfect neural network implementation, evaluation. Begin internal tracking and first application to StarCraft in an adversarial manner.

  • Week: 4 & 5

    Finish perfecting graphical appearance of the bot/improve user interaction experience. Begin closed alpha testing. Implement website to access deliverables using the frontend stack. Begin closed beta testing, collect user stories.

  • Week: 6-Final Week

    Begin open beta testing, plan for release. Implement improvements inferred from user stories/make necessary changes before first release.

  • Future:

    To Be Continued! Stay Tuned For Further Updates and more amazing features!

Our Amazing Team

Joshua McCoy

Advisor

Suraj Jena

Group Member

Mohammed Maysam

Group Member

Haris Wasim

Group Member

Anh Phung

Group Member

Jonathan Retterer

Group Member

.

Contact Us

  • Please enter your name.

  • Please enter your email address.

  • Please enter your phone number.

  • Please enter a message.