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('--sample_rate', type=int, default=3, help='Sample rate for actions') argparser.add_argument('--history_steps', type=int, default=3, help='Number of history steps to keep') argparser.add_argument('--model_name', type=str, default='', help='Name of the model to use') argparser.add_argument('--base_url', type=str, default='', help='Base URL for the game server') argparser.add_argument('--api_key', type=str, default='', help='API key for authentication') 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) sample_rate = args.sample_rate history_steps = args.history_steps base_url = args.base_url api_key = args.api_key print(f"Starting game: {game} at level {level}") print(f"Action file: {action_file}") print(f"Game id: {game_id}") params = { "model_path": args.model_name, "base_url": base_url, "api_key": api_key } stop_event = threading.Event() stop_event.clear() runner = PlaygroundPipelineRunner( game=game, level=level, history_steps=history_steps, action_file=action_file, game_id=game_id, stop_event=stop_event, params=params, sample_rate=sample_rate ) runner.run() stop_event.set() run_lock = FileLock(os.path.join(".", "runs", "run.lock")) with run_lock: os.system(f"rm -rf {output_dir}")