def run_challenge(match_config: MatchConfig, challenge: dict, upgrades: dict) -> Tuple[bool, dict]: """Launch the game and keep track of the state""" setup_manager = SetupManager() setup_manager.early_start_seconds = 5 setup_manager.connect_to_game() setup_manager.load_match_config(match_config) setup_manager.launch_early_start_bot_processes() setup_manager.start_match() setup_manager.launch_bot_processes() game_results = None try: game_results = manage_game_state(challenge, upgrades, setup_manager) except: # no matter what happens we gotta continue traceback.print_exc() print("Something failed with the game. Will proceed with shutdown") # need to make failure apparent to user setup_failure_freeplay(setup_manager, "The game failed to continue") return False, {} setup_manager.shut_down() return game_results
def start_match_helper(bot_list, match_settings): print(bot_list) print(match_settings) match_config = MatchConfig() match_config.game_mode = match_settings['game_mode'] match_config.game_map = match_settings['map'] match_config.skip_replays = match_settings['skip_replays'] match_config.instant_start = match_settings['instant_start'] match_config.enable_lockstep = match_settings['enable_lockstep'] match_config.enable_rendering = match_settings['enable_rendering'] match_config.enable_state_setting = match_settings['enable_state_setting'] match_config.auto_save_replay = match_settings['auto_save_replay'] match_config.existing_match_behavior = match_settings['match_behavior'] match_config.mutators = MutatorConfig() mutators = match_settings['mutators'] match_config.mutators.match_length = mutators['match_length'] match_config.mutators.max_score = mutators['max_score'] match_config.mutators.overtime = mutators['overtime'] match_config.mutators.series_length = mutators['series_length'] match_config.mutators.game_speed = mutators['game_speed'] match_config.mutators.ball_max_speed = mutators['ball_max_speed'] match_config.mutators.ball_type = mutators['ball_type'] match_config.mutators.ball_weight = mutators['ball_weight'] match_config.mutators.ball_size = mutators['ball_size'] match_config.mutators.ball_bounciness = mutators['ball_bounciness'] match_config.mutators.boost_amount = mutators['boost_amount'] match_config.mutators.rumble = mutators['rumble'] match_config.mutators.boost_strength = mutators['boost_strength'] match_config.mutators.gravity = mutators['gravity'] match_config.mutators.demolish = mutators['demolish'] match_config.mutators.respawn_time = mutators['respawn_time'] human_index_tracker = IncrementingInteger(0) match_config.player_configs = [create_player_config(bot, human_index_tracker) for bot in bot_list] match_config.script_configs = [create_script_config(script) for script in match_settings['scripts']] global sm if sm is not None: try: sm.shut_down() except Exception as e: print(e) sm = SetupManager() sm.early_start_seconds = 5 sm.connect_to_game() sm.load_match_config(match_config) sm.launch_early_start_bot_processes() sm.start_match() sm.launch_bot_processes()