Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
game = vzd.DoomGame()
# Choose scenario config file you wish to watch.
# Don't load two configs cause the second will overrite the first one.
# Multiple config files are ok but combining these ones doesn't make much sense.
game.load_config(args.config)
# Enables freelook in engine
game.add_game_args("+freelook 1")
game.set_screen_resolution(vzd.ScreenResolution.RES_640X480)
# Enables spectator mode, so you can play. Sounds strange but it is the agent who is supposed to watch not you.
game.set_window_visible(True)
game.set_mode(vzd.Mode.SPECTATOR)
game.init()
episodes = 10
for i in range(episodes):
print("Episode #" + str(i + 1))
game.new_episode()
while not game.is_episode_finished():
state = game.get_state()
game.advance_action()
last_action = game.get_last_action()
reward = game.get_last_reward()
'To run VizDoom across multiple processes, you need to pass a lock when you configure the env ' +
'[e.g. env.configure(lock=my_multiprocessing_lock)], or create and close an env ' +
'before starting your processes [e.g. env = gym.make("DoomBasic-v0"); env.close()] to cache a ' +
'singleton lock in memory.')
self._start_episode()
self.is_initialized = True
return self.game.get_state().image_buffer.copy()
# Human mode
else:
if NO_MONSTERS:
print('\t=> Special Config: Monsters Removed.')
self.game.add_game_args('-nomonsters 1')
self.game.add_game_args('+freelook 1')
self.game.set_window_visible(True)
self.game.set_mode(Mode.SPECTATOR)
self.no_render = True
with self.lock:
self.game.init()
self._start_episode()
self.is_initialized = True
self._play_human_mode()
return np.zeros(shape=self.observation_space.shape, dtype=np.uint8)
wad_path = args.output_file
print("Generating {} ...".format(wad_path))
num_maps = generator.generate(wad_path, verbose=args.verbose)
print("Generated {} maps.".format(num_maps))
if args.exit:
exit(0)
# Set Scenario to the new generated WAD
game.set_doom_scenario_path(args.output_file)
# Sets up game for spectator (you)
game.add_game_args("+freelook 1")
game.set_screen_resolution(vzd.ScreenResolution.RES_640X480)
game.set_window_visible(True)
game.set_mode(vzd.Mode.SPECTATOR)
game.init()
# Play as many episodes as maps in the new generated WAD file.
episodes = num_maps
# Play until the game (episode) is over.
for i in range(1, episodes + 1):
# Update map name
print("Map {}/{}".format(i, episodes))
map = "map{:02}".format(i)
game.set_doom_map(map)
game.new_episode()
time = 0
# Enables depth buffer.
game.set_depth_buffer_enabled(True)
# Enables labeling of in game objects labeling.
game.set_labels_buffer_enabled(True)
# Enables buffer with top down map of he current episode/level .
game.set_automap_buffer_enabled(True)
game.set_automap_mode(vzd.AutomapMode.OBJECTS)
game.set_automap_rotate(False)
game.set_automap_render_textures(False)
game.set_render_hud(True)
game.set_render_minimal_hud(False)
game.set_mode(vzd.Mode.SPECTATOR)
game.init()
actions = [[True, False, False], [False, True, False], [False, False, True]]
episodes = 10
sleep_time = 0.028
for i in range(episodes):
print("Episode #" + str(i + 1))
# Not needed for the first episode but the loop is nicer.
game.new_episode()
while not game.is_episode_finished():
# Gets the state and possibly do something with it
state = game.get_state()