def create_collector_env_gym(seed): options = { "world_dim": int(16), "init_locator_type": int(3), "num_goals_green": int(1), "num_goals_red": int(1), "num_resources_green": int(0), "num_resources_red": int(0), "num_fuel": int(0), "num_obstacles": int(2), "goal_max": 20.0, "goal_init": 0.0, "agent_max_fuel": 100.0, "agent_init_fuel": 100.0, "agent_max_resources": 100.0, "agent_init_resources_green": 20.0, "agent_init_resources_red": 10.0, } kwargs = { "start_level": seed if seed is not None else 102, "num_levels": 10, "additional_obs_spaces": [ ProcgenEnv.C_Space("state_ship", False, (9, ), float, (-1e6, 1e6)), ProcgenEnv.C_Space( "state_goals", False, ((options["num_goals_green"] + options["num_goals_red"]) * 4, ), float, (-1e6, 1e6)), ProcgenEnv.C_Space("state_resources", False, ((options["num_resources_green"] + options["num_resources_red"]) * 4, ), float, (-1e6, 1e6)), ProcgenEnv.C_Space("state_obstacles", False, (options["num_obstacles"] * 3, ), float, (-1e6, 1e6)) ], 'max_episodes_per_game': 0, "options": options } # env = gym.make('procgen:procgen-collector-v0',**kwargs) env = ProcgenEnv(num_envs=9, env_name="collector", **kwargs) dtv = DictToVec([ space.name for space in kwargs["additional_obs_spaces"] if np.prod(space.shape) > 0 ]) env = StateTransformerEnv(env, dtv) return env
def main(): parser = argparse.ArgumentParser() parser.add_argument("--vision", choices=["agent", "human"], default="human") parser.add_argument("--record-dir", help="directory to record movies to") parser.add_argument( "--distribution-mode", default="hard", help="which distribution mode to use for the level generation") parser.add_argument("--level-seed", type=int, help="select an individual level to use") parser.add_argument("--use-generated-assets", help="using autogenerated assets", choices=["yes", "no"], default="no") args = parser.parse_args() kwargs = {"distribution_mode": args.distribution_mode} kwargs["use_generated_assets"] = True if (args.use_generated_assets == "yes") else False if args.level_seed is not None: kwargs["start_level"] = args.level_seed kwargs["num_levels"] = 1 world_dim = int(10) kwargs["additional_info_spaces"] = [ ProcgenEnv.C_Space("state", False, (7 + world_dim * world_dim, ), bytes, (0, 255)) ] kwargs["options"] = { 'world_dim': world_dim, 'wall_chance': 0.5, 'fire_chance': 0.3, 'water_chance': 0.2, 'num_keys': int(2), 'num_doors': int(1), 'with_grid_steps': True, 'completion_bonus': 10.0, 'fire_bonus': -5.0, 'water_bonus': -2.0, 'action_bonus': -1.0, } ia = ProcgenInteractive(args.vision, True, env_name="heistpp", **kwargs) ia.skip_info_out("state") step_cb = HeistppStatePlotter(world_dim, 1) ia.add_step_callback(step_cb) ia.run(record_dir=args.record_dir)
def main(): parser = argparse.ArgumentParser() parser.add_argument("--vision", choices=["agent", "human"], default="human") parser.add_argument("--record-dir", help="directory to record movies to") parser.add_argument("--distribution-mode", default="hard", help="which distribution mode to use for the level generation") parser.add_argument("--level-seed", type=int, help="select an individual level to use") parser.add_argument("--use-generated-assets", help="using autogenerated assets", choices=["yes","no"], default="no") args = parser.parse_args() kwargs = {"distribution_mode": args.distribution_mode} kwargs["use_generated_assets"] = True if (args.use_generated_assets == "yes") else False if args.level_seed is not None: kwargs["start_level"] = args.level_seed kwargs["num_levels"] = 1 world_dim = int(10) kwargs["additional_info_spaces"] = [ProcgenEnv.C_Space("state", False, (7+world_dim*world_dim,), bytes, (0,255))] kwargs["options"] = { 'world_dim':world_dim, 'wall_chance':0.5, 'fire_chance':0.3, 'water_chance':0.2, 'num_keys':int(2), 'num_doors':int(1), 'with_grid_steps':True, 'completion_bonus':10.0, 'fire_bonus':-5.0, 'water_bonus':-2.0, 'action_bonus':-1.0, } env = gym.make('procgen:procgen-heistpp-v0') # env = ProcgenEnv(num_envs=1, env_name="heistpp", **kwargs) obs = env.reset() step = 0 while True: env.render() obs, rew, done, info = env.step(np.array([env.action_space.sample()])) print(f"step {step} reward {rew} done {done}") # print(info[0]['state']) step += 1 if done: break env.close()