def reset(self): """Reset environment for a new episode using a given config.""" self._episode_start = timeit.default_timer() self._action_set = football_action_set.get_action_set(self._config) self._trace = observation_processor.ObservationProcessor(self._config) self._cumulative_reward = 0 self._step_count = 0 self._env.reset(self._trace) self._env_state = 'game_started'
def dump_to_video(self, dump_file): dump = self.load_dump(dump_file) cfg = config.Config(dump[0]['debug']['config']) cfg['dump_full_episodes'] = True cfg['write_video'] = True cfg['display_game_stats'] = True processor = observation_processor.ObservationProcessor(cfg) processor.write_dump('episode_done') for frame in dump: processor.update(frame)
def dump_to_video(self, dump_file): with open(dump_file, 'rb') as f: dump = six.moves.cPickle.load(f) cfg = config.Config(dump[0]['debug']['config']) cfg['dump_full_episodes'] = True cfg['write_video'] = True cfg['display_game_stats'] = True processor = observation_processor.ObservationProcessor(cfg) for frame in dump: processor.update(frame) processor.write_dump('episode_done')
def main(_): cfg = config.Config() cfg['dump_full_episodes'] = True cfg['write_video'] = True cfg['display_game_stats'] = True with open(FLAGS.file, 'rb') as f: dump = six.moves.cPickle.load(f) processor = observation_processor.ObservationProcessor(cfg) for frame in dump: processor.update(frame) processor.write_dump('episode_done')
def set_state(self, state): assert (self._env.state == GameState.game_running or self._env.state == GameState.game_done), ( 'reset() must be called before set_state()') res = self._env.set_state(state) assert self._retrieve_observation() from_picle = six.moves.cPickle.loads(res) self._state = from_picle['FootballEnvCore'] if self._trace is None: self._trace = observation_processor.ObservationProcessor(self._config) return from_picle
def reset(self, inc=1): """Reset environment for a new episode using a given config.""" self._episode_start = timeit.default_timer() self._action_set = football_action_set.get_action_set(self._config) trace = observation_processor.ObservationProcessor(self._config) self._cumulative_reward = 0 self._step_count = 0 self._trace = trace self._reset(self._env.game_config.render, inc=inc) while not self._retrieve_observation(): self._env.step() return True
def restore_state(self, state): assert state.size == self.state_size, ( f'State size does not match: {state.size} != {self.state_size}') # First 3 bytes encodes size of state. size_decoded = int.from_bytes(list(state[:3]), byteorder='big') raw_state = state[3:(size_decoded + 3)] assert (state[(size_decoded + 3):] == 0).all() self._env.set_state(bytes(raw_state)) # Temporary fix for a bug in Football related to restoring state after # done. Proper fix is on the way: # https://github.com/google-research/football/pull/135 # pylint: disable=protected-access,import-outside-toplevel,no-name-in-module,import-error from gfootball.env import observation_processor env = self._env.unwrapped._env if env._trace is None: env._trace = observation_processor.ObservationProcessor( env._config) return self._observation