GitXplorerGitXplorer
t

sc2simulator

public
10 stars
2 forks
9 issues

Commits

List of commits on branch master.
Unverified
3d0dd356c8edb8cc0c021fff90697649dc89ec8d

- ensured that specifying duration is saved as a float in subsequent usage

tttinies committed 6 years ago
Unverified
7f3ec172385db6f2d5b38247aeec5e8afd0934a4

- added editor screenshots

tttinies committed 6 years ago
Unverified
d932f4921d0cb18bb347f045eb90bbeff8a66809

- added usage example images in docs

tttinies committed 6 years ago
Unverified
f111c973851b1db717dc5f02e7f94ebc59c00c36

- updated development status: beta testing

tttinies committed 6 years ago
Unverified
fd3d8e7593df82294b30557393a6663249c43a94

- corrected typo

tttinies committed 6 years ago
Unverified
3b94f4a0d1e8c74c2930de828741ff8dcfb1e9b0

- added spacing to example commands

tttinies committed 6 years ago

README

The README file for this repository.

PyPI Build Status Coverage Status Crates.io

Editor Screenshots

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

Example simulator gameplay

(Reserved)

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.

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.