def __init__(self): super(DoomDefendCenterEnv, self).__init__() package_directory = os.path.dirname(os.path.abspath(__file__)) self.loader = Loader() self.game = DoomGame() self.game.load_config( os.path.join(package_directory, 'assets/defend_the_center.cfg')) self.game.set_vizdoom_path(self.loader.get_vizdoom_path()) self.game.set_doom_game_path(self.loader.get_freedoom_path()) self.game.set_doom_scenario_path( self.loader.get_scenario_path('defend_the_center.wad')) self.screen_height = 480 # Must match .cfg file self.screen_width = 640 # Must match .cfg file self.game.set_window_visible(False) self.viewer = None self.game.init() self.game.new_episode() # 3 allowed actions [0, 13, 14] (must match .cfg file) self.action_space = spaces.HighLow(np.matrix([[0, 1, 0]] * 3)) self.observation_space = spaces.Box(low=0, high=255, shape=(self.screen_height, self.screen_width, 3)) self._seed()
def _seed(self, seed=None): np_random, seed1 = seeding.np_random(seed) # Derive a random seed. seed2 = seeding.hash_seed(seed1 + 1) % 2**32 self.game.set_seed(seed2) # 3 allowed actions [12, 13, 14] (must match .cfg file) self.action_space = spaces.HighLow(np.matrix([[0, 1, 0]] * 3), np_random=np_random) self.observation_space = spaces.Box(low=0, high=255, shape=(self.screen_height, self.screen_width, 3), np_random=np_random) return [seed1, seed2]
def _seed(self, seed=None): np_random, seed1 = seeding.np_random(seed) # Derive a random seed. seed2 = seeding.hash_seed(seed1 + 1) % 2**32 self.game.set_seed(seed2) # action indexes are [0, 9, 10, 12, 13, 14] self.action_space = spaces.HighLow(np.matrix([[0, 1, 0]] * 6), np_random=np_random) self.observation_space = spaces.Box(low=0, high=255, shape=(self.screen_height, self.screen_width, 3), np_random=np_random) return [seed1, seed2]
def __init__(self, level): utils.EzPickle.__init__(self) self.previous_level = -1 self.level = level self.game = DoomGame() self.loader = Loader() self.doom_dir = os.path.dirname(os.path.abspath(__file__)) self.mode = 'fast' # 'human', 'fast' or 'normal' self.no_render = False # To disable double rendering in human mode self.viewer = None self.is_initialized = False # Indicates that reset() has been called self.curr_seed = 0 self.action_space = spaces.HighLow( np.matrix([[0, 1, 0]] * 38 + [[-10, 10, 0]] * 2 + [[-100, 100, 0]] * 3, dtype=np.int8)) self.allowed_actions = list(range(NUM_ACTIONS)) self._configure()
def __init__(self, level): utils.EzPickle.__init__(self) self.previous_level = -1 self.level = level self.game = DoomGame() self.loader = Loader() self.doom_dir = os.path.dirname(os.path.abspath(__file__)) self.mode = 'fast' # 'human', 'fast' or 'normal' self.no_render = False # To disable double rendering in human mode self.viewer = None self.is_initialized = False # Indicates that reset() has been called self.find_new_level = False # Indicates that we need a level change self.curr_seed = 0 self.screen_height = 480 self.screen_width = 640 self.action_space = spaces.HighLow( np.matrix([[0, 1, 0]] * 38 + [[-10, 10, 0]] * 2 + [[-100, 100, 0]] * 3, dtype=np.int8)) self.observation_space = spaces.Box(low=0, high=255, shape=(self.screen_height, self.screen_width, 3)) self.allowed_actions = list(range(NUM_ACTIONS))