Я установил Gym Retro Mario Game.Я работаю в интерактивном режиме и вижу, что награда печатается на каждом шагу, который я делаю вручную.Хотите знать, как рассчитывается эта награда.Если кто-то может указать на любой py-файл (местоположение, строка №), это было бы замечательно.
Прошел предыдущие аналогичные вопросы и прошел через код retro_env.py.Не удалось найти код Марио Степа и Награды
Когда я вернулся, я достиг файла retro_env.py.Ниже приведена пошаговая функция, которая должна возвращать вознаграждение:
def step(self, a):
if self.img is None and self.ram is None:
raise RuntimeError('Please call env.reset() before env.step()')
for p, ap in enumerate(self.action_to_array(a)):
if self.movie:
for i in range(self.num_buttons):
self.movie.set_key(i, ap[i], p)
self.em.set_button_mask(ap, p)
if self.movie:
self.movie.step()
self.em.step()
self.data.update_ram()
ob = self._update_obs()
rew, done, info = self.compute_step()
return ob, rew, bool(done), dict(info)
Однако она вызывает self.compute_step (), а именно:
def compute_step(self):
if self.players > 1:
reward = [self.data.current_reward(p) for p in range(self.players)]
else:
reward = self.data.current_reward()
done = self.data.is_done()
return reward, done, self.data.lookup_all()
Эта функция вызывает current_reward () из GameDataGlue под ретро._retro.Однако в пакетах сайта нет папки _retro.Не уверен, как рассчитывается current_reward
Я должен понимать, как рассчитывается Марио.Тогда я смогу применить к другим играм или даже к моей собственной среде