import argparse import pickle import threading import time import os import sys from filelock import FileLock from runner.playground_runner import PlaygroundPipelineRunner argparser = argparse.ArgumentParser(description='Run the game') argparser.add_argument('--game', type=str, default='RaceGame', help='Game to play') argparser.add_argument('--level', type=int, default=1, help='Level to play') argparser.add_argument('--action_file', type=str, default='', help='File to store actions') argparser.add_argument('--game_id', type=str, default='', help='Game id') argparser.add_argument('--params_file', type=str, default='', help='File to store parameters') args = argparser.parse_args() game = args.game level = args.level action_file = args.action_file game_id = args.game_id output_dir = os.path.join(".", "runs", game_id) params_file = args.params_file print(f"Starting game: {game} at level {level}") print(f"Action file: {action_file}") print(f"Game id: {game_id}") params = None if params_file != "": try: params = pickle.load(open(params_file, "rb")) print(f"Loaded params from file: {params}") except Exception as e: print(f"Params : {e}") stop_event = threading.Event() stop_event.clear() runner = PlaygroundPipelineRunner( game=game, level=level, history_steps=3, action_file=action_file, game_id=game_id, stop_event=stop_event, params=params, ) runner.run() stop_event.set() run_lock = FileLock(os.path.join(".", "runs", "run.lock")) with run_lock: os.system(f"rm -rf {output_dir}")