Skip to main content

design, run and test desired situations using human, AI, bot or computer control

Project description

PyPI Build Status Coverage Status Crates.io

Starcraft 2 Scenario Simulator

About

This package's purpose to enable an interface for multiple players with various Starcraft 2 agents to play a variety of pre-built or generated scenarios. The uses of this package are diverse, including AI agent training.

Editor Screenshots

editor -- roach is having a bad day reapers vs lurkers big choke battle

Example simulator gameplay

(Reserved)

Status

This package is in beta testing. Reference the defined issues to get a better idea of what is and is not working. If something is discovered to not be working, kindly do submit a new issue!

Rationale: Why Create this Repository?

While a variety of situations can be encountered over the course of many, many melee games, there are several problems with this approach. Specific situations occur infrequently, possibly once in the course of a match (which normally elapses ~20 minutes, up to over an hour at realtime speed) and may not occur even once in many hundreds of matches. This makes training difficult, slow and require significantly more data.

By allowing situations to be created artificially, the user may test their agent's functionality against it. A specific battery of tests can be created to compare performance of implementations against each other. It also allows for a specific type of situation to be created and tested quickly with slight variations to enhance the player's learing speed.

Functionality

Brief Overview

  1. The simulator is invoked with specific options.

    • The scenario mini-editor: if the editor is invoked using --editor, a mini-editor appears to create or modify a scenario for play. Unless the option is selected to also play the specified scenario, the editor closes.

    • Regression testing: when specifying --regression, a predefined battery of test scenarios is run using same functionality as custom games except scenario selection criteria are ignored in favor of each predefined scenario setup.

    • Custom Scenarios: The --custom option allows a player to set up a specific scenario to test, including the opponent's setup. Each agent joins an existing scenario by using the --join option.

    • Join: The --join option allows a player to specify at most its own agent and optionally its required opponent. All other parameters of the scenario are determined by the scenario creator.

  2. Each player connects to the game automatically via the sc2gameLobby package. This occurs by default over Versentiedge's public matchmaking ladder server.

  3. Once in-game, the scenario is setup.

    • if upgrades are specified, each player's client controller creates the tech producing units and (with cheats enabled) automatically researches the scenario-specified upgrades. This will elapse at most an additional 21 seconds on top of the specified scenario duration. (This is required due to behavior in Blizzard's API protocol.)

    • The host removes existing units and then creates the units as specified by the scenario.

  4. gameplay continues for as long as is specified using the --duration option.

  5. the scenario can be repeated multiple times as specified using the --loops option. Steps 2-4 are repeated for each loop of the same scenario.

  6. A replay is saved locally by each player for each scenario iteration.

Example Commands

python -m sc2simulator --editor --mapname=parasite

python -m sc2simulator --custom --unitsMax=7 --ground --players=defaulthuman,blizzbot5_hard --ladder=True

python -m sc2simulator --race=zerg --enemyrace=terran --defense=3 --year=2018 --season=3 --players=defaulthuman,blizzbot5_hard

python -m sc2simulator --cases=<yourScenarioName> --mapname=MechDepot --players=test,blizzbot5_hard

NOTE: selecting player 'test' or 'defaulthuman' will allow you to play as a human. Playing with your own custom agent requires additional player setup to define the agents setup and execution/callback functions.

Cautions

  • If your installed Starcraft 2 Maps directory (e.g. C:\Program Files (x86)\Starcraft II\Maps), these maps can be deleted by the editor. Maps of the same name in subfolders beneath Maps... are safe.

  • Including tech upgrades and some features (such as balancing on mineral cost, unit dps, etc.) are only available if you have also access to the sc2techTree package. If interested, petition @ttinies.

  • When playing with your AI/bot, your bot may need to wait a few moments in-game before the scenario is fully setup.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sc2simulator-0.8.2.tar.gz (1.3 MB view hashes)

Uploaded Source

Built Distributions

sc2simulator-0.8.2-py3.6.egg (1.4 MB view hashes)

Uploaded Source

sc2simulator-0.8.2-py3-none-any.whl (1.3 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page