def init(buttons): print("init") game = DoomGame() game.set_vizdoom_path("../../ViZDoom/bin/vizdoom") game.set_doom_game_path("../../ViZDoom/scenarios/freedoom2.wad") game.set_doom_scenario_path("../../ViZDoom/scenarios/basic.wad") game.set_doom_map("map01") game.set_screen_resolution(ScreenResolution.RES_320X240) game.set_screen_format(ScreenFormat.RGB24) game.set_depth_buffer_enabled(True) game.set_labels_buffer_enabled(True) game.set_automap_buffer_enabled(True) # Sets other rendering options game.set_render_hud(False) game.set_render_minimal_hud(False) game.set_render_crosshair(False) game.set_render_weapon(True) game.set_render_decals(False) game.set_render_particles(False) game.set_render_effects_sprites(False) # Adds buttons that will be allowed. for button in buttons: game.add_available_button(button) # Adds game variables that will be included in state. game.add_available_game_variable(GameVariable.AMMO2) game.add_available_game_variable(GameVariable.SELECTED_WEAPON) # Causes episodes to finish after 200 tics (actions) game.set_episode_timeout(300) # Makes episodes start after 10 tics (~after raising the weapon) game.set_episode_start_time(10) # Makes the window appear (turned on by default) game.set_window_visible(True) # Turns on the sound. (turned off by default) game.set_sound_enabled(True) # Sets the livin reward (for each move) to -1 game.set_living_reward(-1) # Sets ViZDoom mode (PLAYER, ASYNC_PLAYER, SPECTATOR, ASYNC_SPECTATOR, PLAYER mode is default) game.set_mode(Mode.PLAYER) # Initialize the game. Further configuration won't take any effect from now on. # game.set_console_enabled(True) game.init() return game
game.set_screen_format(ScreenFormat.RGB24) # Sets other rendering options game.set_render_hud(False) game.set_render_crosshair(False) game.set_render_weapon(True) game.set_render_decals(False) game.set_render_particles(False) # Adds buttons that will be allowed. game.add_available_button(Button.MOVE_LEFT) game.add_available_button(Button.MOVE_RIGHT) game.add_available_button(Button.ATTACK) # Adds game variables that will be included in state. game.add_available_game_variable(GameVariable.AMMO2) # Causes episodes to finish after 200 tics (actions) game.set_episode_timeout(200) # Makes episodes start after 10 tics (~after raising the weapon) game.set_episode_start_time(10) # Makes the window appear (turned on by default) game.set_window_visible(True) # Turns on the sound. (turned off by default) game.set_sound_enabled(True) # Sets the livin reward (for each move) to -1 game.set_living_reward(-1)
if __name__ == "__main__": game = DoomGame() # Use other config file if you wish. game.load_config("scenarios/defend_the_center.cfg") #game.load_config("scenarios/take_cover.cfg") game.set_render_hud(True) game.set_screen_resolution(ScreenResolution.RES_640X480) # Enables labeling of the in game objects. game.set_labels_buffer_enabled(True) game.clear_available_game_variables() game.add_available_game_variable(GameVariable.POSITION_X) game.add_available_game_variable(GameVariable.POSITION_Y) game.add_available_game_variable(GameVariable.POSITION_Z) game.add_available_game_variable(GameVariable.CAMERA_POSITION_X) game.add_available_game_variable(GameVariable.CAMERA_POSITION_Y) game.init() actions = generate_actions(game.get_available_buttons_size(), "single") n_actions = len(actions) episodes = 10 # Sleep time between actions in ms sleep_time = 28
# Sets other rendering options ''' game.set_render_hud(False) game.set_render_crosshair(False) game.set_render_weapon(True) game.set_render_decals(False) game.set_render_particles(False) ''' # Adds buttons that will be allowed. game.add_available_button(Button.MOVE_LEFT) game.add_available_button(Button.MOVE_RIGHT) game.add_available_button(Button.ATTACK) # Adds game variables that will be included in state. game.add_available_game_variable(GameVariable.AMMO2) # Causes episodes to finish after 200 tics (actions) game.set_episode_timeout(200) # Makes episodes start after 10 tics (~after raising the weapon) game.set_episode_start_time(10) # Makes the window appear (turned on by default) game.set_window_visible(True) # Turns on the sound. (turned off by default) game.set_sound_enabled(True) # Sets the livin reward (for each move) to -1 game.set_living_reward(-1)
# Sets other rendering options game.set_render_hud(False) game.set_render_crosshair(False) game.set_render_weapon(True) game.set_render_decals(False) game.set_render_particles(False) # Adds buttons that will be allowed. game.add_available_button(Button.ATTACK) game.add_available_button(Button.TURN_LEFT) game.add_available_button(Button.TURN_RIGHT) game.add_available_button(Button.MOVE_LEFT) game.add_available_button(Button.MOVE_RIGHT) # Adds game variables that will be included in state. game.add_available_game_variable(GameVariable.KILLCOUNT) game.add_available_game_variable(GameVariable.FRAGCOUNT) game.add_available_game_variable(GameVariable.DEATHCOUNT) game.add_available_game_variable(GameVariable.HEALTH) game.add_available_game_variable(GameVariable.ARMOR) game.add_available_game_variable(GameVariable.AMMO0) game.add_available_game_variable(GameVariable.AMMO1) game.add_available_game_variable(GameVariable.AMMO2) game.add_available_game_variable(GameVariable.AMMO3) game.add_available_game_variable(GameVariable.AMMO4) game.add_available_game_variable(GameVariable.AMMO5) game.add_available_game_variable(GameVariable.AMMO6) game.add_available_game_variable(GameVariable.AMMO7) game.add_available_game_variable(GameVariable.AMMO8) game.add_available_game_variable(GameVariable.AMMO9) game.add_available_game_variable(GameVariable.WEAPON0)
def _create_game(self, params, idx, is_train, get_extra_info=False): game = DoomGame() VALID_SCENARIOS = [ 'my_way_home.cfg', 'health_gathering.cfg', 'health_gathering_supreme.cfg', 'health_gathering_supreme_no_death_penalty.cfg', 'deadly_corridor.cfg', 'defend_the_center.cfg', 'defend_the_line.cfg', 'two_color_maze014.cfg', 'labyrinth_maze000.cfg', 'labyrinth_maze11_000.cfg' ] VALID_MULTI_SCENARIOS = [ 'maze_{:003}.cfg', 'custom_scenario{:003}.cfg' 'mino_maze{:003}.cfg', 'labyrinth_maze{:003}.cfg', 'two_item_maze{:003}.cfg', 'six_item_maze{:003}.cfg', 'four_item_maze{:003}.cfg', 'eight_item_maze{:003}.cfg', 'repeated_laby_maze{:003}.cfg', 'two_color_maze{:003}.cfg', 'custom_scenario{:003}.cfg' ] if params.scenario in VALID_SCENARIOS: game.load_config(params.scenario_dir + params.scenario) elif params.scenario in VALID_MULTI_SCENARIOS: assert params.multimaze if not is_train and params.test_scenario_dir: filename = params.test_scenario_dir + params.scenario.format( idx) #print('loading file', filename) game.load_config(filename) else: if not is_train: print( 'WARNING, LOADING TRAINING DATA FOR TESTING, THIS MAY NOT BE WHAT YOU INTENDED!' ) filename = params.scenario_dir + params.scenario.format(idx) #print('loading file', filename) game.load_config(filename) else: assert 0, 'Invalid environment {}'.format(params.scenario) if params.screen_size == '320X180': # TODO: Implement options for other resolutions game.set_screen_resolution(ScreenResolution.RES_320X180) else: assert 0, 'Invalid screen_size {}'.format(params.screen_size) game.set_sound_enabled(False) #game.add_game_args("+vid_forcesurface 1") game.set_window_visible(params.show_window) if params.show_window: game.set_mode(Mode.SPECTATOR) game.add_game_args("+freelook 1") # Player variables for prediction of position etc game.add_available_game_variable(GameVariable.POSITION_X) game.add_available_game_variable(GameVariable.POSITION_Y) game.add_available_game_variable(GameVariable.POSITION_Z) game.add_available_game_variable(GameVariable.VELOCITY_X) game.add_available_game_variable(GameVariable.VELOCITY_Y) game.add_available_game_variable(GameVariable.VELOCITY_Z) game.add_available_game_variable(GameVariable.ANGLE) game.add_available_game_variable(GameVariable.PITCH) game.add_available_game_variable(GameVariable.ROLL) if get_extra_info: game.set_labels_buffer_enabled(True) game.set_automap_buffer_enabled(True) game.set_automap_mode(AutomapMode.OBJECTS) game.set_automap_rotate(True) game.set_automap_render_textures(False) game.set_depth_buffer_enabled(True) game.init() if GameVariable.HEALTH in game.get_available_game_variables(): self.previous_health = game.get_game_variable(GameVariable.HEALTH) if self.use_shaping: self.shaping_reward = doom_fixed_to_double( game.get_game_variable(GameVariable.USER1)) if params.disable_head_bob: game.send_game_command('movebob 0.0') return game
def _create_game(self, params, idx, is_train, get_extra_info=False): game = DoomGame() self.idx = idx game.set_window_visible(params.show_window) game.set_sound_enabled(False) game.add_game_args("+vid_forcesurface 1") VALID_SCENARIOS = [ 'my_way_home.cfg', 'health_gathering.cfg', 'health_gathering_supreme.cfg', 'health_gathering_supreme_no_death_penalty.cfg', 'deadly_corridor.cfg', 'defend_the_center.cfg', 'defend_the_line.cfg', 'custom_maze_001.cfg', 'custom_maze_002.cfg', 'custom_maze_003.cfg', 'custom_mazes_005/train/maze_000.cfg', 'custom_mazes_005/train/maze_004.cfg', 'custom_mazes_005/valid/maze_000.cfg', 'long_term_base.cfg', 'scenario_x.cfg', 'scenario_cw2.cfg', 'scenario_2_item0.cfg', 'scenario_2_item1.cfg', 'scenario_2_item2.cfg', 'scenario_2_item3.cfg', 'scenario_3_item0.cfg', 'two_color_maze040.cfg', 'four_item_maze034.cfg', 'labyrinth_maze000.cfg', 'mino_maze000.cfg', 'labyrinth_maze11_000.cfg', 'mino_maze_simple.cfg' ] VALID_MULTI_SCENARIOS = [ 'maze_{:003}.cfg', 'mino_maze{:003}.cfg', 'labyrinth_maze{:003}.cfg', 'indicator_maze{:003}.cfg', 'two_item_maze{:003}.cfg', 'six_item_maze{:003}.cfg', 'four_item_maze{:003}.cfg', 'eight_item_maze{:003}.cfg', 'repeated_laby_maze{:003}.cfg', 'two_color_maze{:003}.cfg' ] if params.scenario in VALID_SCENARIOS: game.load_config(params.scenario_dir + params.scenario) elif params.scenario in VALID_MULTI_SCENARIOS: assert params.multimaze if not is_train and params.test_scenario_dir: filename = params.test_scenario_dir + params.scenario.format( idx) #print('loading file', filename) game.load_config(filename) else: filename = params.scenario_dir + params.scenario.format(idx) #print('loading file', filename) game.load_config(filename) elif params.scenario == 'curriculum': pass else: assert 0, 'Invalid environment {}'.format(params.scenario) if params.screen_size == '320X180': game.set_screen_resolution(ScreenResolution.RES_320X180) else: assert 0, 'Invalid screen_size {}'.format(params.screen_size) if (params.use_depth or params.predict_depth or params.ego_model or params.depth_as_obs): game.set_depth_buffer_enabled(True) #self.game.set_labels_buffer_enabled(True) game.set_window_visible(params.show_window) game.set_sound_enabled(False) if params.show_window: game.set_mode(Mode.SPECTATOR) game.add_game_args("+freelook 1") # Player variables for prediction of position etc game.add_available_game_variable(GameVariable.POSITION_X) game.add_available_game_variable(GameVariable.POSITION_Y) game.add_available_game_variable(GameVariable.POSITION_Z) game.add_available_game_variable(GameVariable.VELOCITY_X) game.add_available_game_variable(GameVariable.VELOCITY_Y) game.add_available_game_variable(GameVariable.VELOCITY_Z) game.add_available_game_variable(GameVariable.ANGLE) game.add_available_game_variable(GameVariable.PITCH) game.add_available_game_variable(GameVariable.ROLL) if get_extra_info: game.set_labels_buffer_enabled(True) game.set_automap_buffer_enabled(True) game.set_automap_mode(AutomapMode.OBJECTS) game.set_automap_rotate(True) game.set_automap_render_textures(False) game.set_depth_buffer_enabled(True) game.add_game_args("+vid_forcesurface 1") game.init() if GameVariable.HEALTH in game.get_available_game_variables(): self.previous_health = game.get_game_variable(GameVariable.HEALTH) if self.use_shaping: self.shaping_reward = doom_fixed_to_double( game.get_game_variable(GameVariable.USER1)) if params.disable_head_bob: game.send_game_command('movebob 0.0') return game
game.set_render_minimal_hud(False) game.set_render_crosshair(False) game.set_render_weapon(True) game.set_render_decals(False) game.set_render_particles(False) game.set_render_effects_sprites(False) # Adds buttons that will be allowed. game.add_available_button(Button.MOVE_LEFT) game.add_available_button(Button.MOVE_RIGHT) game.add_available_button(Button.ATTACK) game.add_available_button(Button.MOVE_FORWARD) game.add_available_button(Button.MOVE_BACKWARD) # Adds game variables that will be included in state. game.add_available_game_variable(GameVariable.AMMO2) game.add_available_game_variable(GameVariable.SELECTED_WEAPON) # Causes episodes to finish after 200 tics (actions) game.set_episode_timeout(300) # Makes episodes start after 10 tics (~after raising the weapon) game.set_episode_start_time(10) # Makes the window appear (turned on by default) game.set_window_visible(False) # Turns on the sound. (turned off by default) game.set_sound_enabled(False) # Sets the livin reward (for each move) to -1
if __name__ == "__main__": # Avoid Tensorflow eats up GPU memory #config = tf.ConfigProto() #config.gpu_options.allow_growth = True #sess = tf.Session(config=config) #K.set_session(sess) RENDER_EVERY = 10 #Render every Nth episode. game = DoomGame() game.load_config("defend_the_center.cfg") game.set_sound_enabled(True) game.set_screen_resolution(ScreenResolution.RES_640X480) game.set_window_visible(True) #set to False for speed True for fun game.add_available_game_variable(GameVariable.KILLCOUNT) game.init() game.new_episode() game_state = game.get_state() misc = game_state.game_variables # [AMMO, HEALTH, KILLCOUNT] prev_misc = misc print(misc) action_size = game.get_available_buttons_size() img_rows , img_cols = 64, 64 # Convert image into Black and white img_channels = 4 # We stack 4 frames state_size = (img_rows, img_cols, img_channels)
# Sets path to vizdoom engine executive which will be spawned as a separate process. Default is "./vizdoom". #game.set_vizdoom_path("../../bin/vizdoom") game.set_doom_game_path("scenarios/freedoom2.wad") game.set_doom_scenario_path("scenarios/basic.wad") game.set_doom_map("map01") game.set_screen_resolution(ScreenResolution.RES_320X240) game.set_screen_format(ScreenFormat.RGB24) game.set_render_hud(False) game.set_render_crosshair(False) game.set_render_weapon(True) game.set_render_decals(False) game.set_render_particles(False) game.add_available_button(Button.TURN_LEFT_RIGHT_DELTA) game.add_available_button(Button.ATTACK) game.add_available_game_variable(GameVariable.AMMO2) game.add_available_game_variable(GameVariable.ATTACK_READY) game.set_episode_timeout(200) game.set_episode_start_time(10) game.set_window_visible(True) game.set_sound_enabled(False) game.set_living_reward(-1) game.set_mode(Mode.PLAYER) game.init() # Define some actions. Each list entry corresponds to declared buttons: # MOVE_LEFT, MOVE_RIGHT, ATTACK # 5 more combinations are naturally possible but only 3 are included for transparency when watching. #actions = [[True,False,False],[False,True,False],[False,False,True]] # Run this many episodes