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
With Py-Autocrack you can crack WPA2 networks in no time.

With Py-Autocrack you can crack WPA2 networks in no time. All based on Aircrack-ng and Crunch.

Paul - FloatDesign 1 Dec 10, 2021
This is a simple python script to collect sub-domains from hackertarget API

Domain-Scraper 🌐 This is a simple python script to collect sub-domains from hackertarget API Note : This is tool is limited to 20 Queries / day with

CHINO TECH TOOLS 4 Sep 09, 2021
List of ngrok alternatives and other ngrok-like tunneling software and services. Focus on self-hosting.

List of ngrok alternatives and other ngrok-like tunneling software and services. Focus on self-hosting.

Anders Pitman 7.3k Jan 03, 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
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
A simple implementation of an RPC toolkit

Simple RPC With Raw Sockets Repository for the Data network course project: Introduction In this project, you will attempt to code a simple implementa

Milad Samimifar 1 Mar 25, 2022
A pure python implementation of multicast DNS service discovery

python-zeroconf Documentation. This is fork of pyzeroconf, Multicast DNS Service Discovery for Python, originally by Paul Scott-Murphy (https://github

Jakub Stasiak 483 Dec 29, 2022
nettrace is a powerful tool to trace network packet and diagnose network problem inside kernel.

nettrace nettrace is is a powerful tool to trace network packet and diagnose network problem inside kernel on TencentOS. It make use of eBPF and BCC.

84 Jan 01, 2023
EUserv - A Python script which can help you renew your free EUserv IPv6 VPS

English | 简体中文 This project comes from https://github.com/a-beam-of-light/eu_ex

阿两 0 Jan 06, 2022
Una simple herramienta para rastrear IP programada en Python

Spyrod-v2 Una simple herramienta para rastrear IP programada en Python Instalacion apt install git -y cd $HOME git clone https://github.com/Euronymou5

15 Dec 08, 2022
SMS Based Headless Browsing

Browse the internet without a network connection - Submission for ConUHacks VI

Zafir Khalid 2 Feb 07, 2022
Domain To Api [ PYTHON ]

Domain To IP Usage You Open Terminal For Run The Program python ip.py Input & Output Input Your List e.g domain.txt Output ( For Save Output File )

It's Me Jafar 0 Dec 12, 2021
Multipurpose Growtopia Server tools, can be used for newbie to learn things.

Multipurpose Growtopia Server tools, can be used for newbie to learn things.

FelixF 3 Dec 01, 2021
AV Evasion, a Red Team Tool - Fiber, APC, PNG and UUID

AV Evasion, a Red Team Tool - Fiber, APC, PNG and UUID

9 Mar 07, 2022
A Python library to utilize AWS API Gateway's large IP pool as a proxy to generate pseudo-infinite IPs for web scraping and brute forcing.

A Python library to utilize AWS API Gateway's large IP pool as a proxy to generate pseudo-infinite IPs for web scraping and brute forcing.

George O 929 Jan 01, 2023
Scan any IP address except IPv6 using Python.

Port_Scanner-python To use this tool called "Console Port Scanner", you need to enter an IP address (NOT IPv6). It might take a long time to scan port

1 Dec 24, 2021
A simple Tor switcher script switches tor nodes in interval of time

Tor_Switcher A simple Tor switcher script switches tor nodes in interval of time This script will switch tor nodes in every interval of time that you

d4rk sh4d0w 2 Nov 15, 2021
Tiny Interactive File Transfer Application

TIFTA: Tiny Interactive File Transfer Application This repository holds all the source code, tests and documentation of the TIFTA software. The main g

Jorge Martínez 2 Dec 08, 2021
A simple electrical network analyzer, BASED ON computer-aided design.

Electrical Network Analyzer A simple electrical network analyzer. Given the oriented graph of the electrical network (circut), BASED ON computer-aided

Ahmad Abdulrahman 4 Oct 15, 2022
Build surface water network for MODFLOW's SFR Package

Surface water network Creates surface water network, which can be used to create MODFLOW's SFR. Python packages Python 3.6+ is required. Required geop

Mike Taves 20 Nov 22, 2022