Pysc2 Versions Save

StarCraft II Learning Environment

v4.0

1 year ago

Add C++ environment converters which handle the conversion between the protos used by SC2 environment for actions, observations and specs to a more neural network friendly dictionary of Numpy arrays, with accompanying environment specs. Converters are built as a translation of relevant pieces from sc2_env.py from Python to C++ for speed.

New features include the following

  • 'Raw' and 'visual' modes are supported explicitly.
  • Actions are represented as simple dicts and have a delay member which specifies how many game loops to wait until the next observation is retrieved.
  • The following new observations are available (parameterised by a config proto, see the converter documentation for more detail):
    • Action chosen (for supervised).
    • Own race requested
    • Unit counts and upgrades.
    • Camera, position and size (for raw, indicates where the camera is and when active also hides unit data outside the camera bounds).
    • Opponent race requested (and observed, once a unit has been seen)
    • Player stats vector, unit counts and upgrades.
    • MMR
  • Minimap and screen features have an observation per plane rather than being stacked.
  • Converters can be used both with Python and C++. The C++ code is wrapped using pybind11 facilitating Python use.
  • Converters have been used in this recent work on StarCraftII Unplugged.
  • Support building with Bazel as converters built on C++ requires compilation for any changes made to them.
    • With converters, PySC2 is a mixed Python and C++ repository.
    • Using setup.py will install the Python only components of the package.
    • Converters require either building with Bazel or can be pulled from pypi. Only Linux is supported at present.
  • Drop Python 2 support, bump minimum version to Python 3.8+
    • Remove references to six, future, whichcraft.which.
    • Fix lint errors arising from py2-> py3 transformation.
  • Fix fickle tests that fail because of obsolete code, proto dependencies, timeout or unavailable maps.
  • Update PySC2 master documentation in line with these changes.
  • Remove unnecessary patches that have been fixed in upstream repos.

v3.0

4 years ago

This is a fairly big release adding support for recent versions, many new observations, various new features, and bug fixes. In particular the raw actions are fairly well supported.

Changes:

  • Add raw observations and actions
  • Support the new actions, research, etc from the 4.7.1 and 4.10.1 balance patches.
  • Many new observations:
    • alerts
    • hallucinations
    • cloaked
    • blips
    • buffs
    • effects
    • upgrades
    • active
    • pathable
    • buildable
    • rally
    • orders
    • cargo
    • radar rings
    • map name
    • races
    • full response observation protobuf
  • Unit tests for some new observations.
  • Support newer versions of the game
  • Support the newest ladder maps.
  • Support playing on battle.net maps.
  • Support specifying the bot build
  • Support training on random maps/races.
  • Remove the long deprecated arguments to sc2_env.
  • Force player arguments to be set and valid.
  • Force player names to be unique to avoid an bug in the game where they control the same side.
  • Connect to an existing instance
  • Track and induce action delays to simulate latency
  • Fix shrinking pygame window size.
  • Fix deadlock in resizing the pygame window.
  • Script to update your battle.net cache based on replays.
  • Better error handling and error messages
  • Better protocol logging
  • Better benchmarking scripts and tooling
  • Better version comparison scripts.
  • Fixed upgrade names.
  • Support multiple maps and races at env creation time.
  • Added an example raw agent.
  • Various fixes for new numpy versions
  • Better support for slicing into NamedNumpyArray's.
  • Support multiple actions per frame (discouraged)
  • Better rendering:
    • Raw grids
    • selection, upgrades, orders, rally, placeholders, start locations, facing, radar rings
    • playable area
    • play with raw actions
    • Camera control during replays
  • Add a basic ascii renderer
  • Various bug small fixes.

v2.0.1

5 years ago

Fix a python 3 compatibility issue.

v2.0

5 years ago

This is a big release that supports self-play, rgb, and new versions of SC2, and comes along with a whole lot of other changes. Unfortunately this needed some breaking changes, but they should be fairly easy to fix as well.

Changes:

  • Add RGB as an observation and action space
  • Add observations for list of units visible in feature layers
  • Add observations for last actions, alerts and errors
  • Support multi-player/self-play through the environment
  • Support different observation types per player when doing self-play
  • Support newer versions of the game, up through 4.3
  • Support the new actions and units from the 4.0 balance patch
  • Better support for launching the right game version for a replay
  • Render RGB through the human renderer, including acting with the rendered actions
  • Easily generate videos of a replay
  • Automatically find the SC2 binary in non-standard setups
  • Add enums for units, functions, argument types, and a few observations
  • Add an easier way to create FunctionCalls
  • Be able to reference bits of the observation by name
  • Script to run all the tests
  • Add a mock environment for easier testing
  • Start testing types with pytype
  • Better error messages
  • Support more actions in the renderer
  • Better rendering of overlays (actions, game speed, selection, build queue)
  • Better IPv6 support
  • Framework for tracking metrics of steps and episodes
  • Allow disabling fog of war
  • Support maps from newer seasons.

Breaking changes:

  • Feature layer observations are renamed from "screen" and "minimap" to "feature_screen" and "feature_minimap" to differentiate from "rgb_screen" and "rgb_minimap"
  • Resolution is no longer optional for environment construction
  • The way to specify player race and difficulty to the environment has changed
  • Races and difficulties are specified as full words, not single letters
  • lib/init.py no longer exports any variables. Get them from lib.actions or lib.features directly.
  • action and observation specs are now tuples to reflect the fact that actions/observations are multiplayer.

Experimental work:

  • Play human vs agent.
  • Play remotely, eg: sc2ai.net ladder.

v1.2

6 years ago
  • Better support for multiple languages.
  • Support versions up to 3.19
  • Start the right version for a replay
  • Use absl for better python3 support
  • Fix some bugs in the mini games

v1.0

6 years ago

This is the initial release of PySC2.