# TorchCraft
**Repository Path**: nidao/TorchCraft
## Basic Information
- **Project Name**: TorchCraft
- **Description**: Connecting Torch to StarCraft
- **Primary Language**: C++
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-08-14
- **Last Updated**: 2024-06-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# TorchCraft
A bridge between [Torch](http://torch.ch/) and [StarCraft](http://us.blizzard.com/en-us/games/sc/).
A general overview of the system (and motivations for using TorchCraft) can be found in:
Synnaeve, G., Nardelli, N., Auvolat, A., Chintala, S., Lacroix, T., Lin, Z.,
Richoux, F. and Usunier, N., 2016. _TorchCraft: a Library for Machine Learning Research
on Real-Time Strategy Games_ - [arXiv:1611.00625](https://arxiv.org/abs/1611.00625).
## [Installation](docs/user/starcraft_in_windows.md)
Please follow the [installation instructions](docs/user/starcraft_in_windows.md).
You will need to have a license of StarCraft: Brood War.
TorchCraft is a BWAPI module that sends StarCraft data out over a ZMQ
connection. This lets you parse StarCraft data and interact with BWAPI from
anywhere. The TorchCraft client should be installed from C++, Python, or Lua.
We provide off the shelf solutions for Python and Lua:
Requirements:
- zstd-devel 1.1.4
- zeromq 4+
Remember to init submodules: `git submodule update --init --recursive`
Python setup: `pip install pybind11 && pip install .`
Lua setup (depends on [torch7](http://torch.ch/docs/getting-started.html)): `luarocks make *.rockspec`
We provide an example C++ CMake project in `examples/cpp/`
The hardest part of installing the server is actually setting up starcraft.
We detail three ways of doing this:
- [Use the standard Windows + StarCraft route, perhaps with a VM](/docs/user/starcraft_in_windows.md)
- [Use WINE](/docs/user/starcraft_in_wine.md)
- [Use OpenBW](/docs/user/openbw.md)
## Running TorchCraft
See [`examples/`](examples/) for a list of scripts that you can try.
In all cases, the `$server_ip` is the ip address of the machine running
StarCraft.
### StarCraft Server
Do whichever was installed:
#### Windows / WINE
1. Open `bwapi.ini` and set `ai = PATH\TO\BWEnv.dll` (or copy
ours from `config/bwapi.in`)
2. Start ChaosLauncher, enable `BWAPI DLL Injector [Release]`.
3. Press `Start`.
#### WINE
1. Open `bwapi.ini` and set `ai = PATH\TO\BWEnv.dll` (or copy
1. `wine bwheadless.exe -e $STARCRAFT/StarCraft.exe -l $STARCRAFT/bwapi-data/BWAPI.dll --headful` as detailed in the [WINE docs](/docs/user/starcraft_in_wine.md)
#### OpenBW
Something like:
`OPENBW_ENABLE_UI=0 BWAPI_CONFIG_AI__RACE=Terran BWAPI_CONFIG_AI__AI="BWEnv/build/BWEnv.so" BWAPI_CONFIG_AUTO_MENU__AUTO_MENU="SINGLE_PLAYER" BWAPI_CONFIG_AUTO_MENU__MAP=maps/micro/m5v5_c_far.scm BWAPI_CONFIG_AUTO_MENU__GAME_TYPE="USE MAP SETTINGS" TORCHCRAFT_PORT=11111 BWAPILauncher`
### TorchCraft Client
```bash
$ cd examples
$ th lua/simple_dll.lua -t $server_ip
$ python py/example.py -t $server_ip
```
## Other Documentation
- [Lua Replayer](/docs/user/replayer.md)
## Citation
Please cite the arXiv paper if you use TorchCraft in your work:
```
@article{synnaeve2016torchcraft,
title={TorchCraft: a Library for Machine Learning Research on Real-Time Strategy Games},
author={Synnaeve, Gabriel and Nardelli, Nantas and Auvolat, Alex and Chintala, Soumith and Lacroix, Timoth{\'e}e and Lin, Zeming and Richoux, Florian and Usunier, Nicolas},
journal={arXiv preprint arXiv:1611.00625},
year={2016}
}
```
## Contributing
See [Contributing](CONTRIBUTING.md)
Also check out the [code structure](/docs/contributor/code_structure.md)
and [PR process](/docs/contributor/pr_process.md)