ALE 0.6 - modes and difficulties for Atari games #1535
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR along with openai/atari-py#49 introduces modes and difficulties for Atari 2600 games in Gym. This was introduced in version 0.6 of the ALE and also outlined in the paper "Revisiting the Arcade Learning Environment: Evaluation Protocols and Open Problems for General Agents" by Machado et al.
I had previously discussed versioning in openai/atari-py#49 with @christopherhesse as this PR would rely on a new API in v0.6 which allows you to query and set the mode and/or difficulty.
The other thing to note in this PR is the removal of
self.game_path
. I don't understand why you callale.loadROM
in the seed function. To my knowledge, you don't need to set the random seed before loading the ROM. The seed only affects the RNG for sticky actions. In fact, most examples in the ALE repository set the seed after loading the ROM.I had to make this change as it seems
seed
gets called twice and the second call would override any previously defined modes or difficulties (each call toloadROM
resets the mode and difficulty to the default of 0).To get this PR merged I think we should discuss:
How to handle versioning in Gym with respect toatari-py
. It's probably necessary to check forsetDifficulty
andsetMode
inatari-py
. If the newer API isn't found we can throw an error asking the user to upgradeatari-py
.Gain some clarity on theale.loadRom
call inseed
. I don't see this breaking anything but it would be nice to get some clarity on why this existed in the first place.