From 1d7411d251c3ac1a69e80a3ccdbe0df2f9b79af5 Mon Sep 17 00:00:00 2001 From: mateus Date: Sun, 21 Apr 2019 17:51:36 -0400 Subject: [PATCH 1/2] Addition of flags --replay and --replay_dir to save the replays of the game. --- reaver/envs/sc2.py | 9 ++++++++- reaver/run.py | 12 +++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) mode change 100644 => 100755 reaver/envs/sc2.py mode change 100644 => 100755 reaver/run.py diff --git a/reaver/envs/sc2.py b/reaver/envs/sc2.py old mode 100644 new mode 100755 index f135dc9..d455aa4 --- a/reaver/envs/sc2.py +++ b/reaver/envs/sc2.py @@ -30,6 +30,8 @@ def __init__( spatial_dim=16, step_mul=8, obs_features=None, + save_replay_episodes=0, + replay_dir=None, action_ids=ACTIONS_MINIGAMES ): super().__init__(map_name, render, reset_done, max_ep_len) @@ -37,6 +39,8 @@ def __init__( self.step_mul = step_mul self.spatial_dim = spatial_dim self._env = None + self.save_replay_episodes = save_replay_episodes + self.replay_dir = replay_dir # sensible action set for all minigames if not action_ids or action_ids in [ACTIONS_MINIGAMES, ACTIONS_MINIGAMES_ALL]: @@ -79,7 +83,10 @@ def start(self): rgb_screen=None, rgb_minimap=None )], - step_mul=self.step_mul,) + step_mul=self.step_mul, + save_replay_episodes=self.save_replay_episodes, + replay_dir=self.replay_dir + ) def step(self, action): try: diff --git a/reaver/run.py b/reaver/run.py old mode 100644 new mode 100755 index ac136ee..3ec4c6f --- a/reaver/run.py +++ b/reaver/run.py @@ -32,6 +32,11 @@ 'Run an agent in test mode: restore flag is set to true and number of envs set to 1' 'Loss is calculated, but gradients are not applied.' 'Checkpoints, summaries, log files are not updated, but console logger is enabled.') +flags.DEFINE_integer('replay', 0, "Save a replay after this many episodes. Default of 0 means don't save replays.") +flags.DEFINE_string('replay_dir', None, 'Directory to save replays. ' + 'Linux distros will save on ~/StarCraftII/Replays/ + path(replay_dir)' + 'Windows distros will save on path(replay_dir)') + flags.DEFINE_alias('e', 'env') flags.DEFINE_alias('a', 'agent') @@ -42,6 +47,8 @@ flags.DEFINE_alias('la', 'log_eps_avg') flags.DEFINE_alias('n', 'experiment') flags.DEFINE_alias('g', 'gin_bindings') +flags.DEFINE_alias('r', 'replay') +flags.DEFINE_alias('rd', 'replay_dir') def main(argv): @@ -75,7 +82,10 @@ def main(argv): sess_mgr = rvr.utils.tensorflow.SessionManager(sess, expt.path, args.ckpt_freq, training_enabled=not args.test) env_cls = rvr.envs.GymEnv if '-v' in args.env else rvr.envs.SC2Env - env = env_cls(args.env, args.render, max_ep_len=args.max_ep_len) + env = env_cls(args.env, args.render, + max_ep_len=args.max_ep_len, + save_replay_episodes=args.replay, + replay_dir=args.replay_dir) agent = rvr.agents.registry[args.agent](env.obs_spec(), env.act_spec(), sess_mgr=sess_mgr, n_envs=args.n_envs) agent.logger = rvr.utils.StreamLogger(args.n_envs, args.log_freq, args.log_eps_avg, sess_mgr, expt.log_path) From 2ecaf089afbc13a7779b221871e67f50d515d9c5 Mon Sep 17 00:00:00 2001 From: Mateus Paiva Matiazzi Date: Sun, 21 Apr 2019 20:03:15 -0400 Subject: [PATCH 2/2] Added replay flag --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 21d6b7f..fe84d1e 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,14 @@ After Reaver has finished training, you can look at how it performs by appending python -m reaver.run --env MoveToBeacon --agent a2c --test --render 2> stderr.log ``` +To record replays of the training you can use `--replay` and `--replay_dir`. The `replay` flag needs an integger `n`, after `n` episodes a replay will be saved. The `replay_dir` flag will need a `path` where do you want to save the replay, `Linux OS` will save on ~/StarCraftII/Replays/ + `path(replay_dir)` and `Windows OS` will save on `path(replay_dir)`. + +```bash +python -m reaver.run --env MoveToBeacon --agent a2c --test --render --replay 10 --replay_dir a2c_agent_mtb_replay 2> stderr.log +``` +**NB!** If you want to use the flag `replay` you will need to install manually it from source as described above. + + ### Google Colab A companion [Google Colab notebook](https://colab.research.google.com/drive/1DvyCUdymqgjk85FB5DrTtAwTFbI494x7)