Preparing Game Data Starcraft 2 [exclusive] -
data = [] for event in replay.events: if event.name in ['UnitBornEvent', 'UpgradeCompleteEvent'] and event.second <= 180: data.append( 'time': event.second, 'type': event.name, 'unit': getattr(event, 'unit_type_name', None), 'upgrade': getattr(event, 'upgrade_type_name', None), 'player_race': event.player.play_race, 'winner': 1 if event.player == replay.winner else 0 )
import sc2reader replay = sc2reader.load_file("path/to/replay.SC2Replay") print(f"Map: replay.map_name") print(f"Duration: replay.real_length")
df.to_parquet('sc2_actions.parquet', compression='snappy') If you control the game (bot development): preparing game data starcraft 2
for player in replay.players: print(f"player.name (player.race) – MMR: player.mmr") Extract unit events, upgrades, resources, and positions:
| Source | Format | Use Case | |--------|--------|----------| | | Binary / MPQ archive | Full game state reconstruction, player actions, timings | | Live game state (via API) | JSON (via SC2API) | Real-time bot development, decision-making models | | Match history (Blizzard API) | JSON | Win rates, map stats, ladder ranking | data = [] for event in replay
Here’s a comprehensive, step-by-step guide to for machine learning, replay analysis, or build order mining. 1. Understanding SC2 Data Sources You have three primary sources of game data:
Example skeleton:
import numpy as np state_data = [] timeline = np.arange(0, replay.real_length.seconds, 5)
