def rollout(device, vision, action, n_steps=200): race_config = pystk.RaceConfig(num_kart=1, track='icy_soccer_field', mode=pystk.RaceConfig.RaceMode.SOCCER) o = pystk.PlayerConfig(controller=pystk.PlayerConfig.Controller.AI_CONTROL, team=0) race_config.players.append(o) k = pystk.Race(race_config) k.start() for i in range(5): #Skip the first 5 steps since its the game starting k.step() try: data = [] for n in range(n_steps): k.step() la = k.last_action[0] data.append( (np.array(k.render_data[0].image), (la.steer, la.acceleration, la.brake) )) #TODO: remove /10 later 3 in this script and 1 in player finally: k.stop() del k return data
def rollout(num_players=4, max_steps=1000, track='icy_soccer_field', save='train_data_temp'): config = pystk.GraphicsConfig.hd() config.screen_width = 400 config.screen_height = 300 pystk.init(config) race_config = pystk.RaceConfig(num_kart=num_players, track=track, mode=pystk.RaceConfig.RaceMode.SOCCER) race_config.players.pop() if not os.path.exists(save): os.makedirs(save) for i in range(num_players): o = pystk.PlayerConfig( controller=pystk.PlayerConfig.Controller.AI_CONTROL, team=int((i + 1) % 2.0)) race_config.players.append(o) active_players = race_config.players print('Number of Players', len(active_players)) k = pystk.Race(race_config) k.start() k.step() # all_images = [] all_actions = [] state = pystk.WorldState() for t in range(max_steps): print('step:', t) state.update() s = k.step() t_actions = [] for i in range(num_players): la = k.last_action[i] img = np.array(k.render_data[i].image) a = (img, la.steer, la.acceleration, la.brake) t_actions.append(a) if save is not None: PIL.Image.fromarray(img).save( os.path.join(save, 'player%02d_%05d.png' % (i, t))) with open(os.path.join(save, 'player%02d_%05d.csv' % (i, t)), mode='w') as new_data: writer = csv.writer(new_data) writer.writerow(a[1:]) all_actions.append(t_actions) if not s: break print('score', state.soccer.score) return all_actions
def rollout(epoch=0, num_players=2, max_steps=1000, track='icy_soccer_field', save='train_data_two_players'): race_config = pystk.RaceConfig(num_kart=num_players, track=track, mode=pystk.RaceConfig.RaceMode.SOCCER, difficulty=2) race_config.players.pop() if not os.path.exists(save): os.makedirs(save) for i in range(num_players): o = pystk.PlayerConfig(controller = pystk.PlayerConfig.Controller.AI_CONTROL, team = int(i%2.0)) race_config.players.append(o) active_players = race_config.players print('Number of Players',len(active_players)) k = pystk.Race(race_config) k.start() try: k.step() # all_images = [] all_actions = [] state = pystk.WorldState() state.update() # print(dir(state.players[0].kart)) # input() for t in range(max_steps): # print('step:',t) state.update() s = k.step() t_actions = [] for i in range(num_players): la = k.last_action[i] img = np.array(k.render_data[i].image) a = [img, la.steer, la.acceleration, la.brake] a.extend(state.players[0].kart.rotation) a.extend(state.players[0].kart.velocity) a.extend(state.players[0].kart.location) t_actions.append(a) if save is not None: PIL.Image.fromarray(img).save(os.path.join(save, 'player_%05d_%02d_%05d.png' % (epoch, i, t))) with open(os.path.join(save, 'player_%05d_%02d_%05d.csv' % (epoch, i, t)), mode='w') as new_data: writer = csv.writer(new_data) writer.writerow(a[1:]) all_actions.append(t_actions) if not s: break print('epoch',e,'score',state.soccer.score) finally: k.stop() del k return all_actions
def main(): config = pystk.GraphicsConfig.hd() config.screen_width = 800 config.screen_height = 600 pystk.init(config) config = pystk.RaceConfig() config.num_kart = 2 # config.track ='battleisland' config.track = 'stadium' config.players[0].controller = pystk.PlayerConfig.Controller.PLAYER_CONTROL config.players[0].team = 0 # NOTE: Add 4 players for _ in range(3): config.players.append( # pystk.PlayerConfig(args.kart, pystk.PlayerConfig.Controller.AI_CONTROL, (args.team + 1) % 2)) pystk.PlayerConfig('', pystk.PlayerConfig.Controller.AI_CONTROL, 1)) config.mode = config.RaceMode.THREE_STRIKES # TODO: Look at step size? # config.step_size = args.step_size race = pystk.Race(config) race.start() race.step() uis = [gui.UI(gui.VT['IMAGE']) for i in range(4)] state = pystk.WorldState() state.update() t0 = time() if not all(ui.pause for ui in uis): race.step(uis[0].current_action) state.update() for ui, d in zip(uis, race.render_data): ui.show(d) input('press enter to continue') race.stop() del race pystk.clean()
def config(self): return pystk.PlayerConfig( controller=pystk.PlayerConfig.Controller.AI_CONTROL, team=self.team)
config = pystk.GraphicsConfig.hd() config.screen_width = 400 config.screen_height = 300 pystk.init(config) config = pystk.RaceConfig() config.num_kart = 2 if args.kart is not None: config.players[0].kart = args.kart config.players[0].controller = pystk.PlayerConfig.Controller.PLAYER_CONTROL config.players[0].team = args.team for i in range(1, args.num_player): config.players.append( pystk.PlayerConfig(args.kart, pystk.PlayerConfig.Controller.AI_CONTROL, (args.team + 1) % 2)) if args.track is not None: config.track = args.track if args.track in soccer_tracks: config.mode = config.RaceMode.SOCCER if args.step_size is not None: config.step_size = args.step_size race = pystk.Race(config) race.start() uis = [gui.UI([gui.VT[x] for x in args.visualization]) for i in range(args.num_player)] save_depth = "DEPTH" in args.visualization save_labels = "SEMANTIC" in args.visualization or "INSTANCE" in args.visualization
config = pystk.GraphicsConfig.ld() render = False config.screen_width = 320 config.screen_height = 240 pystk.init(config) init_time, t0 = time() - t0, time() config = pystk.RaceConfig(render=render) if args.kart != '': config.players[0].kart = args.kart if args.track is not None: config.track = args.track if args.step_size is not None: config.step_size = args.step_size for i in range(1, args.num_player): config.players.append(pystk.PlayerConfig(args.kart, pystk.PlayerConfig.Controller.AI_CONTROL)) race = pystk.Race(config) race_time, t0 = time() - t0, time() race.start() race.step() start_time, t0 = time() - t0, time() for it in range(500): race.step() if len(race.render_data): race.render_data[0].image race.render_data[0].depth race.render_data[0].instance step_time, t0 = time() - t0, time()
render = False config.screen_width = 320 config.screen_height = 240 pystk.init(config) init_time, t0 = time() - t0, time() config = pystk.RaceConfig(render=render) if args.kart != '': config.players[0].kart = args.kart if args.track is not None: config.track = args.track if args.step_size is not None: config.step_size = args.step_size for i in range(1, args.num_player): config.players.append( pystk.PlayerConfig(args.kart, pystk.PlayerConfig.Controller.AI_CONTROL)) race = pystk.Race(config) race_time, t0 = time() - t0, time() race.start() start_time, t0 = time() - t0, time() for it in range(500): race.step() step_time, t0 = time() - t0, time() for it in range(5): race.restart() restart_time, t0 = time() - t0, time() print(' graphics', init_time)
def config(self): return pystk.PlayerConfig( controller=pystk.PlayerConfig.Controller.PLAYER_CONTROL, kart=self.player.kart, team=self.team)
config = pystk.GraphicsConfig.hd() config.screen_width = 400 config.screen_height = 300 pystk.init(config) config = pystk.RaceConfig() config.track = "icy_soccer_field" config.mode = config.RaceMode.SOCCER config.step_size = 0.1 config.num_kart = 2 config.players[0].kart = "wilber" config.players[0].controller = pystk.PlayerConfig.Controller.PLAYER_CONTROL config.players[0].team = 0 config.players.append( pystk.PlayerConfig("", pystk.PlayerConfig.Controller.AI_CONTROL, 1)) race = pystk.Race(config) race.start() uis = [gui.UI([gui.VT['IMAGE']])] state = pystk.WorldState() t0 = time() n = 0 ax = plt.gcf().add_subplot(3, 3, 9) # Hard coded goal line goal_line = np.array([[[-10.449999809265137, 0.07000000029802322, -64.5], [10.449999809265137, 0.07000000029802322, -64.5]],
'amanda', 'emule', 'suzanne', 'gavroche', 'hexley', 'xue', 'pidgin', 'puffy', 'wilber', 'wilber', 'wilber', 'wilber', 'wilber', 'wilber', 'wilber', 'wilber', 'wilber' ] config = pystk.RaceConfig() config.num_kart = 4 config.difficulty = 2 num_player = 4 config.players[0].controller = pystk.PlayerConfig.Controller.PLAYER_CONTROL for i in range(3): config.players.append( pystk.PlayerConfig(random.choice(possible_karts), pystk.PlayerConfig.Controller.AI_CONTROL, (args.team + i + 1) % 2)) config.players[0].team = args.team for p in config.players: if ((p.team) % 2 == 1): p.kart = random.choice(possible_karts) else: p.kart = 'wilber' if args.track is not None: config.track = args.track if args.track in soccer_tracks: config.mode = config.RaceMode.SOCCER if args.step_size is not None:
config = pystk.GraphicsConfig.hd() config.screen_width = 400 config.screen_height = 300 pystk.init(config) config = pystk.RaceConfig() config.track = "icy_soccer_field" config.mode = config.RaceMode.SOCCER config.step_size = 0.1 config.num_kart = 4 config.players[0].kart = "wilber" config.players[0].controller = pystk.PlayerConfig.Controller.PLAYER_CONTROL config.players[0].team = 0 config.players.append( pystk.PlayerConfig("", pystk.PlayerConfig.Controller.AI_CONTROL, 1)) config.players.append( pystk.PlayerConfig("", pystk.PlayerConfig.Controller.PLAYER_CONTROL, 0)) config.players.append( pystk.PlayerConfig("", pystk.PlayerConfig.Controller.AI_CONTROL, 1)) config.difficulty = 2 race = pystk.Race(config) race.start() uis = [gui.UI([gui.VT['IMAGE']])] state = pystk.WorldState() t0 = time() n = 0