StarCraft II Client - protocol definitions used to communicate with StarCraft II.

Overview

Overview

The StarCraft II API is an interface that provides full external control of StarCraft II.

This API exposes functionality for developing software for:

  • Scripted bots.
  • Machine-learning based bots.
  • Replay analysis.
  • Tool assisted human play.

The API is available in the retail Windows and Mac clients. There are also Linux clients available at the download links below.

Contents

Official

  • Protocol
  • Reference C++ implementation
    • Library designed for building a scripted bots using the API.
    • Repository
  • StarCraft II Linux Packages
  • Maps
    • Maps from the 1v1 ladder and other custom maps.
    • Download
  • Replays
    • Replay packs of 1v1 ladder games.
    • Download

Community

  • PySC2
    • DeepMind's python environment wrapper.
    • Repository
  • CommandCenter
    • A robust architecture for quickly developing Starcraft AI bots.
    • Repository
  • Bot Ladders
    • SC2AI - Unofficial community organized ladder.
    • AI Arena - Unofficial community organized ladder.
  • Community Wiki
    • Unofficial wiki of documentation and tutorials.
    • Website
  • Discord Server
    • Unofficial server for discussing AI questions and projects.
    • Invite Link
  • Facebook Group
    • Unofficial community page.
    • Website

Downloads

To access the linux packages, map packs and replay packs, you must agree to the AI and Machine Learning License

The files are password protected with the password 'iagreetotheeula'.

By typing in the password ‘iagreetotheeula’ you agree to be bound by the terms of the AI and Machine Learning License

Linux Packages

Map Packs

This is the previous version of the Ladder 2017 Season 3 Map Pack

Replay Packs

Installing Map and Replay Packs

All additional game data should be extracted within the installation directory.

The default installation directories are:

  • Windows: C:\Program Files (x86)\StarCraft II\
  • Mac: /Applications/StarCraft II/

On Linux, the installation directory is the folder you extracted the linux package into.

The folder structure is the same accross all platforms. However you may need to create some folders if they are missing.

Standard folder layout:

  • StarCraft II/
    • Battle.net/
    • Maps/
    • Replays/
    • SC2Data/
    • Versions/

Map Packs

  • Extract the zip file directly into the "Maps" folder.
  • In the API, a map can be specified as either an absolute path or its relative path inside this "Maps" folder.

Replay Packs

  • Replace the "Battle.net" and "Replays" folders with the ones in the zip file.
  • In the API, a replay must be specified as an absolute path.

Stable IDs

These define the action mappings from ability ids in the protobuf api to the internals of the game. They also define some general ids that combine multiple abilities that have a similar semantic meaning (eg various forms of burrow, cancel, lift/land, etc). The stableid.json is updated occasionally with the game, but can also be updated manually by downloading the stableid.json from here and placing it in the root of your StarCraft II directory.

Comments
  • Chat Interaction

    Chat Interaction

    I'm currently building a mini game for which I need the ability for agents to both send chat messages as well as to receive them.

    For sending chat message, I noticed the chat field in the Action message. However, I can't figure out how to correctly use it. If I send a request of

    action {
      actions {
        chat {
          channel: Broadcast
          message: "Chat Test Message"
        }
      }
    }
    

    The response is always an error

    action {
      result: Error
    }
    status: in_game
    

    However, there seems to be no way to get more information about a request error from the API, so I don't know what I'm doing wrong here.

    If I send the chat field together with a normal action (for example, to select a rectangle)

    action {
      actions {
        action_feature_layer {
          unit_selection_rect {
            selection_screen_coord {
              p0 {
                x: 0
                y: 0
              }
              p1 {
                x: 63
                y: 63
              }
            }
            selection_add: false
          }
        }
        chat {
          channel: Broadcast
          message: "Chat Test Message"
        }
      }
    }
    

    the game responds with

    action {
      result: Success
    }
    status: in_game
    

    I can see in-game that the selection action is performed, however, no message is displayed in the chat.

    Am I using the API in the wrong way or is chat sending functionality not yet implemented on the client? I'm testing this on Windows, by the way.

    Furthermore, regarding the API for receiving chat messages, I have also never observed that the chat field in the ReponseObservations message was set.

    As a side note, trying to use DebugChat with a request a la

    debug {
      debug {
        chat {
          message: "Debug Chat Test Message"
        }
      }
    }
    

    seems to have no effect on the game.

    opened by lschmelzeisen 3
  • generating protos with protoc

    generating protos with protoc

    I'm trying to generate the protos from a git submodule in my project - running the following command errors out.

    $ protoc -I s2client-proto/s2clientprotocol --rust_out src/protos --proto_path s2client-proto/s2clientprotocol s2client-proto/s2clientprotocol/*.proto
    s2clientprotocol/common.proto: File not found.
    data.proto: Import "s2clientprotocol/common.proto" was not found or had errors.
    data.proto:82:12: "SC2APIProtocol.Race" seems to be defined in "common.proto", which is not imported by "data.proto".  To use it here, please add the necessary import.
    

    I've also tried created a symbolic link and executing this command but get a lot of "file not found" and "is not defined".

    $ protoc -I ./s2clientprotocol --rust_out ./src/protos --proto_path ./s2clientprotocol ./s2clientprotocol/sc2api.proto
    

    Any advise would greatly be appreciated.

    opened by ttdonovan 3
  • Update Download Link URLs in Readme.md

    Update Download Link URLs in Readme.md

    https://security.googleblog.com/2019/10/no-more-mixed-messages-about-https_3.html "https:// pages can only load secure https:// subresources. " is preventing the 1-click download links, since they use http and Github uses https (if I understand correctly). Updated links to https. Working as intended in my fork.

    Current work around is to click the link directly from the webpage source code (hover over link, right-click, select 'inspect' ... click on the link after "href=". Or to right-click the link and select 'copy link address' and post that in browser URL address bar.

    opened by Nickrader 2
  • Morph archon with raw interface.

    Morph archon with raw interface.

    It is supposed to select two high templar before morphing archon. But I don't see select action in ActionRaw. Is it possible to morph archon with just raw interface?

    opened by linshiyx 2
  • GameSettings' map name always get overwritten

    GameSettings' map name always get overwritten

    Starting off with the given examples, passing in map name never seemed to work.

    Observations:

    1. There seems to be no public getter to retrieve the map name inside GameSetting of the coordinator.
    2. StartGame() and CreateGame() both takes const string& as param. Use empty string as default argument. Will always overwrite the map name with the passed in value.

    With these two combined, I'm in a funny scenario. After passing in a map name through command-line argument, I can't read the map name from the coordinator and use it as param for Start/CreateGame().

    opened by T-Jin 2
  • Fatal error occurred: 'e_errorIdDamagedRepairable'

    Fatal error occurred: 'e_errorIdDamagedRepairable'

    Hitting this on 4.10.0-33-generic #37~16.04.1-Ubuntu SMP

     ~/StarCraftII/Versions/Base55958/SC2_x64 -listen 127.0.0.1 -port 9999                                                                                                                                       1 ↵
    Version: B55958 (SC2.3.16)
    Build: Jul 31 2017 13:19:41
    Command Line: '"/home/oars/StarCraftII/Versions/Base55958/SC2_x64" -listen 127.0.0.1 -port 9999'
    Starting up...
    Startup Phase 1 complete
    Fatal error encountered!
    Backtrace:
    /home/oars/StarCraftII/Versions/Base55958/SC2_x64[0x653068]
    /home/oars/StarCraftII/Versions/Base55958/SC2_x64[0x653aa0]
    /home/oars/StarCraftII/Versions/Base55958/SC2_x64[0x6534f2]
    /home/oars/StarCraftII/Versions/Base55958/SC2_x64[0x5f19e3]
    /home/oars/StarCraftII/Versions/Base55958/SC2_x64[0x19348d5]
    /home/oars/StarCraftII/Versions/Base55958/SC2_x64[0x5ed44d]
    /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f8b9c70f830]
    /home/oars/StarCraftII/Versions/Base55958/SC2_x64[0x5ed2d9]
    Error condition code: '9'
    Error suffix: 'Error'
    Error preface: 'A fatal error occurred:'
    Error failure: 'e_errorIdDamagedRepairable'
    Error details: '"AppErrors.txt"
    NGDP:"B56787" != Exe:"B55958"'
    Error description: 'AppErrors.txt'
    [1]    16626 abort (core dumped)  ~/StarCraftII/Versions/Base55958/SC2_x64 -listen 127.0.0.1 -port 9999
    

    Any suggestions or further logs I can provide?

    opened by oars 2
  • Add ability to set player names in bot games

    Add ability to set player names in bot games

    Currently when I add a bot to a game, all the names are set to 'foo[xxxx]'. It would be good if I could set the name to a custom value to easier see which agent is controlling which player.

    opened by Cryptyc 2
  • Client version management

    Client version management

    In light of major upcoming changes, I'm curious if there's a way to manage client versions and if yes, how will it affect client <-> API <-> pysc2 communication.

    My concern is that otherwise these massive changes essentially void some research efforts (i.e. trained agents will break due to key units missing or behaving differently).

    opened by inoryy 2
  • Chat is not working, sending messages results in error

    Chat is not working, sending messages results in error

    Scenario

    Game is created with two participants, a participant (my bot) and an easy computer. My bot joins to the game. Game info, game data and the first observation are requested. Before calling step, my bot sends a chat message gl hf.

    I also tried sending the message only after a few frames, or sending it between every step, but the results were same.

    Result

    Expected: ActionResult.Success Actual: ActionResult.Error

    Game itself doesn't display any chat messages send by my bot. Player can still send messages normally by opening the chat, typing in the message and sending it.

    Messages

    Request:

    action {
      actions {
        chat {
          channel: Team
          message: "gl hf"
        }
      }
    }
    

    Response:

    action {
      result: Error
    }
    status: in_game
    
    opened by Dentosal 2
  • How can I quickly restart the game when I am multiple players?

    How can I quickly restart the game when I am multiple players?

    Multiple players means multiple processes, so the only way i know is leave game and re-join the game is through controllers, but it will costs 3-4 seconds, which is too slow for reinforcement learning training. Anybody know how to slove this?

    opened by dooliu 1
  • custom barracks

    custom barracks

    await self.build(UnitTypeId.BARRACKS, near=cc.position.towards(self.game_info.map_center, 8)) build a custom barracks.

        ability_id.py
    
    
        BARRACKSTECHLABMORPH_BUILDREACTORBARRACKS = 5001
        BARRACKSTECHLABMORPH_TECHREACTOR2 = 5002
        BARRACKSADDONS=5003
        BARRACKSTECHREACTOR=5004
        BARRACKSLIFTOFF=5005
    
    2021-03-18 23:14:59.626 | INFO     | sc2.protocol:_execute:72 - Client status changed to Status.launched (was None)
    2021-03-18 23:14:59.762 | INFO     | sc2.protocol:_execute:72 - Client status changed to Status.launched (was None)
    2021-03-18 23:14:59.764 | INFO     | sc2.controller:create_game:36 - Creating new game
    2021-03-18 23:14:59.766 | INFO     | sc2.controller:create_game:37 - Map:     沙漠风暴经典版work
    2021-03-18 23:14:59.768 | INFO     | sc2.controller:create_game:38 - Players: Bot WorkerRushBot(Terran), Bot CyclonePush(Terran)
    2021-03-18 23:14:59.773 | INFO     | sc2.protocol:_execute:72 - Client status changed to Status.init_game (was Status.launched)
    2021-03-18 23:15:16.007 | INFO     | sc2.protocol:_execute:72 - Client status changed to Status.in_game (was None)
    2021-03-18 23:15:16.010 | INFO     | sc2.main:_play_game:328 - Player 2 - Bot CyclonePush(Terran)
    2021-03-18 23:15:16.063 | INFO     | sc2.protocol:_execute:72 - Client status changed to Status.in_game (was None)
    2021-03-18 23:15:16.068 | INFO     | sc2.main:_play_game:328 - Player 1 - Bot WorkerRushBot(Terran)
    2021-03-18 23:15:17.427 | ERROR    | sc2.main:_play_game_ai:297 - AI step threw an error
    Traceback (most recent call last):
    
      File "d:/python-sc2/python-sc2\1.py", line 45, in <module>
        main()
        └ <function main at 0x00000225409363A0>
    
      File "d:/python-sc2/python-sc2\1.py", line 32, in main
        sc2.run_game(
        │   └ <function run_game at 0x00000225603B9D30>
        └ <module 'sc2' from 'd:\\python-sc2\\python-sc2\\sc2\\__init__.py'>
    
      File "d:\python-sc2\python-sc2\sc2\main.py", line 596, in run_game
        result = asyncio.get_event_loop().run_until_complete(
                 │       └ <built-in function get_event_loop>
                 └ <module 'asyncio' from 'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\\li...
    
      File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py", line 603, in run_until_complete
        self.run_forever()
        │    └ <function ProactorEventLoop.run_forever at 0x000002254116E9D0>
        └ <ProactorEventLoop running=True closed=False debug=False>
    
      File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\windows_events.py", line 316, in run_forever
        super().run_forever()
    
      File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py", line 570, in run_forever
        self._run_once()
        │    └ <function BaseEventLoop._run_once at 0x00000225410DF040>
        └ <ProactorEventLoop running=True closed=False debug=False>
    
      File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py", line 1859, in _run_once
        handle._run()
        │      └ <function Handle._run at 0x000002254104ADC0>
        └ <Handle <TaskWakeupMethWrapper object at 0x0000022560683E20>(<Future finished result=None>)>
    
      File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\events.py", line 81, in _run
        self._context.run(self._callback, *self._args)
        │    │            │    │           │    └ <member '_args' of 'Handle' objects>
        │    │            │    │           └ <Handle <TaskWakeupMethWrapper object at 0x0000022560683E20>(<Future finished result=None>)>
        │    │            │    └ <member '_callback' of 'Handle' objects>
        │    │            └ <Handle <TaskWakeupMethWrapper object at 0x0000022560683E20>(<Future finished result=None>)>
        │    └ <member '_context' of 'Handle' objects>
        └ <Handle <TaskWakeupMethWrapper object at 0x0000022560683E20>(<Future finished result=None>)>
    
      File "d:\python-sc2\python-sc2\sc2\main.py", line 479, in _host_game
        result = await _play_game(
                       └ <function _play_game at 0x00000225603B9790>
    
      File "d:\python-sc2\python-sc2\sc2\main.py", line 333, in _play_game
        result = await _play_game_ai(client, player_id, player.ai, realtime, step_time_limit, game_time_limit)
                       │             │       │          │      │   │         │                └ None
                       │             │       │          │      │   │         └ None
                       │             │       │          │      │   └ False
                       │             │       │          │      └ <__main__.WorkerRushBot object at 0x0000022540B84370>
                       │             │       │          └ <sc2.player.Bot object at 0x0000022540B346A0>
                       │             │       └ 1
                       │             └ <sc2.client.Client object at 0x0000022560616850>
                       └ <function _play_game_ai at 0x00000225603B9700>
    
    > File "d:\python-sc2\python-sc2\sc2\main.py", line 247, in _play_game_ai
        await ai.on_step(iteration)
              │  │       └ 0
              │  └ <function WorkerRushBot.on_step at 0x0000022540B94310>
              └ <__main__.WorkerRushBot object at 0x0000022540B84370>
    
      File "d:/python-sc2/python-sc2\1.py", line 22, in on_step
        if self.can_afford(UnitTypeId.BARRACKS):
           │    │          │          └ UnitTypeId.BARRACKS
           │    │          └ <enum 'UnitTypeId'>
           │    └ <function BotAI.can_afford at 0x000002255FB1B310>
           └ <__main__.WorkerRushBot object at 0x0000022540B84370>
    
      File "d:\python-sc2\python-sc2\sc2\bot_ai.py", line 737, in can_afford
        cost = self.calculate_cost(item_id)
               │    │              └ UnitTypeId.BARRACKS
               │    └ <function BotAI.calculate_cost at 0x000002255FB1B280>
               └ <__main__.WorkerRushBot object at 0x0000022540B84370>
    
      File "d:\python-sc2\python-sc2\sc2\bot_ai.py", line 699, in calculate_cost
        cost = self._game_data.calculate_ability_cost(unit_data.creation_ability)
               │    │          │                      │         └ <property object at 0x000002255FAF9720>
               │    │          │                      └ UnitTypeData(name=Barracks)
               │    │          └ <functools._lru_cache_wrapper object at 0x000002255FA5F790>
               │    └ <sc2.game_data.GameData object at 0x0000022560623FD0>
               └ <__main__.WorkerRushBot object at 0x0000022540B84370>
    
      File "d:\python-sc2\python-sc2\sc2\game_data.py", line 37, in calculate_ability_cost
        assert isinstance(ability, AbilityData), f"C: {ability}"
                          │        └ <class 'sc2.game_data.AbilityData'>
                          └ None
    
    AssertionError: C: None
    2021-03-18 23:15:17.656 | ERROR    | sc2.main:_play_game_ai:298 - Error: C: None
    2021-03-18 23:15:17.658 | ERROR    | sc2.main:_play_game_ai:299 - Resigning due to previous error
    2021-03-18 23:15:17.661 | INFO     | sc2.main:_play_game:335 - Result for player 1 - Bot WorkerRushBot(Terran): Defeat
    2021-03-18 23:15:18.747 | INFO     | sc2.protocol:_execute:72 - Client status changed to Status.ended (was Status.in_game)
    2021-03-18 23:15:18.790 | INFO     | sc2.main:_play_game:335 - Result for player 2 - Bot CyclonePush(Terran): Victory
    2021-03-18 23:15:19.239 | INFO     | sc2.protocol:_execute:72 - Client status changed to Status.launched (was Status.in_game)
    2021-03-18 23:15:19.243 | INFO     | sc2.protocol:_execute:72 - Client status changed to Status.quit (was Status.launched)
    2021-03-18 23:15:19.245 | INFO     | sc2.sc2process:_close_connection:231 - Closing connection at 23501...
    2021-03-18 23:15:19.249 | INFO     | sc2.sc2process:kill_all:37 - kill_switch: Process cleanup for 2 processes
    2021-03-18 23:15:19.251 | INFO     | sc2.sc2process:_clean:240 - Cleaning up...
    2021-03-18 23:15:19.767 | INFO     | sc2.sc2process:_clean:273 - Cleanup complete
    2021-03-18 23:15:19.769 | INFO     | sc2.sc2process:_clean:240 - Cleaning up...
    2021-03-18 23:15:20.784 | INFO     | sc2.sc2process:_clean:273 - Cleanup complete
    2021-03-18 23:15:20.788 | INFO     | sc2.protocol:__request:47 - Cannot receive: Game has already ended.
    2021-03-18 23:15:20.792 | INFO     | sc2.sc2process:_close_connection:231 - Closing connection at None...
    2021-03-18 23:15:20.795 | INFO     | sc2.sc2process:kill_all:37 - kill_switch: Process cleanup for 2 processes
    2021-03-18 23:15:20.797 | INFO     | sc2.sc2process:_clean:240 - Cleaning up...
    2021-03-18 23:15:20.799 | INFO     | sc2.sc2process:_clean:273 - Cleanup complete
    2021-03-18 23:15:20.801 | INFO     | sc2.sc2process:_clean:240 - Cleaning up...
    2021-03-18 23:15:20.804 | INFO     | sc2.sc2process:_clean:273 - Cleanup complete
    Traceback (most recent call last):
      File "d:/python-sc2/python-sc2/1.py", line 45, in <module>
        main()
      File "d:/python-sc2/python-sc2/1.py", line 32, in main
        sc2.run_game(
      File "d:\python-sc2\python-sc2\sc2\main.py", line 596, in run_game
        result = asyncio.get_event_loop().run_until_complete(
      File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py", line 616, in run_until_complete
        return future.result()
      File "d:\python-sc2\python-sc2\sc2\main.py", line 557, in _join_game
        await client.quit()
      File "d:\python-sc2\python-sc2\sc2\protocol.py", line 87, in quit
        await self._execute(quit=sc_pb.RequestQuit())
      File "d:\python-sc2\python-sc2\sc2\protocol.py", line 68, in _execute
        response = await self.__request(sc_pb.Request(**kwargs))
      File "d:\python-sc2\python-sc2\sc2\protocol.py", line 36, in __request
        await self._ws.send_bytes(request.SerializeToString())
      File "C:\Users\wwwfe\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\aiohttp\client_ws.py", line 155, in send_bytes
        await self._writer.send(data, binary=True, compress=compress)
      File "C:\Users\wwwfe\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\aiohttp\http_websocket.py", line 685, in send
        await self._send_frame(message, WSMsgType.BINARY, compress)
      File "C:\Users\wwwfe\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\aiohttp\http_websocket.py", line 598, in _send_frame
        raise ConnectionResetError("Cannot write to closing transport")
    ConnectionResetError: Cannot write to closing transport```
    opened by fengmao31 1
  • DebugGameState gas does nothing

    DebugGameState gas does nothing

    Hello, after looking what DebugGameState can do noticed that gas = 8 does nothing 🤷‍♂️ also there is no such call in reference cpp implementations. Wondering if this is something well known or not and may be it should be removed from proto at least to not confuse anyone

    opened by mac2000 0
  • Fatal error occurred: 'e_errorIdMemoryUnknown'

    Fatal error occurred: 'e_errorIdMemoryUnknown'

    Hello, I run the following code on Ubuntu 4.4.0-201-generic x86_64 python -m smac.examples.random_agents

    then I get the following error 'e_errorIdMemoryUnknown'

    `Version: B75689 (SC2.4.10) Build: Aug 12 2019 17:16:57 Command Line: '"/home/StarCraftII/Versions/Base75689/SC2_x64" -listen 127.0.0.1 -port 22463 -dataDir /home/StarCraftII/ -tempDir /tmp/sc-04tstjhs/' Starting up... Startup Phase 1 complete ValidateExternalAddr Fatal error encountered! Backtrace: /home/StarCraftII/Versions/Base75689/SC2_x64[0x65e838]

    /home/StarCraftII/Versions/Base75689/SC2_x64[0x65f270] /home/StarCraftII/Versions/Base75689/SC2_x64[0x65ecc2] /home/StarCraftII/Versions/Base75689/SC2_x64[0x6664b5] /home/StarCraftII/Versions/Base75689/SC2_x64[0x665374] /home/StarCraftII/Versions/Base75689/SC2_x64[0x98c6d5] /home/StarCraftII/Versions/Base75689/SC2_x64[0x9a02fc] /home/StarCraftII/Versions/Base75689/SC2_x64[0x9bf7fd] /home/StarCraftII/Versions/Base75689/SC2_x64[0x1e7e714] /home/StarCraftII/Versions/Base75689/SC2_x64[0x1e8ae48] /home/StarCraftII/Versions/Base75689/SC2_x64[0x1e88a1d] /home/StarCraftII/Versions/Base75689/SC2_x64[0x1e9add5] /home/StarCraftII/Versions/Base75689/SC2_x64[0x1ee7997] /home/StarCraftII/Versions/Base75689/SC2_x64[0x1ee546b] /home/StarCraftII/Versions/Base75689/SC2_x64[0x1ee0a3e] /home/StarCraftII/Versions/Base75689/SC2_x64[0x1e9a5ac] /home/StarCraftII/Versions/Base75689/SC2_x64[0x1e83845] /home/StarCraftII/Versions/Base75689/SC2_x64[0x1e835ac] /home/StarCraftII/Versions/Base75689/SC2_x64[0x6cd9a0] /home/StarCraftII/Versions/Base75689/SC2_x64[0xaf45f8] /home/StarCraftII/Versions/Base75689/SC2_x64[0x5fc7a8] /home/StarCraftII/Versions/Base75689/SC2_x64[0x1b946e8] /home/StarCraftII/Versions/Base75689/SC2_x64[0x5f855c] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f1d85b07840] /home/StarCraftII/Versions/Base75689/SC2_x64[0x5f7f59] Error condition code: '9' Error suffix: 'Error' Error preface: 'A fatal error occurred:' Error failure: 'e_errorIdMemoryUnknown' Error details: '"AppErrors.txt" (0x000000000A500B38)' Error description: 'AppErrors.txt' ValidateExternalAddr`

    Any suggestions ?

    opened by CrazySssst 1
  • Missing buff for carrying rich vespene gas

    Missing buff for carrying rich vespene gas

    When a worker carries a resource it gets a buff corresponding to what it's carrying:

    https://github.com/Blizzard/s2client-proto/blob/5b42959a40a45cca290ce427b5522a35c8a59178/stableid.json#L24352-L24371

    However, there is no corresponding buff for rich vespene gas, and workers carrying rich gas don't have any buffs.

    opened by SoupCatcher 0
  • WSL as a way to load SC2

    WSL as a way to load SC2

    I am looking to see if there is a way to tell pysc2 running on an instance of Ubunto 20.04 through windows wsl2 to use the SC2 binary I have on windows to process the replays.

    opened by HDavidEspinosa 0
Releases(1.2.0)
  • 1.2.0(Nov 14, 2017)

    Rendered Interface

    • Full fidelity rendered images of the game.
    • Provides both observation and action interface.
    • Supported on Windows/Mac/Linux.

    Save/Load

    • Adds request to create a savepoint and later rewind time back to the savepoint.
    • Includes alternate faster implementation for minigame maps.

    Replay API

    • Automated service for getting ladder replays.
    • Documentation can be found here: https://github.com/Blizzard/s2client-proto/tree/master/samples/replay-api

    Other features:

    • Realtime mode support for replays.
    • Observer actions.
    • Support for sending/recieving chat messages.
    • Size option to DebugText
    • Exposed max shield/energy values.
    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Sep 1, 2017)

    This release updates the protocol with the new features added in the 3.17 patch.

    Additional Unit Data

    • Whether a protoss structure is powered
    • Whether a pylon has fast warp in

    Additional Unit Type Data

    • Tech requirements
    • Build/Train time
    • Ability that creates the unit
    • Morphed variants of the unit
    • Food used and provided
    • Race it belongs to
    • If it is a mineral patch or vespene geyser

    Additional Upgrade Data

    • Resource cost
    • Research time
    • Ability that researches the upgrade
    Source code(tar.gz)
    Source code(zip)
Owner
Blizzard Entertainment
Blizzard Entertainment
Huawei firewall automatically updates Chinese ip to target IP group.

Huawei firewall automatically updates Chinese ip to target IP group.

Lundaa 0 Jan 11, 2022
Visualize the electric field of a point charge network.

ElectriPy ⚡ Visualize the electric field of a point charges network. 🔌 Installation Install ElectriPy package: $ pip install electripy You are all d

Dylan Tintenfich 29 Aug 29, 2022
Medusa is a cross-platform agent compatible with both Python 3.8 and Python 2.7.

Medusa Medusa is a cross-platform agent compatible with both Python 3.8 and Python 2.7. Installation To install Medusa, you'll need Mythic installed o

Mythic Agents 123 Nov 09, 2022
Simple local RPG turn-based to play while learn something using the anki system

Simple local RPG turn-based to play while learn something using the anki system

Raphael Kieling 5 Aug 02, 2022
ip2domain - get ip to domain, Know the domian corresponding to the local network connection IP

What is Sometimes, we need to know what connections our local machine has, and what are their IP, domain name, program and parameters? get ip to domai

51pwn 4 Sep 30, 2022
Herramienta para transferir eventos de Shadowserver REST API hacia Azure Blob Storage.

Herramienta para transferir eventos de Shadowserver REST API hacia Azure Blob Storage.

CSIRT-RD 1 Feb 04, 2022
Port Traffic/Bandwidth Monitor Script

python-switch-port-traffic-alarm Port Traffic/Bandwidth Monitor Script That's an Switch Port Traffic monitor program is checking the switch uplink por

goksinenki 4 Sep 02, 2021
Blockchain-Enabled IoT Sensor Framework that uses Augmented Reality and Artificial Intelligence.

Arduino + Raspberry Pi + Unity3D + Cloud + Hyperledger Our Mission: Keep it simple, leave no one behind. Blockchain-Enabled Smart Sensor Framework usi

DappAR 23 Dec 05, 2021
订阅转换,添加免流host

普通订阅转免流订阅 原理 将原来的订阅解析后添加免流host 使用方法 服务器域名/&&订阅链接&&免流host&&转换后服务器前缀 我这里已经在服务器上搭建好了

163 Apr 01, 2022
Network monitoring tool

netmeter If you are looking for a tool to monitor your network interfaces, here you are. See netmeter-exporter to export Prometheus metrics. Installat

Saeid Bostandoust 97 Dec 03, 2022
Learn how modern web applications and microservice architecture work as you complete a creative assignment

Micro-service Создание микросервиса Цель работы Познакомиться с механизмом работы современных веб-приложений и микросервисной архитектуры в процессе в

Григорий Верховский 1 Dec 19, 2021
Proxlist - Retrieve proxy servers.

Finding and storing a list of proxies can be taxing - especially ones that are free and may not work only minutes from now. proxlist will validate the proxy and return a rotating random proxy to you

Justin Hammond 2 Mar 17, 2022
This tools just for education only - Layer-7 or HTTP FLOODER

Layer-7-Flooder This tools just for education only - Layer-7 or HTTP FLOODER Require Col1 Before You Run this tools How To Use Download This Source Ex

NumeX 7 Oct 30, 2022
Bark Toolkit is a toolkit wich provides Denial-of-service attacks, SMS attacks and more.

Bark Toolkit About Bark Toolkit Bark Toolkit is a set of tools that provides denial of service attacks. Bark Toolkit includes SMS attack tool, HTTP

13 Jan 04, 2023
IoT owl is light face detection and recognition system made for small IoT devices like raspberry pi.

IoT Owl IoT owl is light face detection and recognition system made for small IoT devices like raspberry pi. Versions Heavy with mask detection withou

Ret2Me 6 Jun 06, 2022
WARP+ uses Cloudflare’s virtual private backbone, known as Argo, to achieve higher speeds and ensure your connection is encrypted across the long haul of the Internet

WARP+ uses Cloudflare’s virtual private backbone, known as Argo, to achieve higher speeds and ensure your connection is encrypted across the long haul of the Internet

Rivane Rasetiansyah 3 Apr 01, 2022
Py script to aid in setting up the boot chime in OpenCore.

BootChime Py script to aid in setting up the boot chime in OpenCore. It does so by helping you locate your IOHDACodecDevices, IOHDACodecAddress values

CorpNewt 7 Sep 19, 2022
Ctech Didik Auto Script VPN 👨🏻‍💻Youtube: Ctech Didik

CTech Didik Auto Script VPN SUPPORT OPERATING SYSTEM Debian GNU/Linux 11 (Bullseye) Debian GNU/Linux 10 (Buster) Debian GNU/Linux 9 (Stretch) Ubuntu S

Ctech Didik 27 Dec 20, 2022
msgspec is a fast and friendly implementation of the MessagePack protocol for Python 3.8+

msgspec msgspec is a fast and friendly implementation of the MessagePack protocol for Python 3.8+. In addition to serialization/deserializat

Jim Crist-Harif 414 Jan 06, 2023
A simple software which can use to make a server in local network

home-nas it is simple software which can use to make a server in local network, it has a web site on it which can use by multipale system, i use nginx

R ansh joseph 1 Nov 10, 2021