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
A great python/java dynamic DNS service for NameSilo, with log, email reminder...

English NameSilo DDNS is a DDNS service for NameSilo domain names for home broadband , it can automatically detect IP changes in home broadband

云牧青 77 Dec 28, 2022
Anonymously Reverse shell over Tor Network using Hidden Services without portfortwarding

Anonymously Reverse shell over Tor Network using Hidden Services without portfortwarding Tor ağı ile Dark Web servislerini kullanarak anonim biçimde p

249 Dec 29, 2022
Monitoring plugin to check network interfaces with Icinga, Nagios and other compatible monitoring solutions

check_network_interface - Monitor network interfaces This is a monitoring plugin for Icinga, Nagios and other compatible monitoring solutions to check

DinoTools 3 Nov 15, 2022
Mini SCADA. Poll modbus devices by TCP/IP network.

Plans Add saving and loading devices and channels with files or db or someone else. Multitasking system for poll all devices Automatic optimization po

Efi_fi 1 Oct 25, 2021
An advanced real time threat intelligence framework to identify threats and malicious web traffic on the basis of IP reputation and historical data.

ARTIF is a new advanced real time threat intelligence framework built that adds another abstraction layer on the top of MISP to identify threats and malicious web traffic on the basis of IP reputatio

CRED 225 Dec 31, 2022
Asynchronous For Python(asyncio)

asyncio is a library to write concurrent code using the async/await syntax.asyncio is used as a foundation for multiple Python asynchronous frameworks that provide high-performance network and web-se

Janak raikhola 0 Feb 05, 2022
Passive TCP/IP Fingerprinting Tool. Run this on your server and find out what Operating Systems your clients are *really* using.

Passive TCP/IP Fingerprinting This is a passive TCP/IP fingerprinting tool. Run this on your server and find out what operating systems your clients a

Nikolai Tschacher 158 Dec 20, 2022
This is the code repository for the USENIX Security 2021 paper, "Weaponizing Middleboxes for TCP Reflected Amplification".

weaponizing-censors Censors pose a threat to the entire Internet. In this work, we show that censoring middleboxes and firewalls can be weaponized by

UMD Breakerspace 119 Dec 31, 2022
Program can control your server via discord bot

GTPS Controller Program can control your server via discord bot Require Python How To Use Download This Source Extract The Zip File Paste gtps.py to y

Lamp 2 Mar 15, 2022
Send files to your friends over network! (100mb max)

PyServed v2.0.1 Made by Shaurya Pratap Singh Installation Using pip(for stable releases.) - $ pip install pyserved Using Git (for latest updates) -

Sblip.dev 4 Mar 22, 2022
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
MoreIP 一款基于Python的面向 MacOS/Linux 用户用于查询IP/域名信息的日常渗透小工具

MoreIP 一款基于Python的面向 MacOS/Linux 用户用于查询IP/域名信息的日常渗透小工具

xq17 9 Sep 21, 2022
VRF-StarkNet - Contracts for verifiable randomness on StarkNet

VRF-StarkNet Contracts for verifiable randomness on StarkNet Motivation Deployed

Non 32 Oct 30, 2022
OpenNeoMC:an Open-source Tool for Particle Transport Optimization that Combining OpenMC with NEORL

OpenNeoMC:an Open-source Tool for Particle Transport Optimization that Combining OpenMC with NEORL OpenMC is a community-developed Monte Carlo neutron

7 Aug 17, 2022
Serves some data over HTTP, once. Based on the built-in Python module http.server

serve-me-once Serves some data over HTTP, once. Based on the built-in Python module http.server.

Peder Bergebakken Sundt 2 Jan 06, 2022
Rufus is a Dos tool written in Python3.

🦎 Rufus 🦎 Rufus is a simple but powerful Denial of Service tool written in Python3. The type of the Dos attack is TCP Flood, the power of the attack

Billy 88 Dec 20, 2022
GitHub action for sspanel automatically checks in to get free traffic quota

SSPanel_Checkin This is a dish chicken script for automatic check-in of sspanel for GitHub action, It is only applicable when there is no verification

FeedCatWithFish 7 Apr 28, 2022
Tool written on Python that locate all up host on your subnet

HOSTSCAN Easy to use command line network host scanner. From noob to noobs. Dependencies Nmap 7.92 or superior Python 3.9 or superior All requirements

NexCreep 4 Feb 27, 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
Juniper SNMP Migrations For Python

Juniper SNMP Migrations This example will show how to use the PyEZ plugin for Nornir to build a NETCONF connection to a remote device validate that SN

Calvin Remsburg 1 Jan 07, 2022