diff --git a/CHANGES.md b/CHANGES.md index 3eee709f..702e5aa2 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,9 @@ # Changelog +## 0.10.4 + +* Support `render_mode` to gym environment and update docs to remove references to the confusing `render=True` option. + ## 0.10.3 * fix render option for gym environment diff --git a/README.md b/README.md index 15b44b1b..36157f38 100644 --- a/README.md +++ b/README.md @@ -135,7 +135,7 @@ import gym env = gym.make("procgen:procgen-coinrun-v0", start_level=0, num_levels=1) ``` -Since the gym environment is adapted from a gym3 environment, early calls to `reset()` are disallowed and the `render()` method does not do anything. To render the environment, pass `render=True`, which will send `render_mode="rgb_array"` to the environment constructor and wrap it in a `gym3.ViewerWrapper`. +Since the gym environment is adapted from a gym3 environment, early calls to `reset()` are disallowed and the `render()` method does not do anything. To render the environment, pass `render_mode="human"` to the constructor, which will send `render_mode="rgb_array"` to the environment constructor and wrap it in a `gym3.ViewerWrapper`. If you just want the frames instead of the window, pass `render_mode="rgb_array"`. For the gym3 vectorized environment: diff --git a/environment.yml b/environment.yml index 68272914..0cef30fe 100644 --- a/environment.yml +++ b/environment.yml @@ -9,7 +9,7 @@ dependencies: - qt=5.12.5 # conda-forge does not have 5.13.2 available - pip - pip: - - gym3==0.3.2 + - gym3==0.3.3 - numpy==1.17.2 - gym==0.15.3 - filelock==3.0.10 diff --git a/procgen/examples/random_agent_gym3.py b/procgen/examples/random_agent_gym3.py index 3f428f16..cecf7792 100644 --- a/procgen/examples/random_agent_gym3.py +++ b/procgen/examples/random_agent_gym3.py @@ -12,4 +12,4 @@ print(f"step {step} reward {rew} first {first}") if step > 0 and first: break - step += 1 \ No newline at end of file + step += 1 diff --git a/procgen/gym_registration.py b/procgen/gym_registration.py index 948a0e7c..3447b6bb 100644 --- a/procgen/gym_registration.py +++ b/procgen/gym_registration.py @@ -3,12 +3,24 @@ from .env import ENV_NAMES, ProcgenGym3Env -def make_env(render=False, **kwargs): +def make_env(render_mode=None, render=False, **kwargs): + # the render option is kept here for backwards compatibility + # users should use `render_mode="human"` or `render_mode="rgb_array"` if render: + render_mode = "human" + + use_viewer_wrapper = False + kwargs["render_mode"] = render_mode + if render_mode == "human": + # procgen does not directly support rendering a window + # instead it's handled by gym3's ViewerWrapper + # procgen only supports a render_mode of "rgb_array" + use_viewer_wrapper = True kwargs["render_mode"] = "rgb_array" + env = ProcgenGym3Env(num=1, num_threads=0, **kwargs) env = ExtractDictObWrapper(env, key="rgb") - if render: + if use_viewer_wrapper: env = ViewerWrapper(env, tps=15, info_key="rgb") gym_env = ToGymEnv(env) return gym_env diff --git a/procgen/version.txt b/procgen/version.txt index 56e9df10..1bfc9536 100644 --- a/procgen/version.txt +++ b/procgen/version.txt @@ -1 +1 @@ -0.10.3 \ No newline at end of file +0.10.4 \ No newline at end of file diff --git a/setup.py b/setup.py index ff30c1b4..f8db9c3a 100644 --- a/setup.py +++ b/setup.py @@ -78,7 +78,7 @@ def run(self): install_requires=[ "numpy>=1.17.0,<2.0.0", "gym>=0.15.0,<1.0.0", - "gym3>=0.3.2,<1.0.0", + "gym3>=0.3.3,<1.0.0", "filelock>=3.0.0,<4.0.0", ], python_requires=">=3.6.0",