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
Python module to interface with Tuya WiFi smart devices

TinyTuya Python module to interface with Tuya WiFi smart devices Description This python module controls and monitors Tuya compatible WiFi Smart Devic

Jason Cox 365 Dec 26, 2022
Initial code of an A3C network

A3C-network Initial code of an A3C network Open the python file named as "APL452 Project Report2" The following libraries and packages have been insta

Ayush Tanwar 0 Jun 11, 2022
Free,Cross-platform,Single-file mass network protocol server simulator

FaPro Free,Cross-platform,Single-file mass network protocol server simulator 中文Readme Description FaPro is a Fake Protocol Server tool, Can easily sta

FOFA Pro 1.4k Jan 06, 2023
A SOCKS proxy server implemented with the powerful python cooperative concurrency framework asyncio.

asyncio-socks-server A SOCKS proxy server implemented with the powerful python cooperative concurrency framework asyncio. Features Supports both TCP a

Amaindex 164 Dec 30, 2022
Way find out if DNS is down or your instance

DNS-PING Way to find out if DNS is down or your instance Problem: At times it happens that DNS provider services of a website URL is down and so to re

Giten Mitra 4 Nov 18, 2022
High capacity, high availability, well connected, fast lightning node.

LND ⚡ Routing High capacity, high availability, well connected, fast lightning node. We aim to become a top liquidity provider for the lightning netwo

18 Dec 16, 2022
A fully automated, accurate, and extensive scanner for finding log4j RCE CVE-2021-44228

log4j-scan A fully automated, accurate, and extensive scanner for finding vulnerable log4j hosts Features Support for lists of URLs. Fuzzing for more

FullHunt 3.2k Jan 02, 2023
Ip-Tracker: a script written in python for tracking Someone using targets ip-Tracker address

🔰 𝕀𝕡-𝕋𝕣𝕒𝕔𝕜𝕖𝕣 🔰 Ip-Tracker is a script written in python for tracking Someone using targets ip-Tracker address It was made by Spider Anongre

Spider Anongreyhat 15 Dec 02, 2022
User-friendly packet captures

capture-packets: User-friendly packet captures Please read before using All network traffic occurring on your machine is captured (unless you specify

Seth Michael Larson 2 Feb 05, 2022
Python tutorial for implementing Oxylabs' Residential Proxies with AIOHTTP

Integrating Oxylabs' Residential Proxies with AIOHTTP Requirements for the Integration For the integration to work you'll need to install aiohttp libr

Oxylabs.io 6 Sep 14, 2022
CloudProxy is to hide your scrapers IP behind the cloud

Hide your scrapers IP behind the cloud. Provision proxy servers across different cloud providers to improve your scraping success.

Christian Laffin 1.1k Jan 02, 2023
D-dos attack GUI tool written in python using tkinter module

ddos D-dos attack GUI tool written in python using tkinter module #to use this tool on android, do the following on termux. *. apt update *. apt upgra

6 Feb 05, 2022
Tool for pretty printing and optimizing Lightning Network channels.

Suez Tool for pretty printing and optimizing Lightning Network channels. Installation Install poetry poetry install poetry run ./suez Channel fee poli

Pavol Rusnak 69 Nov 03, 2022
Apple Store Stock Notifier monitors the availability of selected Apple devices in selected Apple stores, and sends you a notification when devices are available!

Apple Store Stock Notifier This software will immediately send you a notification via Telegram when one of your coveted Apple Devices is available in

Floris-Jan Willemsen 25 Dec 05, 2022
A simple python script to send cute messages to my boyfriend.

Morning Messages A simple python script to send cute messages to my boyfriend. It gives him the weather and news currently. Installation git clone htt

Sabrina Medwinter 3 Oct 12, 2022
A non-custodial oracle and escrow system for the lightning network. Make LN contracts more expressive.

Hodl contracts A non-custodial oracle and escrow system for the lightning network. Make LN contracts more expressive. If you fire it up, be aware: (1)

31 Nov 30, 2022
A simple tool to get information about IP

IP Info Tool Just a simple tool to get IP's information, it uses requests module to gather information about IP, if you dont have much knowledge about

0 Dec 01, 2021
Python script to stop qBittorrent from torrenting without VPN for users with static IP.

Python script to stop qBittorrent from torrenting without VPN for users with static IP.

voidoak_ 1 Oct 25, 2021
A Calendar subscribe server for python

cn-holiday-ics-server A calendar subscribe server 直接使用我搭建的服务 订阅节假日:https://cdxy.fun:9999/holiday 订阅调休上班:https://cdxy.fun:9999/workday 节假日和调休上班在一起的版本:h

CD 11 Nov 12, 2022
Tiny JSON RPC via HTTP library.

jrpc Simplest ever possible Asynchronous JSON RPC via HTTP library for Python, backed by httpx. Installation pip install async-jrpc Usage Import JRPC

Onigiri Team 2 Jan 31, 2022