Bot-the-Builder

Implement a bot which will "learn" how to build a predetermined amount of marines. Along with a q-learning bot we provide feedback on a replay in terms of probability of winning per time step.

Changelog

  1. We are now focusing on having the bot accomplish a goal such as build 20 marines by a certain unit of time.
  2. We will be branching off into Q-learning and the use of [Weka] to determine the outcomes that a player should take.
  3. We have decided to implement K-Nearest Neighbor (KNN) in order to deterimne the probability of a player winning at any given time.

Replay Parser

  • The parser iterates over the 1k+ replays selecting 91 predetermined labels
  • It dumps the data of the 91 lables by time step into a csv file "Units-1311.csv"
  • It is also used to parse through the replay which we want to make predictions into another csv file "parsed_replay.csv"

K-Nearest Neighbor

  • We parse over 1k replays saving at every predetermined time interval
  • We select 91 labels of interest such as Barracks, BarracksTechLab, etc. to help create the model
  • The 92nd label is the win label which will be used as our Y value
  • The parsed replays are dumped into a .csv file which are loaded into a pandas DataFrame
  • The DataFrame is sliced to fit the requirements of Scikit-learn's KNeighborsClassifier algorithm
  • Export into 4 different csv files pertaining to different values of k: 5, 10, 15, 20

Graphing GUI

  • We created a GUI using Tkinter and matplotlib to plot the probailities of a win while monitoring a replay
  • The GUI uploads the multiple csv files generated by the KNN script and plots the values
  • x-axis: the time step of the replay
  • y-axis: the probability of the win given a particular k value

Q-Learning

  • Try to build 20 marines as fast and as efficiently as possible using Q learning.
  • For more information, visit the README in the Q Learning folder.

Weka

  • Gather large amounts of replay data
  • Determine which points of data to retrieve and dump into a csv file
  • Upload csv file to Weka GUI

Resources