← all repositories
alibaba/gym-starcraft

StarCraft meets OpenAI Gym, via Alibaba's glue gun

A bridge too far: wrapping Facebook's TorchCraft into a Gym environment for Brood War RL experiments.

527 stars Python ML Frameworks
gym-starcraft
Velocity · 7d
+0.2
★ / day
Trend
steady
star history

What it does

Gym-starcraft exposes StarCraft: Brood War as an OpenAI Gym environment. It sits on top of Facebook’s TorchCraft (the C++ bridge between Torch and the game) and a Python wrapper called torchcraft-py, so your RL agent can send actions and receive state through familiar Gym APIs.

The interesting bit

The project is essentially plumbing — three layers of dependencies (Gym, TorchCraft, torchcraft-py) to get a 1998 RTS engine talking to modern Python. The value is in not having to write that plumbing yourself. The README notes you can “skip the torch client part,” which hints at some decoupling from Torch’s Lua roots.

Key highlights

  • Wraps TorchCraft into standard Gym step() and reset() calls
  • Requires a live StarCraft server running BWAPI via Chaoslauncher — this is local or remote TCP, not a standalone simulator
  • Includes a random_agent.py example for basic connectivity testing
  • 527 stars suggests modest interest; marked “(In progress)” in the repo description
  • Installation is four steps across three separate projects

Caveats

  • README is sparse: no API docs, no observation/action space specifications, no benchmark results
  • Clone URL in install instructions points to deepcraft/gym-starcraft.git, not the alibaba/ org — possible fork confusion or stale docs
  • “In progress” label and minimal commit history suggest maintenance uncertainty

Verdict

Worth a look if you’re specifically targeting Brood War and need Gym compatibility, but expect to debug the dependency chain. For newer StarCraft II work, Blizzard’s pysc2 or DeepMind’s environment are more directly supported. This is a legacy stack for a legacy game.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.