def __init__(self,
game, fps=30, frame_skip=1, num_steps=1,
reward_values={}, force_fps=True, display_screen=False,
add_noop_action=True, state_preprocessor=None, rng=24):
self.game = game
self.fps = fps
self.frame_skip = frame_skip
self.NOOP = None
self.num_steps = num_steps
self.force_fps = force_fps
self.display_screen = display_screen
self.add_noop_action = add_noop_action
self.last_action = []
self.action = []
self.previous_score = 0
self.frame_count = 0
# update the scores of games with values we pick
if reward_values:
self.game.adjustRewards(reward_values)
if isinstance(self.game, PyGameWrapper):
if isinstance(rng, np.random.RandomState):
self.rng = rng
else:
self.rng = np.random.RandomState(rng)
# some pygame games preload the images
# to speed resetting and inits up.
pygame.display.set_mode((1, 1), pygame.NOFRAME)
else:
# in order to use doom, install following https://github.com/openai/doom-py
from .games.base.doomwrapper import DoomWrapper
if isinstance(self.game, DoomWrapper):
self.rng = rng
self.game.setRNG(self.rng)
self.init()
self.state_preprocessor = state_preprocessor
self.state_dim = None
if self.state_preprocessor is not None:
self.state_dim = self.game.getGameState()
if self.state_dim is None:
raise ValueError(
"Asked to return non-visual state on game that does not support it!")
else:
self.state_dim = self.state_preprocessor(self.state_dim).shape
if game.allowed_fps is not None and self.fps != game.allowed_fps:
raise ValueError("Game requires %dfps, was given %d." %
(game.allowed_fps, game.allowed_fps))
评论列表
文章目录