Beispiel #1
1
    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()
Beispiel #2
0
    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]
Beispiel #3
0
    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]
Beispiel #4
0
 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()
Beispiel #5
0
 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))