def main(): parser = argparse.ArgumentParser(description='LUBAN runner') register_model_args(parser) register_game_args(parser) params, unparsed = parser.parse_known_args(sys.argv) params.game_variables = [('health', 101), ('sel_ammo', 301)] params.frame_skip = 3 params.eval_time = 900 sess = tf.Session() agent = Agent(sess, params) agent.load("./checkpoint") action_builder = ActionBuilder(params) game = Game(scenario='full_deathmatch', action_builder=action_builder, score_variable='USER2', freedoom=True, screen_resolution='RES_400X225', screen_format='CRCGCB', use_screen_buffer=True, use_depth_buffer=False, labels_mapping="", game_features="target,enemy", mode=('SPECTATOR' if params.human_player else 'PLAYER'), render_hud=False, render_crosshair=True, render_weapon=True, freelook=params.freelook, visible=0, n_bots=4, use_scripted_marines=True) game.start(map_id=3) game.init_bots_health(100) n_iter = 0 last_states = [] # eval_time: seconds, 35: fps, eval_time*35: total frames while n_iter * params.frame_skip < params.eval_time * 35: n_iter += 1 if game.is_player_dead(): game.respawn_player() # TODO: add reset method to network # network.reset() # observe the game state / select the next action game.observe_state(params, last_states) # single frame screen1 = last_states[11].screen.reshape((1, 1, 60, 108, 3)) screen1 = screen1.astype(np.float32) / 255. # two frame screen2 = np.array([ last_states[i + 10].screen.transpose((1, 2, 0)) for i in range(2) ]).reshape((1, 2, 60, 108, 3)) screen2 = screen2.astype(np.float32) / 255. # four frame screen4 = np.array([ last_states[i + 8].screen.transpose((1, 2, 0)) for i in range(4) ]).reshape((1, 4, 60, 108, 3)) screen4 = screen4.astype(np.float32) / 255. # eight frame screen8 = np.array([ last_states[i + 4].screen.transpose((1, 2, 0)) for i in range(8) ]).reshape((1, 8, 60, 108, 3)) screen8 = screen8.astype(np.float32) / 255. # eight frame screen12 = np.array([ last_states[i].screen.transpose((1, 2, 0)) for i in range(12) ]).reshape((1, 12, 60, 108, 3)) screen12 = screen12.astype(np.float32) / 255. action, output_gf = agent.choose_action(screen2) ''' if action == 0: action = 5 elif action == 1: action = 7 elif action == 2: action = 9 elif action == 3: action = 2 elif action == 4: action = 4 else: action = 0 ''' print("target: %.4f, enemy: %.4f" % (output_gf[0][0], output_gf[0][1])) #action = np.random.randint(0, 29) print( "health: %d\tsel_ammo: %d\taction: %d" % (last_states[3].variables[0], last_states[3].variables[1], action)) sleep = 0.01 game.make_action(action, frame_skip=params.frame_skip, sleep=sleep) game.close() game.print_statistics()
grid_matrix = g.reshape((10, 10)) grid_matrix[3, 4] = 0 grid_matrix[5, 5] = 0 grid_matrix[6, 7] = 0 grid_matrix[7, 7] = 0 np.save('grid.npy', grid_matrix) grid_matrix = np.load('grid.npy') grid_matrix /= 2.0 g2 = copy.deepcopy(grid_matrix) are = arena(grid_matrix, False) # are = arena(grid_matrix,True) a1 = Agent(0.42, .46, .25, 0, np.array([3, 4]), are) a1.load = False # a2 = Agent(0.2,3,4,3,np.array([5,5]),2,are) # a2.load = True a3 = Agent(.49, .2, .2, 2, np.array([6, 7]), are) a3.load = False a2 = Agent(.3, .25, .3, 0, np.array([7, 7]), are) a2.load = False # are.add_agents([a4,a2,a3,a1]) are.add_agents([a1, a2, a3]) g1 = are.grid_matrix gm = []