MCPcopy Create free account
hub / github.com/Blizzard/s2client-api

github.com/Blizzard/s2client-api @1.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.1.0 ↗ · + Follow
1,188 symbols 3,496 edges 196 files 119 documented · 10% updated 6y ago1.1.0 · 2017-09-01★ 1,674100 open issues

Browse by type

Functions 912 Types & classes 276
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

s2client-api

The StarCraft II API provides access to in-game state observation and unit control. The API is a wrapper around protobuf defined protocol over a websocket connection.

While it's possible to write directly to the protocol, this library provides a C++ and class-based abstraction. You can see a simple example below.

#include <sc2api/sc2_api.h>

#include <iostream>

using namespace sc2;

class Bot : public Agent {
public:
    virtual void OnGameStart() final {
        std::cout << "Hello, World!" << std::endl;
    }

    virtual void OnStep() final {
        std::cout << Observation()->GetGameLoop() << std::endl;
    }
};

int main(int argc, char* argv[]) {
    Coordinator coordinator;
    coordinator.LoadSettings(argc, argv);

    Bot bot;
    coordinator.SetParticipants({
        CreateParticipant(Race::Terran, &bot),
        CreateComputer(Race::Zerg)
    });

    coordinator.LaunchStarcraft();
    coordinator.StartGame(sc2::kMapBelShirVestigeLE);

    while (coordinator.Update()) {
    }

    return 0;
}

You can find a detailed tutorial on what this code does in docs/tutorial1.md.

Building

This library uses CMake to generate project files. It builds with Visual Studio on Windows and Makefiles on the other platforms. It relies on the following contrib packages.

  1. Civetweb
  2. Protobuf
  3. (optional) SDL

Follow the instructions for submodules and building in docs/building.md.

Coding Standard

Coding Standard

We do our best to conform to the Google C++ Style Guide with the exception that we use four space tabs instead of two space tabs.

Documentation

You can find documentation for the api in docs/html, open index.html to view it in your browser. We generate our documentation using Doxygen

To generate the documentation yourself.

  1. Download and install doxygen
  2. From the root of the project run: doxygen Doxyfile
  3. Commit and push the generated documentation files in a seperate commit that contains documentation changes only, no code changes.

Additional Downloads

Maps and Replays

This repository only comes with a few maps for testing.

Additional maps and replays can be found here.

Precompiled Libs

If you are using Visual Studio 2017 and just want precompiled library files you can download the following package:

Precompiled Libs

Other Libraries

Additional community built AI libraries can be found here.

If you are new to programming, the CommandCenter framework may be a good starting point.

Core symbols most depended-on inside this repo

Shape

Method 700
Class 250
Function 212
Enum 26

Languages

C++93%
TypeScript7%

Modules by API surface

tests/test_unit_command.cc195 symbols
src/sc2api/sc2_client.cc115 symbols
examples/common/bot_examples.cc76 symbols
docs/html/jquery.js65 symbols
src/sc2api/sc2_coordinator.cc46 symbols
tests/test_ability_remap.cc27 symbols
tests/test_observation_interface.cc26 symbols
tests/test_feature_layer.cc25 symbols
src/sc2utils/sc2_manage_process.cc24 symbols
include/sc2api/sc2_client.h22 symbols
tests/test_snapshots.cc21 symbols
include/sc2api/sc2_gametypes.h21 symbols

For agents

$ claude mcp add s2client-api \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page