An adaptive Zerg bot for StarCraft II that implements dynamic build orders and intelligent unit control.
- Dynamic scouting and enemy detection
- Adaptive build order system
- Intelligent unit grouping and control
- Automated testing framework
- CMake
- Starcraft 2 (Windows) (Linux)
- Starcraft 2 Map Packs, The maps we will be using are in the
Ladder 2017 Season 1pack. Read the instructions for how to extract and where to place the maps.
Download and install Visual Studio 2022 if you need it.
# Clone the project
git clone --recursive https://github.com/onPhone/onPhone.git
cd onPhone
# Create build directory.
mkdir build && cd build
# Generate VS solution.
cmake ../ -G "Visual Studio 17 2022"
# Build the project using Visual Studio.
start OnPhone.slnNote: Try opening the SC2 game client before installing. If the game crashes before opening, you may need to change your Share name:
- Open
System Preferences - Click on
Sharing - In the
Computer Nametextfield, change the default 'Macbook Pro' to a single word name (the exact name shouldn't matter, as long as its not the default name)
To build, you must use the version of clang that comes with MacOS.
# Clone the project
git clone --recursive https://github.com/onPhone/onPhone.git
cd onPhone
# Create build directory.
mkdir build && cd build
# Set Apple Clang as the default compiler
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
# Generate a Makefile
# (Use 'cmake -DCMAKE_BUILD_TYPE=Debug ../' if debug info is needed)
cmake -DCMAKE_BUILD_TYPE=Release ../
# Build
makeThe Linux version is headless, meaning that you will not be able to see your bot
First, download the Linux package.
Unzip it to your home directory.
The directory should read as /home/<USER>/StarCraftII/.
Rename the Maps directory to lowercase, and place any downloaded maps inside this directory:
mv /home/<USER>/StarCraftII/Maps /home/<USER>/StarCraftII/mapsFinally, create a directory (note the added space) which contains a file ExecuteInfo.txt, which lists the executable directory:
mkdir "/home/<USER>/StarCraft II"
echo "executable = /home/<USER>/StarCraftII/Versions/Base75689/SC2_x64" > "/home/<USER>/StarCraft II/ExecuteInfo.txt"The Base75689 will need to match the correct version which matches the version you downloaded. To check, navigate to /home/<USER>/StarCraftII/Versions/.
Remember to replace <USER> with the name of your user profile.
In addition to competing against other bots using the Sc2LadderServer, this bot can play against the built-in AI by specifying command line arguments.
You can find the build target under the bin directory. For example, in your root directory:
# Windows
./build/bin/OnPhone.exe -c -a zerg -d Hard -m CactusValleyLE.SC2Map
# Mac
./build/bin/OnPhone -c -a zerg -d Hard -m CactusValleyLE.SC2Mapwill result in the bot playing against the zerg built-in AI on hard difficulty on the map CactusValleyLE.
Or, you can use this shell script to play against the built-in AI:
# Windows
scripts/run.bat
# Mac
scripts/run.shRun comprehensive tests across multiple game configurations:
# Windows
scripts/test.bat
# Mac
scripts/test.shThe script will:
- Test against all races (Terran, Protoss, Zerg)
- Run through multiple difficulty levels
- Test on different maps
- Generate detailed statistics in
test-results-<x>.txt