Preparing Game Data Starcraft 2 May 2026
df.to_parquet('sc2_actions.parquet', compression='snappy') If you control the game (bot development):
import sc2reader replay = sc2reader.load_file("path/to/replay.SC2Replay") print(f"Map: replay.map_name") print(f"Duration: replay.real_length") preparing game data starcraft 2
Example save:
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 ) 'UpgradeCompleteEvent'] and event.second <
Example skeleton:
import pandas as pd actions = [] for event in replay.events: if hasattr(event, 'second'): actions.append( 'time_sec': event.second, 'event_type': event.name, 'player': getattr(event, 'player', None), 'unit_type': getattr(event, 'unit_type_name', None), 'position': getattr(event, 'location', None) ) df = pd.DataFrame(actions) Create a time-aligned representation: every 5 seconds, record game state (supply, workers, army, buildings, resources). = 180: data.append( 'time': event.second
import numpy as np state_data = [] timeline = np.arange(0, replay.real_length.seconds, 5)