[TOC]

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

# Bot Development

### Bot Zip
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.  

### Bot Types
The Ladder supports multiple programming languages. To make sure the bot works on the ladder you must follow the following standards:

#### Python
Version: Python 3.7  
Bot called via run.py  

**python-sc2:** (Recommended for beginners)  
Popular interface for scripted and machine learning bots alike.  
Website: [python-sc2](https://github.com/BurnySc2/python-sc2)  
Video tutorials: <https://www.youtube.com/playlist?list=PLkelvgAj0mwzjVuJK4FBo7YR9ukXCzAsy>

**pysc2**  
Deepmind's interface - focussed around machine learning.  
Website: [pysc2](https://github.com/deepmind/pysc2)  

**sharpy-sc2:**  
A rapid bot development framework. Solid macro and micro right out of the box.  
Website: [sharpy-sc2](https://github.com/DrInfy/sharpy-sc2)  
starter kit: [Sharpy starter bot](https://github.com/DrInfy/sharpy-starter-bot)

#### C++
Can be compiled on Windows or Linux  
Windows: Bot called via botname.exe  
Linux: Bot called via botname  
Website: [cpp-sc2](https://github.com/alkurbatov/cpp-sc2/)  

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

#### GoLang

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

#### DotNetCore
Version: DotNetCore 2.2  
Bot called via botname.exe  
Example bot: [Example C# Bot](https://github.com/SimonPrins/ExampleBot)  

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

#### NodeJS (Outdated)
Bot called via botname.js  
Website: [node-sc2/core](https://github.com/node-sc2/core)  


# Using existing bots as a reference or starting point

It is generally useful to review some existing bots as reference in order to see how certain problems are solved by other authors, or to utilize these bots as a starting point in order to not have to solve these problems at all.

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 <https://ai-arena.net/bots/> or SC2AI <http://sc2ai.net> bots.

Note that if you choose to copy an existing bot, please make sure you have the bot author's permission and that you make attempts to modify/improve the bot in some way. It's also nice to note the origin of the bot in your new bot's biography on the website.

Alkurbatov also maintains a list of some open source bots: <https://github.com/alkurbatov/suvorov-bot/wiki/Open-source-StarCraft2-bots>

# Maps
Download the latest ladder pack from the [GitHub Repository](http://blzdistsc2-a.akamaihd.net/MapPacks/Ladder2019Season3.zip). (Password: 'iagreetotheeula')