[TOC]

# Terms Of Usage
Please see the [Terms Of Usage](https://aiarena.net/wiki/rules/) Page

# Bot Development

### Bot Types
The Ladder supports multiple programming languages listed below. Also see the [Awesome SC2 AI](https://github.com/aiarena/awesome-sc2-ai) list.

#### **Python**
* **[python-sc2](https://github.com/BurnySc2/python-sc2):** (Recommended for beginners): Most popular/supported interface for scripted and machine learning bots alike.  
[Example bots](https://github.com/BurnySc2/python-sc2/tree/develop/examples)  
    * [Easily Create A Terran Bot in Python | ESChamp Guides](https://www.youtube.com/watch?v=6nfetlOOtY0)
    * [StarCraft 2 Bot: Python Setup Guide](https://youtu.be/MnZkimzoaLA)  
    * [Bits of Code Builds: Making a Carrier Rush Bot!](https://www.youtube.com/watch?v=mpjo4xF8JOs)
    * [how to code an AI BOT • STARCRAFT 2](https://youtu.be/qpxdB67wJIk)
    *  **[sharpy-sc2](https://github.com/DrInfy/sharpy-sc2)**: A rapid bot development framework. Solid macro and micro right out of the box.  
Starter kit: [Sharpy starter bot](https://github.com/DrInfy/sharpy-starter-bot)

- **[pysc2](https://github.com/deepmind/pysc2):**  Deepmind's interface - focused around machine learning.  
    * [Build a Zerg Bot with PySC2 2.0](https://itnext.io/build-a-zerg-bot-with-pysc2-2-0-295375d2f58e) 
    * [Building a Smart PySC2 Agent](https://chatbotslife.com/building-a-smart-pysc2-agent-cdc269cb095d) - Series of tutorials using Q-learning using an older version of the framework.

#### **C++**
Can be compiled on Windows or Linux  
Windows: Bot called via botname.exe  
Linux: Bot called via botname  

**cpp-sc2**  
Base C++ API for sc2.  
Website: [cpp-sc2](https://github.com/cpp-sc2/cpp-sc2/) 

**CommandCenter**  
A feature-rich starting bot for C++.  
Website: [CommandCenter](https://github.com/cpp-sc2/commandcenter)  

#### **Java**
Version: Java 17 (OpenJDK)  
Bot called via botname.jar  
Website: [ocraft-s2client](https://ocraft.github.io/ocraft-s2client/) 

#### **.NET Core**
- **Tyr**  
-- [Bare wrapper bot](https://github.com/SimonPrins/ExampleBot)  
-- [Tyr Bot](https://github.com/SimonPrins/TyrSc2)
- **Schmidt**   
-- [NydusNetwork API Wrapper](https://adequatesource.com/nydusnetwork/)  
-- [Hello Marine tutorial for Abathur Framework](https://adequatesource.com/hello-marine/)  
- **[Sharky Framework](https://github.com/sharknice/Sharky)**

#### **GoLang**

Bot called via botname  
Website: [go-sc2ai](https://github.com/chippydip/go-sc2ai)   

#### **Rust**
Bot called via botname
Website: [rust-sc2](https://github.com/UltraMachine/rust-sc2)

#### **NodeJS**  
Version: 12  
Bot called via botname.js  
Website: [node-sc2/core (Current working branch)](https://github.com/node-sc2/core/tree/wip_0.1.0)  


# Using existing bots as a reference or starting point

See the rules regarding use of existing bots here: [Rules: Using existing bots as a reference or starting point](https://aiarena.net/wiki/rules/#wiki-toc-more-on-using-existing-bots-as-a-reference-or-starting-point)

Some bots on the bot ladders are open source and can either be downloaded or provide links to their source.  
Browse the list of AI Arena bots <https://aiarena.net/bots/>.
Alkurbatov also maintains a list of some open source bots: <https://github.com/alkurbatov/suvorov-bot/wiki/Open-source-StarCraft2-bots>

# Maps
You can download current and old maps from the [maps page](https://aiarena.net/wiki/maps/)

# Bot Zip
To compete on the AI Arena ladder, you'll need to [register](https://aiarena.net/accounts/register/) an account, zip up your bot files and [upload them as a new bot](https://aiarena.net/botupload/).

To make sure the bot works on the ladder you must adhere to the following standards:

For a successful upload the Bot must be packed using zip. (Max 50 MB)  
Please make sure that the file the bot is called via (e.g. the executable) is in the root path after extraction (**Don't zip the directory**).

**Right:**
```
MyBot.zip
- MyBot.exe
- data/
- etc
```

**Wrong:**
```
MyBot.zip
- MyBot/
  - MyBot.exe
  - data/
  - etc
```

### Data
The bots may write to a `./data` directory. Any files in the data directory will persist between games.

The data can be downloaded via profile page.