Farama-Foundation/Minigrid

Possible bug when generating non-square DoorKey environments.

rbankosegger opened this issue · 4 comments

Consider the lines

doorIdx = self._rand_int(1, width - 2)
self.put_obj(Door("yellow", is_locked=True), splitIdx, doorIdx)

From:

https://github.com/Farama-Foundation/Minigrid/blame/617e4908e20fd08e4e135421cd47d52018a3148c/minigrid/envs/doorkey.py#L94

The variable doorIdx determines the y-coordinate of the door,
the sampling of which should depend on the grid height, not its width.
In situations where width > height, the door might be placed outside of the grid dimension.

Suggested fix:
Replace by

doorIdx = self._rand_int(1, height - 2)

Could you provide an example image for a given seed with and without the fix

Here is an example.
I believe this bug cannot occur "in the wild" because width=height for all gym-registered environments.
But it might become an issue if someone decides to publish a non-square environment of this type.

from minigrid.envs.doorkey import DoorKeyEnv
env = DoorKeyEnv(render_mode='human', size=6)
env.reset(seed=1)
env._gen_grid(6,4)
env.render()

import time
time.sleep(100)

minigrid

Ahh, that makes sense. Could you make a PR with this fix?

Here it is:
#429