StarCraft II API

Aug 26 Welcome to the StarCraft II API Thanks for joining the discussion around the release of the StarCraft II API! For more information on our announcement, please see the following: Blizzard Announcement blog DeepMind Announcement blog To get started, suggest changes, and report bugs, you can participate in our open source project on GitHub: StarCraft II API Library StarCraft II API Protocol Python Protocol Binding Library PySC2 (DeepMind’s toolset) You can also participate in additional discussion on David Churchill’s Facebook group: StarCraft II Artificial Intelligence Facebook Group We’re excited to see the direction that the AI research community takes this in, and we look forward to your discussion! - The StarCraft II API teamTraysent5 Aug 26
Aug 11 CommandCenter: An SC2 AI Bot Framework The AI community has been conducting research using the original StarCraft for years, and we appreciate all of the scripted AI work that has been done. One of the most popular frameworks for writing bots in the original StarCraft was UAlbertabot, and many of the top competitive bots are based on this framework. It was also designed as an easy-to-use tool to toy around with AI – you could just plug in a build order and watch it go. In addition to our collaboration with DeepMind, we have also been working with the author of UAlbertabot, David Churchill, on porting this framework over to StarCraft II. His initial version, called CommandCenter, is out now: David, a Computer Science faculty member at Memorial University, has been one of the core pillars of the StarCraft AI community for many years, and the feedback he provided to us during the development of the StarCraft II API has been very helpful. Together with the rest of the AI research community, we look forward to making StarCraft II an awesome environment to continue experimenting with AI bots.Traysent8 Aug 11
Oct 24 Forum Guidelines - Please Read! Welcome to the StarCraft II discussion forums! This forum is here to provide you with a friendly environment where you can discuss all aspects of StarCraft II with your fellow players. Community forums work best when participants treat their fellow posters with respect and courtesy. Therefore, we ask that you take the time to read through the Forum Code of Conduct before posting. Search The new search function at the top of the StarCraft II community site is extremely robust. Please be sure to use it to look for similar topics, blog posts, or web pages that may contain the answer before creating your forum topic. Making a new thread on an existing subject will likely result in your thread being deleted. If you continue to repost it you're likely to have your posting privileges suspended for spamming. Worst of all, you'll be making the other forum goers upset that you didn't take a minute to search before posting. Rating The new rating system can be used to promote positive discussion, and demote unhelpful posts, or even report posts that violate the forum code of conduct. By hovering over a post you'll be presented with a thumbs up, and a thumbs down icon. Clicking the 'thumbs down' icon you can choose from a few options. Dislike will rate the comment down. If enough people dislike a post it will be darkened, or with a lot of dislikes it will be hidden. You can also quickly report a post as trolling or spam, or use the report function to fill out a more comprehensive description of the violation. You can only rate each post once. Use it wisely to help foster a positive and helpful forum community. Guidelines In addition to the Forum Code of Conduct, here are some common courtesy guidelines to follow. While these do technically fall within the bounds of the Code of Conduct, these cover more specific examples of common errors that will lead to thread deletions or posting privileges being revoked. The StarCraft II forums are for discussion of topics directly related to StarCraft II The forums here are specifically to discuss the game and related topics. Any topics not related to StarCraft II, or Blizzard are subject to deletion. Don't post in all capital letters, use a misleading title, excessive punctuation, non-standard symbols, etc. While everyone wants their posts read, we ask you to refrain from using these types of tactics in order to bring more people to your thread. Let your post stand on its own merit. Threads violating this guideline are subject to deletion. Using the words Blizzard, Blue, or any community team members name in a thread topic is frowned upon Everyone would like Blizzard to read and acknowledge his or her post, and we understand that. However, use of such words in the topic does not help that come to pass. Please make your thread title relevant to the post subject. Threads violating this guideline are subject to deletion. Posting "First" or IBTL constitutes as spamming You will be suspended if you create a post that is intended to call out that you achieved a specific reply number in a thread. This is considered spamming. Posting IBTL (in before the lock) is not helpful and if you feel a thread should be moderated please use the rating button to do so. Do not bump posts The act of posting simply to bump a thread is considered spamming. This also includes bumping very old threads for no reason (called 'necro bumping' or 'necroing'). Petition posts are frowned upon These are discussion forums, and as such we ask that you hold discussions. Creating a thread to ask for replies as votes is not a discussion. Threads violating this guideline are subject to deletion. Do not post about locked or deleted threads Posts that are moderated have a reason behind the moderation. It's up to you to read the forum code of conduct and these guidelines to determine what you did wrong, learn from your mistake, and attempt to post again without breaking any rules.Rackle0 Oct 24
32m SC2 API ontology question I am assuming that this question is hopelessly naïve, so please forgive my ignorance. I am currently developing a distributed, Node.js environment using the C++ API. It is working very well, but I have this nagging doubt that I really should be working with protobufs. The thing that I am confused about is how the three flavors of theAPI are related, the 1) C++ API, 2) Protocol buffers, and 3) image layers. I would very much like a clearer understanding of the relationships among these very different ways of looking at things.Arachnya1 32m
14h c++ no instance of overloaded function virtual void OnUnitIdle(const Unit& unit) final { switch (unit.unit_type.ToType()) { case UNIT_TYPEID::TERRAN_COMMANDCENTER: { Actions()->UnitCommand(unit, ABILITY_ID::TRAIN_SCV); break; } default: { break; } } } the pointer between Actions() and UnitCommand(unit, ABILITY_ID::TRAIN_SCV); gives me these errors Severity Code Description Project File Line Suppression State Error (active) E0304 no instance of overloaded function "sc2::ActionInterface::UnitCommand" matches the argument list tutorial c:\Users\winapi\sc2api\examples\ 19 Severity Code Description Project File Line Suppression State Error C2664 'void sc2::ActionInterface::UnitCommand(const sc2::Units &,sc2::AbilityID,const sc2::Unit *)': cannot convert argument 1 from 'const sc2::Unit' to 'const sc2::Unit *' tutorial c:\users\orfasanti\sc2api\examples\ 19 which makes no sense because it appears as if the unit type conversion occurs explicitly at the switch creation. am I doing something wrong? if so, what? Visual Studio 15 2017winapi5 14h
21h Know when an enemy fires weapon/uses ability Is there any way for the AI to figure out when an enemy unit has fired a weapon/casted an ability? As a human I can see a corrosive bile indicator, see a tank sieging up, or see a yamato cannon charging (as some examples), but I can't find a way for the AI to do the same. Using C++ Apologies in advance if this is a stupid questionDalas4 21h
1d [Help]How Battle.Net HyperLink Id are made of Hello, i would like to understand how the HyperLink ID work, for example this link: battlenet:://starcraft/map/2/196936 battlenet:://<GameCode>/<reference>/<region>/MapID so i know the other reference as well (i also use HyperLink on heroes of the storm), so i'm asking for help because for example the link above, the map ID "196936" is the map: "(2)Abyssal Reef LE" from CustomGame. How is this id created ? is this the string converted to int ? I would like to know because i would be happy to then "save" each map ID's of the actual heroes of the storm brawl, so i can later "play them again" in custom game, since the game automaticaly Stream the needed ressources from Battle.Net. Hope you can help me on this, since there is no public API for heroes, but off course a private API -.- come on it's just for custom map <.< Thanks !naruto1 1d
2d Basic PySC2 Agent Tutorial I have written a tutorial for building a basic agent that trains units and attacks the enemy with PySC2: 2d
3d Replay Speed I was able to increase SetStepSize in the coordinator to speed up games but I wanted to slow games down and step size 1 is still pretty fast. Can it be slowed down any further or is it just going to run as fast as the computer you're on?MacAttack2 3d
6d Making a helpfile of available actions I was wondering if there was something like this yet (or a search of some kind to go through each action) otherwise I am planning on making one.TonyP3 6d
Sep 17 Python bot: questions and progress Hello, I have tried to adapt the PySC2 framework in order to make a heuristic bot. Ideally I would like to have something that could play build orders from spawning tool. Is there a file with units and buildings data? In particular: id, cost, build time, requirements. Any option to enable sound through pysc2? I have managed to get a very rudimentary bot working: but progress is quite slow. Having a full time job already and low programming experience doesn't help. Is there any similar python project going that I could join?Asharai5 Sep 17
Sep 17 How this was achieved? I'm very new to C++ so it's likely I've just missed it but how exactly was this achieved? I assume you would need to be able to track either the projectile or the unit the enemy is targeting for this to be achievable? Is that possible with the API? I've tried coming up with ideas through weapon_cooldown and who the enemy is targeting but I'm unsure either are able to be tracked for enemy units. ThanksSleep2 Sep 17
Sep 17 Cant get collect Mineral Shards Map to work Title. Seems to work on most of the other minigames from the ones I tried but for some reason it just gets to the loading screen and crashes after the loading is finished.TonyP2 Sep 17
Sep 16 unit_type_id of 373 In an Observation, one of the units that I see has unit_type_id value of 373, which I don't see listed in enum class UNIT_TYPEID. What kind of unit is it?PinkFreud2 Sep 16
Sep 12 IsPathable(), IsPlacable(), and HasCreep() I have been trying to get these Observation() methods working as described, but there seems to be a problem. In the include files, it implies that at least the first two respond to structure placement, but as far as I can tell, the results are unchanged from the original map at game startup. I have not tested Observation()->HasCreep(), but its correct implementation is critical for creep bridge strategies.Arachnya2 Sep 12
Sep 11 RequestAvailableMaps returns no maps Im having trouble with maps. First, I never see any .SCMap files downloaded, either after playing ladder games or custom games. So I downloaded the maps here: But RequestAvailableMaps keeps returning an empty list. This is Windows, and I start SC2 with: Target: "C:\Program Files (x86)\StarCraft II\Versions\Base56787\SC2_x64.exe" -sso=1 -launch -uid s2_enus -listen -port 999 Start in: "C:\Program Files (x86)\StarCraft II\Support64" I tried putting them in a Maps directory under c:\Program Files (x86)\StarCraft II, and I also tried them in a Maps directory under c:\Program Files (x86)\StarCraft II\Support64. I tried using full paths like "C:\Program Files (x86)\StarCraft II\Maps\ None of these causes RequestAvailableMaps to return anything. Any idea what I might be doing wrong? AndyPinkFreud2 Sep 11
Sep 8 Simple maps for early game development I was wondering if anyone knew where I could find some simple maps for early stages of game development.Arachnya3 Sep 8
Sep 6 Raw interface - building footprints Is there a way to determine what spaces a structures is taking up via the Raw interface? This is pretty trivial for player-constructed structures, which have known sizes, and predictable things like minerals/vespene, but I'm particularly concerned about things like the destructible barriers, which vary widely but are strategically important. The current state of the map, including those barriers, is reflected via the pathing grid, and it appears that it is updated if there are subsequent changes to what structures are on the map, but as far as I can tell I don't have enough information to predict which parts of the pathing grid are subject to change.TinSoldier2 Sep 6
Sep 2 Visualization in Linux Hello there! OK, I've just built all necessary sources in Linux Mint. When I start one of examples (sc2client-api/build/bin/bot_simple, for example) I can see the log of some games. But I can't understand how it really works inside. Is there a way for Linux to visualize what happens there? Thank you in advance.Arcoon2 Sep 2
Sep 2 How does it work? Hello, I don't know anything about programming, so I can't understand very well all the stuff on GitHub... I just wanted to know if there is some "ready to play" content that we could download to check this new IA in game? I looked in the "CommandCenter" thing, but when I launch the CommandCenter.exe, it does nothing. I also grabbed the "s2client-api-master" and "s2client-proto-master" folders, put their content in my SC2 folder, but here again, nothing. So if someone could help me understand... It would be appreciated. Thanks :)Test4 Sep 2
Sep 2 first try, first bloo... bug/misunderstanding Tried to run it first time with pySc2, got this bug. Anyone knows that i need to do? (i'm ok with programming, but this look like version conflict or something strange around lib) E:\summer\StarcraftAI2\s2client-api>python -m pysc2.bin.agent --map Simple64 Exception in thread Thread-1: Traceback (most recent call last): File "E:\Anaconda\Python\lib\", line 914, in _bootstrap_inner File "E:\Anaconda\Python\lib\", line 862, in run self._target(*self._args, **self._kwargs) File "E:\Anaconda\Python\lib\site-packages\pysc2\bin\", line 74, in run_thread visualize=visualize) as env: File "E:\Anaconda\Python\lib\site-packages\pysc2\env\", line 154, in __init__ self._run_config = run_configs.get() File "E:\Anaconda\Python\lib\site-packages\pysc2\run_configs\", line 39, in get return max(configs.values(), key=lambda c: c.priority())() File "E:\Anaconda\Python\lib\site-packages\pysc2\run_configs\", line 52, in __init__ "Support64") File "E:\Anaconda\Python\lib\site-packages\pysc2\run_configs\", line 36, in __init__ versions = os.listdir(os.path.join(base_dir, "Versions")) FileNotFoundError: [WinError 3] Системе не удается найти указанный путь: 'C:/Program Files (x86)/StarCraft II\\Versions' Tryed with C++ that i know much better than Python, got -- Configuring incomplete, errors occurred! See also "E:/summer/StarcraftAI2/s2client-api/CMakeFiles/CMakeOutput.log". CMakeOutput.log says everything ok. I'm really love to try it, but now i need some help.DwarfHeretic11 Sep 2
Aug 30 Linux client problems Good day! First of all, I want to thank you for this API. I waited for something like this for a long time. Next. I have loaded all necessary sources (StarCraftII Linux client, s2client-api and s2client-proto) for my system (Linux Mint), replay-files and maps and successfully built sources. Now I don't know what to do and can't find some tutorials. As I understand before I can run your example-bots I should run SCII-client (StarCraftII/Versions/Base55958/SC2_x64). But when I try to do that, I have this in my term: arcoon@arcoon ~ $ StarCraftII/Versions/Base55958/SC2_x64 Version: B55958 (SC2.3.16) Build: Jul 31 2017 13:19:41 Command Line: '"StarCraftII/Versions/Base55958/SC2_x64"' Starting up... Startup Phase 1 complete Startup Phase 2 complete Creating stub renderer... Missing listen/port command line. Fatal error encountered! Backtrace: StarCraftII/Versions/Base55958/SC2_x64[0x653068] StarCraftII/Versions/Base55958/SC2_x64[0x653aa0] StarCraftII/Versions/Base55958/SC2_x64[0x6534f2] StarCraftII/Versions/Base55958/SC2_x64[0xf995ba] StarCraftII/Versions/Base55958/SC2_x64[0x192d269] StarCraftII/Versions/Base55958/SC2_x64[0x1932955] StarCraftII/Versions/Base55958/SC2_x64[0x5ed4b3] /lib/x86_64-linux-gnu/[0x7f66031f0830] StarCraftII/Versions/Base55958/SC2_x64[0x5ed2d9] Error condition code: '9' Error suffix: 'Error' Error preface: 'A fatal error occurred:' Error failure: 'e_errorIdDamaged' Error details: '"AppErrors.txt" Failed to initialize port' Error description: 'AppErrors.txt' Error signal: '11' Backtrace: StarCraftII/Versions/Base55958/SC2_x64[0x652f73] /lib/x86_64-linux-gnu/[0x7f66032054b0] StarCraftII/Versions/Base55958/SC2_x64[0x69bbe3] StarCraftII/Versions/Base55958/SC2_x64[0x654e0f] StarCraftII/Versions/Base55958/SC2_x64[0x654ffd] StarCraftII/Versions/Base55958/SC2_x64[0x654e59] StarCraftII/Versions/Base55958/SC2_x64[0x1298380] /lib/x86_64-linux-gnu/[0x7f6603209ff8] /lib/x86_64-linux-gnu/[0x7f660320a045] StarCraftII/Versions/Base55958/SC2_x64[0x674e3e] StarCraftII/Versions/Base55958/SC2_x64[0x653aaa] StarCraftII/Versions/Base55958/SC2_x64[0x6534f2] StarCraftII/Versions/Base55958/SC2_x64[0xf995ba] StarCraftII/Versions/Base55958/SC2_x64[0x192d269] StarCraftII/Versions/Base55958/SC2_x64[0x1932955] StarCraftII/Versions/Base55958/SC2_x64[0x5ed4b3] /lib/x86_64-linux-gnu/[0x7f66031f0830] StarCraftII/Versions/Base55958/SC2_x64[0x5ed2d9] As I understand, there should be some "listen/port command line", but I have not found some explanations what exactly is this. --help option or command "man SC2_x64" does not give anything. Can you please give some step-by-step Linux start tutorial? Thank you in advance!Arcoon1 Aug 30
Aug 28 Coordinator Update() question I am a little confused by the documentation for the Coordinator Update() method. In the documents, it is implied that in real-time mode, that the bot is supposed to request something called an 'Observation', which is then parsed to generate the various On... events and such for individual units. However, in playing my Node.js bot in the real-time mode through a UDP connection, I do not directly request an 'Observation', nor do I know how to do this in the scripting interface. That said, everything seems to work as I expect - I get the On... events and my commands are processed correctly. Still, because of what I read in the documentation, I feel as though I am missing something important, and was wondering if this is the case.Arachnya2 Aug 28
Aug 24 Allow Referee|Observer Mode in Public Lobby Allow Referee & Observer Mode in Public Arcade Lobby Currently, you must click the 'create' lobby button to make a private lobby (not public lobby) in order to change players into a referee/observer. Please allow the referee/observer option within public a lobby. Currently, the referee option is disabled within public lobbies.TerraAzure0 Aug 24
Aug 23 C++ Standard Version The C++ standard version supported doesn't appear to be explicitly documented on the github page, so contributing back certain changes are questionable on what will work. Obviously, there's some C++11 present, but are certain features from C++17 allowed? e.g. std::optional (VS2017 does support this). I assume this likely boils down to the supported compiler list, but I'm unsure of what minimum version of Clang/GCC are used. Along the lines of std::optional, are changes to return values desired for more safety: const Unit* ObservationImp::GetUnit(Tag tag) const vs: optional<Unit> ObservationImp::GetUnit(Tag tag) const ? Also, are performance concerns large enough to warrant not using optional?drivehappy0 Aug 23
Aug 23 The BOT Advantage The new API is awesome. In porting our Node.js based framework from BWAPI to the new interface, I was impressed by some of the new capabilities that are exposed in the scripting interface - for example OnUnitEnterVision(). There has been a lot of discussion regarding APM advantages for BOTS over human players, and thoughts on restrictions. However, it seems like BOTs also have a substantial cognitive advantage in that a player can only see a small part of the game at a time, while the API provides information on a more global perspective. I was wondering if there were any plans to even the playing field with respect to this advantage as well, as it has considerable impact on my design architecture.Arachnya3 Aug 23
Aug 22 Linux support? I see only support for Windows and Mac. Any support for Linux? Or anyone successfully tried it on Linux?StLiu6 Aug 22
Aug 21 How to run a replay with the C++ API Hello, I'm trying to setup a replay analyser. However, I have hard time understanding how it works. I tried something like this : ReplayAnalyser replayObs; coordinator.AddReplayObserver(&replayObs); coordinator.LoadReplayList(replayPath); coordinator.LaunchStarcraft(); while (coordinator.Update()) { } where ReplayAnalyser is defined as follows : class ReplayAnalyser : public ReplayObserver { public: virtual void OnGameStart() final { std::cout << "Hello, World!" << std::endl; } virtual void OnStep() final { std::cout << Observation()->GetGameLoop() << std::endl; } }; However, I get an error on the update function, because I don't have a agent. Should I build my replayAnalyser as an Agent and then put in into the game with a "PlayerSetup(Observer, *any race*, (*Agent)obs)" ? Thanks for your help, Elirso Edit : Also, has anyone figured how to run a replay with it ?Elirso2 Aug 21
Aug 20 C++ API does n't find SC2 binary and failed Moreover, it don't understand given with -m path if it written with space - it says, that where is no .../Starcraft folder on computer.(not Starcraft 2, because it don't understand the space) and more over, it' does n't understand standard way to deal with it in command line - "" '' and \. What I have to do to force it work?DwarfHeretic2 Aug 20
Aug 19 Need some help. I want to start making a AI but I've gotten stuck on an error. When ever I try to build and run the bot it comes up with this error: LINK : fatal error LNK1104: cannot open file 'civetweb.lib'FireSquid4 Aug 19
Aug 17 How to get player actions from replays To train net from replays, I got to know how to get the feature layer and the actions from a replay, but it is not clear to me how to get the actions from a replay.CCY2 Aug 17
Aug 16 2 bots at the same time Is it possible to have 2 bots at the same time? I have tried the following code: AnnoyingHelper bot_1; AnnoyingHelper bot_2; coordinator.SetParticipants({ CreateParticipant(sc2::Race::Zerg, &bot_1), CreateParticipant(sc2::Race::Zerg, &bot_2), }); The problem is that if I run that code, 2 Instances of SC2 start at the same time and then I get assertion.Majak1 Aug 16
Aug 16 How to disable position green marker I have implemented a simple AI bot. Every time some unit is moved, I can see green position marker, like this one: How to disable this marker?Majak1 Aug 16
Aug 16 How to train net from replays? I have installed pysc2, and it works. Now, I am trying to reproduce the result of "supervised learning from replay" in the sc2le paper, but it seems to me that there is no tutorial on this topic. Actually, it will be better if there is a script or step-by-step instruction to reproduce all of the results in the sc2le paper.CCY2 Aug 16
Aug 15 Linux - Missing Dependencies SOLVED Run this: pip install --upgrade pip Hello! I'm using ubuntu 14.04 LTS and when I try to $ pip install pysc2 the setup exits due to missing dependencies. The setup for pysc2 ( ) mentions "That will install the pysc2 package along with all the required dependencies." but that doesn't seem to be the case for me so I'm wondering what I might be doing wrong. I had some luck hunting down a few of the missing dependencies on my own SDL: sudo apt-get install libsdl1.2-dev FREETYPE: sudo apt-get install libfreetype6-dev but am still missing the following: Hunting dependencies... SDL : found 1.2.15 FONT : not found IMAGE : not found MIXER : not found PNG : not found JPEG : not found SCRAP : not found PORTMIDI: not found PORTTIME: not found FREETYPE: found 2.5.2 Missing dependencies Complete output from command python egg_info: WARNING, No "Setup" File Exists, Running "" Using UNIX configuration... Hunting dependencies... SDL : found 1.2.15 FONT : not found IMAGE : not found MIXER : not found PNG : not found JPEG : not found SCRAP : not found PORTMIDI: not found PORTTIME: not found FREETYPE: found 2.5.2 Missing dependencies ---------------------------------------- Cleaning up... Removing temporary dir /home/username/py3env/build... Command python egg_info failed with error code 1 in /home/username/py3env/build/pygame Exception information: Traceback (most recent call last): File "/home/username/py3env/lib/python3.4/site-packages/pip/", line 122, in main status =, args) File "/home/username/py3env/lib/python3.4/site-packages/pip/commands/", line 278, in run requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle) File "/home/username/py3env/lib/python3.4/site-packages/pip/", line 1229, in prepare_files req_to_install.run_egg_info() File "/home/username/py3env/lib/python3.4/site-packages/pip/", line 325, in run_egg_info command_desc='python egg_info') File "/home/username/py3env/lib/python3.4/site-packages/pip/", line 697, in call_subprocess % (command_desc, proc.returncode, cwd)) pip.exceptions.InstallationError: Command python egg_info failed with error code 1 in /home/username/py3env/build/pygam (changed user folder name to username). I've tried the installation both with python 2.7.6 and 3.4.3 (the above error being the python 3 run)RadioFreZerg4 Aug 15
Aug 14 Creating lobby for an AI vs AI It is mentioned in docs that API supports offline matchmaking of AI against AI. But how can I create a lobby for that? Or for now we can only toy with built-in AI to play against?Challenger10 Aug 14
Aug 13 Tutorial 1 HELP. What Do I do? So i've gotten to tutorial 1 and was trying to run the example. In my Xcode, it says "build succeeded, but then nothing happens. Is the game suppose to open up on its own upon running the script? Is there a path to game that i have to add somewhere?avilo2 Aug 13
Aug 13 [Dev On Linux] Missing sc2api.pb.h Hello, I'm trying to build a simple bot. I already managed to build a bot within the provided VS2017 environement under windows, but now I would like to work on my main environment. On Linux, my first build can't complete because "sc2api.pb.h" is missing. I guess it's something about protocol buffers. How can I get this file? Regards. FadeFadetodeath2 Aug 13
Aug 13 Replay question Hi, I ran the example bot from the C++ api. My question is if it's possible to have a replay saved of an AI vs AI game. I didn't see them in the Replays when I launched the regular Sc2 client, and would like to watch the game again. Thx!Meingjord2 Aug 13
Aug 13 StarCraft II API -- Technical Design DeepMind and Blizzard have been collaborating on building an AI research platform around StarCraft II. The interface we are building into the game to support this is called the “StarCraft II API”. While this high-level design is subject to change, we want to give the community an early look to provide the opportunity for feedback. Goals: Support AI research using StarCraft II. Support a traditional “scripted” interface that allows programmatic control of individual units. Support image-based interfaces that mimic a human’s experience. Available in the retail Windows and Mac game client. Shared Interface: External processes can communicate with the StarCraft II client using a schema defined in the Protocol Buffer format. Open source libraries and example code to simplify getting up and running -- making it unnecessary to know the details of the communication layer. C++ Q1 Python TBD Supports externally launching games and stepping the simulation forward. Can configure games with one or multiple externally created agents/bots. Support for playing against the built-in AI. Initially restricted to offline games. Basic map information at startup. A catalog of all possible commands. A catalog of all units with basic data. The ability to load a replay and examine the state of the game as it plays. Access to a variety of methods of scoring games in progress. Scripted Interface (Alpha in Q1 2017): Allow access to the full state of a game, or just the portion visible to a player. Identification of units by tag. Allow commands to be issued to individual or groups of units. 2D arrays representing grids for visibility and creep. Under consideration: A mechanism to query for pathing. Debug markers and debug text. Set debug camera placement. Vision-Based Interface (Date TBD): Simplified low resolution image data for map & minimap: Terrain heightfield Visibility Creep Camera Units Player ownership Unit type Selection status Hit points, energy and shields Allow selection and targeting in screenspace. Allow commands to be sent to selected units. Future Releases: Support for setting up a human vs. AI game. New interface type for actual game rendering of the map and minimap for pure visual processing.Traysent59 Aug 13
Aug 11 tournament replays doesn't work I cannot get the WCS Austin replays work, though my own ladder replays works fine. I'm using the code from in the example folder. I downloaded the replays here: Aug 11
Aug 11 Best way to get the entire state of a replay? Real title: What is the best way to get the entire game state of a replay at a specific time? I don't see any straight forward way to do this, so I'm planning on building an API for it, but if someone from blizzard could help me get started, that would be great. I basically want to make this function: GameState getGameState(Replay, Time) Where GameState includes everything, including: All units, and their health and location All structures and their health and location The various scores of both players The visibility of each unit and structure from the perspective of both players The last-seen visibility data for structures, and if it's possible, the last time it was seen* *What I mean by last-seen visibility is how when a structure stops being visible to a player, the player can still view that structure on their map. Also, I don't mind doing the calculations, but if there is a built in way to determine the exact time when a structure went invisible to a player, that would be helpful I see there are a lot of classes in the API that seem to provide the data I need, but there are very few examples that I can find on how to use them. And from what I can tell, when viewing replays, the only way to move through a replay is by stepping rather than just going to a specific time. Do replays have to be calculated from the beginning of time or something? If someone helps me out, I will publish my work publicly so others can make use of it. Thanks in advanceBlix1 Aug 11
Aug 11 Raw API "hello world" bot example Is there any hello world bot examples for raw sc2 api?Challenger7 Aug 11
Aug 11 How does Debug()->DebugTextOut() work? Hello! i am working on a bot for starcraft 2 and i need to print some info to the screen, i am using Debug()->DebugTextOut("Test123"); and its not working? its in the OnStep() function.pancakes1 Aug 11
Aug 10 PowerSource definition I just opened this issue ( over at the github. Does anyone here have a better idea of why that's there? It seems odd to me that it is where it is, but it also seems odd that this would've flown under the radar into production. I guess it is the first release..braaedy0 Aug 10
Aug 9 StarCraft II API Update We wanted to give you all an update on the progress of the StarCraft II API. Blizzard and DeepMind remain hard at work together defining the API and infrastructure needed to do world class research in StarCraft II. Like many research projects we’ve been learning a lot as we’ve gone along on this new endeavor. We’re eager to get a polished set of tools and documentation into the hands of researchers and developers as soon as possible. Originally we’d hoped to have the API ready by Q1 of this year but think it’s best to shift the official release back to this summer to provide a level of quality and completeness that we know you expect from us. We appreciate everyone’s patience as we continue to work on the API – our goal is to bring you the best possible tool, with thorough documentation.Kevin Calderone21 Aug 9
Aug 2 Sooo...what's going on with the DeepMind? A google search reveals no new information since the Blizzcon announcement. Would love to hear about the progress in this sector.Computer7 Aug 2
Jul 19 AI API release date I know this was already asked somewhere, but it's summer already. Can you guys share with us a concrete release date? I'm looking for a hobby project this summer.Tokman8 Jul 19
Jul 4 Move window during game, legal ? Dear, * is it legal to play in windowed mode and to move the window during a rated game (with a hotkey of course) so the minimap is located in the center of the screen? * is it legal to use AutoHotKey to create such a hotkey (if not, what would be a legal way of moving the window during a game?) Note: I got an eye disease several years ago, and since then I cannot move eyes to the corners of a screen/window.Solarius1 Jul 4
Jun 5 What happened to the Old AI Module? The Old AI Module in the sc2 editor I remember using, let me tell the AI the complete build order for its units, structures, and town expandsions as well as define the attack waves. The one the editor has now only lets me define the attack waves. So,... yeah, what happened to the old one and how do i get it back? The editor it self seems to be missing alot of the commands I used, like select all units within a region, and sending the last selected units to attack, targeting a point or player. Even after seting up an AI in the module and then useing a trigger to start that "AI" the attack waves never took place. Maybe its because I didnt set up the points part of it I dont know. I figure it would just automaticly target my main base, or the closest base, but I guess it dont. I set up the gather point in the map and the AI, and the attack point, and also added a trigger to tell the AI to begin all its attack waves 15 seconds into the game, so maybe it will work now. I'm gunna cross my fingers and hope my new settings fix this.BoWGoDD0 Jun 5