|
from pysc2.maps import lib |
|
import os |
|
|
|
|
|
class SMACMap(lib.Map): |
|
directory = os.path.join(os.path.dirname(__file__), "maps/SMAC_Maps") |
|
download = "https://github.com/oxwhirl/smac#smac-maps" |
|
players = 2 |
|
step_mul = 8 |
|
game_steps_per_episode = 0 |
|
|
|
|
|
|
|
map_param_registry = { |
|
"3m": { |
|
"n_agents": 3, |
|
"n_enemies": 3, |
|
"limit": 60, |
|
"a_race": "T", |
|
"b_race": "T", |
|
"unit_type_bits": 0, |
|
"map_type": "marines", |
|
}, |
|
"8m": { |
|
"n_agents": 8, |
|
"n_enemies": 8, |
|
"limit": 120, |
|
"a_race": "T", |
|
"b_race": "T", |
|
"unit_type_bits": 0, |
|
"map_type": "marines", |
|
}, |
|
"25m": { |
|
"n_agents": 25, |
|
"n_enemies": 25, |
|
"limit": 150, |
|
"a_race": "T", |
|
"b_race": "T", |
|
"unit_type_bits": 0, |
|
"map_type": "marines", |
|
}, |
|
"5m_vs_6m": { |
|
"n_agents": 5, |
|
"n_enemies": 6, |
|
"limit": 70, |
|
"a_race": "T", |
|
"b_race": "T", |
|
"unit_type_bits": 0, |
|
"map_type": "marines", |
|
}, |
|
"8m_vs_9m": { |
|
"n_agents": 8, |
|
"n_enemies": 9, |
|
"limit": 120, |
|
"a_race": "T", |
|
"b_race": "T", |
|
"unit_type_bits": 0, |
|
"map_type": "marines", |
|
}, |
|
"10m_vs_11m": { |
|
"n_agents": 10, |
|
"n_enemies": 11, |
|
"limit": 150, |
|
"a_race": "T", |
|
"b_race": "T", |
|
"unit_type_bits": 0, |
|
"map_type": "marines", |
|
}, |
|
"27m_vs_30m": { |
|
"n_agents": 27, |
|
"n_enemies": 30, |
|
"limit": 180, |
|
"a_race": "T", |
|
"b_race": "T", |
|
"unit_type_bits": 0, |
|
"map_type": "marines", |
|
}, |
|
"MMM": { |
|
"n_agents": 10, |
|
"n_enemies": 10, |
|
"limit": 150, |
|
"a_race": "T", |
|
"b_race": "T", |
|
"unit_type_bits": 3, |
|
"map_type": "MMM", |
|
}, |
|
"MMM2": { |
|
"n_agents": 10, |
|
"n_enemies": 12, |
|
"limit": 180, |
|
"a_race": "T", |
|
"b_race": "T", |
|
"unit_type_bits": 3, |
|
"map_type": "MMM", |
|
}, |
|
"2s3z": { |
|
"n_agents": 5, |
|
"n_enemies": 5, |
|
"limit": 120, |
|
"a_race": "P", |
|
"b_race": "P", |
|
"unit_type_bits": 2, |
|
"map_type": "stalkers_and_zealots", |
|
}, |
|
"3s5z": { |
|
"n_agents": 8, |
|
"n_enemies": 8, |
|
"limit": 150, |
|
"a_race": "P", |
|
"b_race": "P", |
|
"unit_type_bits": 2, |
|
"map_type": "stalkers_and_zealots", |
|
}, |
|
"infestor_viper": { |
|
"n_agents": 2, |
|
"n_enemies": 9, |
|
"limit": 150, |
|
"a_race": "Z", |
|
"b_race": "Z", |
|
"unit_type_bits": 2, |
|
"map_type": "infestor_viper" |
|
}, |
|
"3s5z_vs_3s6z": { |
|
"n_agents": 8, |
|
"n_enemies": 9, |
|
"limit": 170, |
|
"a_race": "P", |
|
"b_race": "P", |
|
"unit_type_bits": 2, |
|
"map_type": "stalkers_and_zealots", |
|
}, |
|
"3s_vs_3z": { |
|
"n_agents": 3, |
|
"n_enemies": 3, |
|
"limit": 150, |
|
"a_race": "P", |
|
"b_race": "P", |
|
"unit_type_bits": 0, |
|
"map_type": "stalkers", |
|
}, |
|
"3s_vs_4z": { |
|
"n_agents": 3, |
|
"n_enemies": 4, |
|
"limit": 200, |
|
"a_race": "P", |
|
"b_race": "P", |
|
"unit_type_bits": 0, |
|
"map_type": "stalkers", |
|
}, |
|
"3s_vs_5z": { |
|
"n_agents": 3, |
|
"n_enemies": 5, |
|
"limit": 250, |
|
"a_race": "P", |
|
"b_race": "P", |
|
"unit_type_bits": 0, |
|
"map_type": "stalkers", |
|
}, |
|
"1c3s5z": { |
|
"n_agents": 9, |
|
"n_enemies": 9, |
|
"limit": 180, |
|
"a_race": "P", |
|
"b_race": "P", |
|
"unit_type_bits": 3, |
|
"map_type": "colossi_stalkers_zealots", |
|
}, |
|
"2m_vs_1z": { |
|
"n_agents": 2, |
|
"n_enemies": 1, |
|
"limit": 150, |
|
"a_race": "T", |
|
"b_race": "P", |
|
"unit_type_bits": 0, |
|
"map_type": "marines", |
|
}, |
|
"corridor": { |
|
"n_agents": 6, |
|
"n_enemies": 24, |
|
"limit": 400, |
|
"a_race": "P", |
|
"b_race": "Z", |
|
"unit_type_bits": 0, |
|
"map_type": "zealots", |
|
}, |
|
"6h_vs_8z": { |
|
"n_agents": 6, |
|
"n_enemies": 8, |
|
"limit": 150, |
|
"a_race": "Z", |
|
"b_race": "P", |
|
"unit_type_bits": 0, |
|
"map_type": "hydralisks", |
|
}, |
|
"2s_vs_1sc": { |
|
"n_agents": 2, |
|
"n_enemies": 1, |
|
"limit": 300, |
|
"a_race": "P", |
|
"b_race": "Z", |
|
"unit_type_bits": 0, |
|
"map_type": "stalkers", |
|
}, |
|
"so_many_baneling": { |
|
"n_agents": 7, |
|
"n_enemies": 32, |
|
"limit": 100, |
|
"a_race": "P", |
|
"b_race": "Z", |
|
"unit_type_bits": 0, |
|
"map_type": "zealots", |
|
}, |
|
"bane_vs_bane": { |
|
"n_agents": 24, |
|
"n_enemies": 24, |
|
"limit": 200, |
|
"a_race": "Z", |
|
"b_race": "Z", |
|
"unit_type_bits": 2, |
|
"map_type": "bane", |
|
}, |
|
"2c_vs_64zg": { |
|
"n_agents": 2, |
|
"n_enemies": 64, |
|
"limit": 400, |
|
"a_race": "P", |
|
"b_race": "Z", |
|
"unit_type_bits": 0, |
|
"map_type": "colossus", |
|
}, |
|
} |
|
|
|
for name in map_param_registry.keys(): |
|
globals()[name] = type(name, (SMACMap, ), dict(filename=name)) |
|
|
|
|
|
def get_map_params(map_name): |
|
return map_param_registry[map_name] |
|
|