├── .dockerignore ├── .gitignore ├── ASSET_LICENSES.md ├── Dockerfile ├── LICENSE ├── README.md ├── coinrun.png ├── coinrun ├── Makefile ├── __init__.py ├── assets │ ├── backgrounds │ │ ├── background-2 │ │ │ ├── airadventurelevel1.png │ │ │ ├── airadventurelevel2.png │ │ │ ├── airadventurelevel3.png │ │ │ └── airadventurelevel4.png │ │ ├── background-from-glitch-assets │ │ │ └── background.png │ │ ├── game-backgrounds │ │ │ ├── BG_only.png │ │ │ ├── Background (2).png │ │ │ ├── Background (3).png │ │ │ ├── Background (4).png │ │ │ ├── Background (5).png │ │ │ ├── Background.png │ │ │ ├── G049_OT000_002A__background.png │ │ │ ├── G154_OT000_002A__background.png │ │ │ ├── bg1.png │ │ │ └── seabed.png │ │ ├── space-backgrounds-3 │ │ │ ├── Background-1.png │ │ │ ├── Background-2.png │ │ │ ├── Background-3.png │ │ │ └── Background-4.png │ │ └── spacebackgrounds-0 │ │ │ ├── deep_sky_01.png │ │ │ ├── deep_space_01.png │ │ │ ├── eye_nebula_01.png │ │ │ ├── ez_space_lite_01.png │ │ │ ├── meyespace_v1_01.png │ │ │ ├── milky_way_01.png │ │ │ ├── space_nebula_01.png │ │ │ └── spacegen_01.png │ └── kenney │ │ ├── Backgrounds │ │ ├── blue_desert.png │ │ ├── blue_grass.png │ │ ├── blue_land.png │ │ ├── blue_shroom.png │ │ ├── colored_desert.png │ │ ├── colored_grass.png │ │ ├── colored_land.png │ │ └── colored_shroom.png │ │ ├── Enemies │ │ ├── barnacle.png │ │ ├── barnacle_attack.png │ │ ├── barnacle_dead.png │ │ ├── bee.png │ │ ├── bee_dead.png │ │ ├── bee_move.png │ │ ├── fishBlue.png │ │ ├── fishBlue_dead.png │ │ ├── fishBlue_fall.png │ │ ├── fishGreen.png │ │ ├── fishGreen_dead.png │ │ ├── fishGreen_move.png │ │ ├── fishPink.png │ │ ├── fishPink_dead.png │ │ ├── fishPink_move.png │ │ ├── fly.png │ │ ├── fly_dead.png │ │ ├── fly_move.png │ │ ├── frog.png │ │ ├── frog_dead.png │ │ ├── frog_move.png │ │ ├── ladybug.png │ │ ├── ladybug_fly.png │ │ ├── ladybug_move.png │ │ ├── mouse.png │ │ ├── mouse_dead.png │ │ ├── mouse_move.png │ │ ├── saw.png │ │ ├── sawHalf.png │ │ ├── sawHalf_dead.png │ │ ├── sawHalf_move.png │ │ ├── saw_dead.png │ │ ├── saw_move.png │ │ ├── slimeBlock.png │ │ ├── slimeBlock_dead.png │ │ ├── slimeBlock_move.png │ │ ├── slimeBlue.png │ │ ├── slimeBlue_dead.png │ │ ├── slimeBlue_hit.png │ │ ├── slimeBlue_move.png │ │ ├── slimeGreen.png │ │ ├── slimeGreen_dead.png │ │ ├── slimeGreen_hit.png │ │ ├── slimeGreen_move.png │ │ ├── slimePurple.png │ │ ├── slimePurple_dead.png │ │ ├── slimePurple_hit.png │ │ ├── slimePurple_move.png │ │ ├── snail.png │ │ ├── snail_move.png │ │ ├── snail_shell.png │ │ ├── wormGreen.png │ │ ├── wormGreen_dead.png │ │ ├── wormGreen_move.png │ │ ├── wormPink.png │ │ ├── wormPink_dead.png │ │ └── wormPink_move.png │ │ ├── Ground │ │ ├── Dirt │ │ │ ├── dirt.png │ │ │ ├── dirtCenter.png │ │ │ ├── dirtCenter_rounded.png │ │ │ ├── dirtCliffAlt_left.png │ │ │ ├── dirtCliffAlt_right.png │ │ │ ├── dirtCliff_left.png │ │ │ ├── dirtCliff_right.png │ │ │ ├── dirtCorner_left.png │ │ │ ├── dirtCorner_right.png │ │ │ ├── dirtHalf.png │ │ │ ├── dirtHalf_left.png │ │ │ ├── dirtHalf_mid.png │ │ │ ├── dirtHalf_right.png │ │ │ ├── dirtHill_left.png │ │ │ ├── dirtHill_right.png │ │ │ ├── dirtLeft.png │ │ │ ├── dirtMid.png │ │ │ └── dirtRight.png │ │ ├── Grass │ │ │ ├── grass.png │ │ │ ├── grassCenter.png │ │ │ ├── grassCenter_round.png │ │ │ ├── grassCliffAlt_left.png │ │ │ ├── grassCliffAlt_right.png │ │ │ ├── grassCliff_left.png │ │ │ ├── grassCliff_right.png │ │ │ ├── grassCorner_left.png │ │ │ ├── grassCorner_right.png │ │ │ ├── grassHalf.png │ │ │ ├── grassHalf_left.png │ │ │ ├── grassHalf_mid.png │ │ │ ├── grassHalf_right.png │ │ │ ├── grassHill_left.png │ │ │ ├── grassHill_right.png │ │ │ ├── grassLeft.png │ │ │ ├── grassMid.png │ │ │ └── grassRight.png │ │ ├── Planet │ │ │ ├── planet.png │ │ │ ├── planetCenter.png │ │ │ ├── planetCenter_rounded.png │ │ │ ├── planetCliffAlt_left.png │ │ │ ├── planetCliffAlt_right.png │ │ │ ├── planetCliff_left.png │ │ │ ├── planetCliff_right.png │ │ │ ├── planetCorner_left.png │ │ │ ├── planetCorner_right.png │ │ │ ├── planetHalf.png │ │ │ ├── planetHalf_left.png │ │ │ ├── planetHalf_mid.png │ │ │ ├── planetHalf_right.png │ │ │ ├── planetHill_left.png │ │ │ ├── planetHill_right.png │ │ │ ├── planetLeft.png │ │ │ ├── planetMid.png │ │ │ └── planetRight.png │ │ ├── Sand │ │ │ ├── sand.png │ │ │ ├── sandCenter.png │ │ │ ├── sandCenter_rounded.png │ │ │ ├── sandCliffAlt_left.png │ │ │ ├── sandCliffAlt_right.png │ │ │ ├── sandCliff_left.png │ │ │ ├── sandCliff_right.png │ │ │ ├── sandCorner_leftg.png │ │ │ ├── sandCorner_right.png │ │ │ ├── sandHalf.png │ │ │ ├── sandHalf_left.png │ │ │ ├── sandHalf_mid.png │ │ │ ├── sandHalf_right.png │ │ │ ├── sandHill_left.png │ │ │ ├── sandHill_right.png │ │ │ ├── sandLeft.png │ │ │ ├── sandMid.png │ │ │ └── sandRight.png │ │ ├── Snow │ │ │ ├── snow.png │ │ │ ├── snowCenter.png │ │ │ ├── snowCenter_rounded.png │ │ │ ├── snowCliffAlt_left.png │ │ │ ├── snowCliffAlt_right.png │ │ │ ├── snowCliff_left.png │ │ │ ├── snowCliff_right.png │ │ │ ├── snowCorner_left.png │ │ │ ├── snowCorner_right.png │ │ │ ├── snowHalf.png │ │ │ ├── snowHalf_left.png │ │ │ ├── snowHalf_mid.png │ │ │ ├── snowHalf_right.png │ │ │ ├── snowHill_left.png │ │ │ ├── snowHill_right.png │ │ │ ├── snowLeft.png │ │ │ ├── snowMid.png │ │ │ └── snowRight.png │ │ └── Stone │ │ │ ├── stone.png │ │ │ ├── stoneCenter.png │ │ │ ├── stoneCenter_rounded.png │ │ │ ├── stoneCliffAlt_left.png │ │ │ ├── stoneCliffAlt_right.png │ │ │ ├── stoneCliff_left.png │ │ │ ├── stoneCliff_right.png │ │ │ ├── stoneCorner_left.png │ │ │ ├── stoneCorner_right.png │ │ │ ├── stoneHalf.png │ │ │ ├── stoneHalf_left.png │ │ │ ├── stoneHalf_mid.png │ │ │ ├── stoneHalf_right.png │ │ │ ├── stoneHill_left.png │ │ │ ├── stoneHill_right.png │ │ │ ├── stoneLeft.png │ │ │ ├── stoneMid.png │ │ │ └── stoneRight.png │ │ ├── HUD │ │ ├── hud0.png │ │ ├── hud1.png │ │ ├── hud2.png │ │ ├── hud3.png │ │ ├── hud4.png │ │ ├── hud5.png │ │ ├── hud6.png │ │ ├── hud7.png │ │ ├── hud8.png │ │ ├── hud9.png │ │ ├── hudCoin.png │ │ ├── hudHeart_empty.png │ │ ├── hudHeart_full.png │ │ ├── hudHeart_half.png │ │ ├── hudJewel_blue.png │ │ ├── hudJewel_blue_empty.png │ │ ├── hudJewel_green.png │ │ ├── hudJewel_green_empty.png │ │ ├── hudJewel_red.png │ │ ├── hudJewel_red_empty.png │ │ ├── hudJewel_yellow.png │ │ ├── hudJewel_yellow_empty.png │ │ ├── hudKey_blue.png │ │ ├── hudKey_blue_empty.png │ │ ├── hudKey_green.png │ │ ├── hudKey_green_empty.png │ │ ├── hudKey_red.png │ │ ├── hudKey_red_empty.png │ │ ├── hudKey_yellow.png │ │ ├── hudKey_yellow_empty.png │ │ ├── hudPlayer_beige.png │ │ ├── hudPlayer_blue.png │ │ ├── hudPlayer_green.png │ │ ├── hudPlayer_pink.png │ │ ├── hudPlayer_yellow.png │ │ └── hudX.png │ │ ├── Items │ │ ├── coinBronze.png │ │ ├── coinGold.png │ │ ├── coinSilver.png │ │ ├── flagBlue1.png │ │ ├── flagBlue2.png │ │ ├── flagBlue_down.png │ │ ├── flagGreen1.png │ │ ├── flagGreen2.png │ │ ├── flagGreen_down.png │ │ ├── flagRed1.png │ │ ├── flagRed2.png │ │ ├── flagRed_down.png │ │ ├── flagYellow1.png │ │ ├── flagYellow2.png │ │ ├── flagYellow_down.png │ │ ├── gemBlue.png │ │ ├── gemGreen.png │ │ ├── gemRed.png │ │ ├── gemYellow.png │ │ ├── keyBlue.png │ │ ├── keyGreen.png │ │ ├── keyRed.png │ │ ├── keyYellow.png │ │ └── star.png │ │ ├── Particles │ │ ├── brickBrown.png │ │ ├── brickGrey.png │ │ └── fireball.png │ │ ├── Players │ │ ├── 128x256 │ │ │ ├── Beige │ │ │ │ ├── alienBeige_climb1.png │ │ │ │ ├── alienBeige_climb2.png │ │ │ │ ├── alienBeige_duck.png │ │ │ │ ├── alienBeige_front.png │ │ │ │ ├── alienBeige_hit.png │ │ │ │ ├── alienBeige_jump.png │ │ │ │ ├── alienBeige_stand.png │ │ │ │ ├── alienBeige_swim1.png │ │ │ │ ├── alienBeige_swim2.png │ │ │ │ ├── alienBeige_walk1.png │ │ │ │ └── alienBeige_walk2.png │ │ │ ├── Blue │ │ │ │ ├── alienBlue_climb1.png │ │ │ │ ├── alienBlue_climb2.png │ │ │ │ ├── alienBlue_duck.png │ │ │ │ ├── alienBlue_front.png │ │ │ │ ├── alienBlue_hit.png │ │ │ │ ├── alienBlue_jump.png │ │ │ │ ├── alienBlue_stand.png │ │ │ │ ├── alienBlue_swim1.png │ │ │ │ ├── alienBlue_swim2.png │ │ │ │ ├── alienBlue_walk1.png │ │ │ │ └── alienBlue_walk2.png │ │ │ ├── Green │ │ │ │ ├── alienGreen_climb1.png │ │ │ │ ├── alienGreen_climb2.png │ │ │ │ ├── alienGreen_duck.png │ │ │ │ ├── alienGreen_front.png │ │ │ │ ├── alienGreen_hit.png │ │ │ │ ├── alienGreen_jump.png │ │ │ │ ├── alienGreen_stand.png │ │ │ │ ├── alienGreen_swim1.png │ │ │ │ ├── alienGreen_swim2.png │ │ │ │ ├── alienGreen_walk1.png │ │ │ │ └── alienGreen_walk2.png │ │ │ ├── Pink │ │ │ │ ├── alienPink_climb1.png │ │ │ │ ├── alienPink_climb2.png │ │ │ │ ├── alienPink_duck.png │ │ │ │ ├── alienPink_front.png │ │ │ │ ├── alienPink_hit.png │ │ │ │ ├── alienPink_jump.png │ │ │ │ ├── alienPink_stand.png │ │ │ │ ├── alienPink_swim1.png │ │ │ │ ├── alienPink_swim2.png │ │ │ │ ├── alienPink_walk1.png │ │ │ │ └── alienPink_walk2.png │ │ │ └── Yellow │ │ │ │ ├── alienYellow_climb1.png │ │ │ │ ├── alienYellow_climb2.png │ │ │ │ ├── alienYellow_duck.png │ │ │ │ ├── alienYellow_front.png │ │ │ │ ├── alienYellow_hit.png │ │ │ │ ├── alienYellow_jump.png │ │ │ │ ├── alienYellow_stand.png │ │ │ │ ├── alienYellow_swim1.png │ │ │ │ ├── alienYellow_swim2.png │ │ │ │ ├── alienYellow_walk1.png │ │ │ │ └── alienYellow_walk2.png │ │ └── Variable sizes │ │ │ ├── Beige │ │ │ ├── alienBiege_climb1.png │ │ │ ├── alienBiege_climb2.png │ │ │ ├── alienBiege_duck.png │ │ │ ├── alienBiege_front.png │ │ │ ├── alienBiege_hit.png │ │ │ ├── alienBiege_jump.png │ │ │ ├── alienBiege_stand.png │ │ │ ├── alienBiege_swim1.png │ │ │ ├── alienBiege_swim2.png │ │ │ ├── alienBiege_walk1.png │ │ │ └── alienBiege_walk2.png │ │ │ ├── Blue │ │ │ ├── alienBlue_climb1.png │ │ │ ├── alienBlue_climb2.png │ │ │ ├── alienBlue_duck.png │ │ │ ├── alienBlue_front.png │ │ │ ├── alienBlue_hit.png │ │ │ ├── alienBlue_jump.png │ │ │ ├── alienBlue_stand.png │ │ │ ├── alienBlue_swim1.png │ │ │ ├── alienBlue_swim2.png │ │ │ ├── alienBlue_walk1.png │ │ │ └── alienBlue_walk2.png │ │ │ ├── Green │ │ │ ├── alienGreen_climb1.png │ │ │ ├── alienGreen_climb2.png │ │ │ ├── alienGreen_duck.png │ │ │ ├── alienGreen_front.png │ │ │ ├── alienGreen_hit.png │ │ │ ├── alienGreen_jump.png │ │ │ ├── alienGreen_stand.png │ │ │ ├── alienGreen_swim1.png │ │ │ ├── alienGreen_swim2.png │ │ │ ├── alienGreen_walk1.png │ │ │ └── alienGreen_walk2.png │ │ │ ├── Pink │ │ │ ├── alienPink_climb1.png │ │ │ ├── alienPink_climb2.png │ │ │ ├── alienPink_duck.png │ │ │ ├── alienPink_front.png │ │ │ ├── alienPink_hit.png │ │ │ ├── alienPink_jump.png │ │ │ ├── alienPink_stand.png │ │ │ ├── alienPink_swim1.png │ │ │ ├── alienPink_swim2.png │ │ │ ├── alienPink_walk1.png │ │ │ └── alienPink_walk2.png │ │ │ └── Yellow │ │ │ ├── alienYellow_climb1.png │ │ │ ├── alienYellow_climb2.png │ │ │ ├── alienYellow_duck.png │ │ │ ├── alienYellow_front.png │ │ │ ├── alienYellow_hit.png │ │ │ ├── alienYellow_jump.png │ │ │ ├── alienYellow_stand.png │ │ │ ├── alienYellow_swim1.png │ │ │ ├── alienYellow_swim2.png │ │ │ ├── alienYellow_walk1.png │ │ │ └── alienYellow_walk2.png │ │ └── Tiles │ │ ├── bomb.png │ │ ├── bombWhite.png │ │ ├── boxCoin.png │ │ ├── boxCoin_boxed.png │ │ ├── boxCoin_disabled.png │ │ ├── boxCoin_disabled_boxed.png │ │ ├── boxCrate.png │ │ ├── boxCrate_double.png │ │ ├── boxCrate_single.png │ │ ├── boxCrate_warning.png │ │ ├── boxExplosive.png │ │ ├── boxExplosive_disabled.png │ │ ├── boxExplosive_used.png │ │ ├── boxItem.png │ │ ├── boxItem_boxed.png │ │ ├── boxItem_disabled.png │ │ ├── boxItem_disabled_boxed.png │ │ ├── brickBrown.png │ │ ├── brickGrey.png │ │ ├── bridgeA.png │ │ ├── bridgeB.png │ │ ├── bush.png │ │ ├── cactus.png │ │ ├── chain.png │ │ ├── doorClosed_mid.png │ │ ├── doorClosed_top.png │ │ ├── doorOpen_mid.png │ │ ├── doorOpen_top.png │ │ ├── fence.png │ │ ├── fenceBroken.png │ │ ├── grass.png │ │ ├── ladderMid.png │ │ ├── ladderTop.png │ │ ├── lava.png │ │ ├── lavaTop_high.png │ │ ├── lavaTop_low.png │ │ ├── leverLeft.png │ │ ├── leverMid.png │ │ ├── leverRight.png │ │ ├── lockBlue.png │ │ ├── lockGreen.png │ │ ├── lockRed.png │ │ ├── lockYellow.png │ │ ├── mushroomBrown.png │ │ ├── mushroomRed.png │ │ ├── plantPurple.png │ │ ├── rock.png │ │ ├── sign.png │ │ ├── signExit.png │ │ ├── signLeft.png │ │ ├── signRight.png │ │ ├── snow.png │ │ ├── spikes.png │ │ ├── spring.png │ │ ├── sprung.png │ │ ├── switchBlue.png │ │ ├── switchBlue_pressed.png │ │ ├── switchGreen.png │ │ ├── switchGreen_pressed.png │ │ ├── switchRed.png │ │ ├── switchRed_pressed.png │ │ ├── switchYellow.png │ │ ├── switchYellow_pressed.png │ │ ├── torch1.png │ │ ├── torch2.png │ │ ├── torchOff.png │ │ ├── water.png │ │ ├── waterTop_high.png │ │ ├── waterTop_low.png │ │ ├── weight.png │ │ ├── weightAttached.png │ │ └── window.png ├── coinrun.cpp ├── coinrunenv.py ├── config.py ├── enjoy.py ├── interactive.py ├── main_utils.py ├── policies.py ├── ppo2.py ├── random_agent.py ├── setup_utils.py ├── tb_utils.py ├── test_coinrun.py ├── train_agent.py └── wrappers.py ├── requirements.txt └── setup.py /.dockerignore: -------------------------------------------------------------------------------- 1 | **/.build*/ 2 | **/.generated/ 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__/ 2 | .build*/ 3 | .generated/ 4 | *.egg-info/ 5 | saved_models/ 6 | -------------------------------------------------------------------------------- /ASSET_LICENSES.md: -------------------------------------------------------------------------------- 1 | * coinrun/assets/kenney 2 | * CC0: https://www.kenney.nl/assets/platformer-pack-redux 3 | 4 | * coinrun/assets/backgrounds/spacebackgrounds-0 5 | * CC0: https://opengameart.org/content/spacebackgrounds-0 6 | 7 | * coinrun/assets/backgrounds/background-from-glitch-assets 8 | * CC0: https://opengameart.org/content/background-from-glitch-assets 9 | 10 | * coinrun/assets/backgrounds/game-backgrounds 11 | * CC0: https://opengameart.org/content/game-backgrounds 12 | 13 | * coinrun/assets/backgrounds/space-backgrounds-3 14 | * CC0: https://opengameart.org/content/space-backgrounds-3 15 | 16 | * coinrun/assets/backgrounds/background-2 17 | * CC0: https://opengameart.org/content/background-2 -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM tensorflow/tensorflow:1.12.0-devel-py3 2 | RUN apt-get update 3 | RUN apt-get install --yes mpich build-essential qt5-default pkg-config 4 | ADD . coinrun 5 | RUN pip install -r coinrun/requirements.txt 6 | RUN pip install -e coinrun 7 | # this has the side-effect of building the coinrun env 8 | RUN python -c 'import coinrun' -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2018 OpenAI (http://openai.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **Status:** Archive (code is provided as-is, no updates expected) 2 | 3 | # Quantifying Generalization in Reinforcement Learning 4 | 5 | #### [[Blog Post]](https://blog.openai.com/quantifying-generalization-in-reinforcement-learning/) [[Paper]](https://drive.google.com/file/d/1U1-uufB_ZzQ1HG67BhW9bB8mTJ6JtS19/view) 6 | 7 | This is code for the environments used in the paper [Quantifying Generalization in Reinforcement Learning](https://drive.google.com/file/d/1U1-uufB_ZzQ1HG67BhW9bB8mTJ6JtS19/view) along with an example training script. 8 | 9 | Authors: Karl Cobbe, Oleg Klimov, Chris Hesse, Taehoon Kim, John Schulman 10 | 11 | ![CoinRun](coinrun.png?raw=true "CoinRun") 12 | 13 | ## Install 14 | 15 | You should install the package in development mode so you can easily change the files. You may also want to create a virtualenv before installing since it depends on a specific version of OpenAI baselines. 16 | 17 | This environment has been used on Mac OS X and Ubuntu 16.04 with Python 3.6. 18 | 19 | ``` 20 | # Linux 21 | apt-get install mpich build-essential qt5-default pkg-config 22 | # Mac 23 | brew install qt open-mpi pkg-config 24 | 25 | git clone https://github.com/openai/coinrun.git 26 | cd coinrun 27 | pip install tensorflow==1.12.0 # or tensorflow-gpu 28 | pip install -r requirements.txt 29 | pip install -e . 30 | ``` 31 | 32 | Note that this does not compile the environment, the environment will be compiled when the `coinrun` package is imported. 33 | 34 | ## Try it out 35 | 36 | Try the environment out with the keyboard: 37 | 38 | ``` 39 | python -m coinrun.interactive 40 | ``` 41 | 42 | If this fails, you may be missing a dependency or may need to fix `coinrun/Makefile` for your machine. 43 | 44 | Train an agent using PPO: 45 | 46 | ``` 47 | python -m coinrun.train_agent --run-id myrun --save-interval 1 48 | ``` 49 | 50 | After each parameter update, this will save a copy of the agent to `./saved_models/`. Results are logged to `/tmp/tensorflow` by default. 51 | 52 | Run parallel training using MPI: 53 | 54 | ``` 55 | mpiexec -np 8 python -m coinrun.train_agent --run-id myrun 56 | ``` 57 | 58 | Train an agent on a fixed set of N levels: 59 | 60 | ``` 61 | python -m coinrun.train_agent --run-id myrun --num-levels N 62 | ``` 63 | 64 | Train an agent on the same 500 levels used in the paper: 65 | 66 | ``` 67 | python -m coinrun.train_agent --run-id myrun --num-levels 500 68 | ``` 69 | 70 | Train an agent on a different set of 500 levels: 71 | 72 | ``` 73 | python -m coinrun.train_agent --run-id myrun --num-levels 500 --set-seed 13 74 | ``` 75 | 76 | Continue training an agent from a checkpoint: 77 | 78 | ``` 79 | python -m coinrun.train_agent --run-id newrun --restore-id myrun 80 | ``` 81 | 82 | Evaluate an agent's final training performance across N parallel environments. Evaluate K levels on each environment (NxK total levels). Default N=20 is reasonable. Evaluation levels will be drawn from the same set as those seen during training. 83 | 84 | ``` 85 | python -m coinrun.enjoy --train-eval --restore-id myrun -num-eval N -rep K 86 | ``` 87 | 88 | Evaluate an agent's final test performance on PxNxK distinct levels. All evaluation levels are uniformly sampled from the set of all high difficulty levels. Although we don't explicitly enforce that the test set avoid training levels, the probability of collisions is negligible. 89 | 90 | ``` 91 | mpiexec -np P python -m coinrun.enjoy --test-eval --restore-id myrun -num-eval N -rep K 92 | ``` 93 | 94 | Run simultaneous training and testing using MPI. Half the workers will train and half will test. 95 | 96 | ``` 97 | mpiexec -np 8 python -m coinrun.train_agent --run-id myrun --test 98 | ``` 99 | 100 | View training options: 101 | 102 | ``` 103 | python -m coinrun.train_agent --help 104 | ``` 105 | 106 | Watch a trained agent play a level: 107 | 108 | ``` 109 | python -m coinrun.enjoy --restore-id myrun --hres 110 | ``` 111 | 112 | Train an agent to play RandomMazes: 113 | 114 | ``` 115 | python train_agent.py --run-id random_mazes --game-type maze --use-lstm 1 116 | ``` 117 | 118 | Train an agent to play CoinRun-Platforms, using a larger number of environments to stabilize learning: 119 | 120 | ``` 121 | python train_agent.py --run-id coinrun_plat --game-type platform --num-envs 96 --use-lstm 1 122 | ``` 123 | 124 | There's an example random agent script in [`coinrun/random_agent.py`](coinrun/random_agent.py) which you can run like so: 125 | 126 | ``` 127 | python -m coinrun.random_agent 128 | ``` 129 | 130 | ## Docker 131 | 132 | There's also a `Dockerfile` to create a CoinRun docker image: 133 | 134 | ``` 135 | docker build --tag coinrun . 136 | docker run --rm coinrun python -um coinrun.random_agent 137 | ``` 138 | 139 | ## Colab 140 | 141 | There's also a [Colab notebook](https://colab.research.google.com/drive/1e2Eyl8HANzcqPheVBMbdwi3wqDv41kZt) showing how to setup CoinRun. 142 | 143 | See [LICENSES](ASSET_LICENSES.md) for asset license information. 144 | -------------------------------------------------------------------------------- /coinrun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun.png -------------------------------------------------------------------------------- /coinrun/Makefile: -------------------------------------------------------------------------------- 1 | UNAME := $(shell uname -s) 2 | OBJDIRR=.build-release 3 | OBJDIRD=.build-debug 4 | 5 | ifeq ($(UNAME),Linux) 6 | PKG =pkg-config 7 | MOC =moc 8 | LIBS =-L/usr/lib64 -lm -lGL -lGLU 9 | INC =-I/usr/include 10 | SO=.so 11 | endif 12 | 13 | ifeq ($(UNAME),Darwin) 14 | ifneq ("$(wildcard /usr/local/opt/qt5/bin/moc"), "") 15 | $(info Mac, assumed python3, homebrew branch) 16 | MOC =/usr/local/opt/qt5/bin/moc 17 | export PKG_CONFIG_PATH=/usr/local/opt/qt5/lib/pkgconfig 18 | else 19 | $(info Mac, assumed python3, anaconda branch) 20 | MOC =moc 21 | endif 22 | PKG =pkg-config 23 | SO=.dylib 24 | endif 25 | 26 | INC += `$(PKG) --cflags Qt5Widgets` 27 | LIBS += -lstdc++ `$(PKG) --libs Qt5Widgets` 28 | 29 | CC=gcc 30 | LINK=gcc 31 | AR=ar r 32 | AR_OUT= 33 | LINK_OUT= -o 34 | MINUS_O = -o 35 | CFLAGS = -std=c++11 -Wall -Wno-unused-variable -Wno-unused-function -Wno-deprecated-register -fPIC -g -O3 -march=native $(INC) 36 | CFLAGSD = -std=c++11 -Wall -Wno-unused-variable -Wno-unused-function -Wno-deprecated-register -fPIC -g -DDEBUG $(INC) 37 | 38 | SHARED = -shared 39 | DEPENDS = -MMD -MF $@.dep 40 | 41 | EVERY_BIN=$(OBJDIRR)/coinrun_cpp$(SO) $(OBJDIRD)/coinrun_cpp_d$(SO) 42 | 43 | SRC = \ 44 | coinrun.cpp 45 | 46 | SRC_R = $(patsubst %.cpp, $(OBJDIRR)/%.o, $(SRC)) 47 | SRC_D = $(patsubst %.cpp, $(OBJDIRD)/%.o, $(SRC)) 48 | 49 | EVERY_OBJ_R = $(SRC_R) 50 | EVERY_OBJ_D = $(SRC_D) 51 | DEP = $(patsubst %.o,%.o.dep, $(EVERY_OBJ_R) $(EVERY_OBJ_D)) 52 | 53 | all: dirs $(EVERY_BIN) 54 | 55 | $(OBJDIRR)/coinrun.o: .generated/coinrun.moc 56 | .generated/coinrun.moc: coinrun.cpp 57 | $(MOC) -o $@ $< 58 | 59 | $(OBJDIRR)/coinrun_cpp$(SO): $(SRC_R) 60 | $(LINK) $(SHARED) $(LINK_OUT) $@ $^ $(LIBS) 61 | 62 | $(OBJDIRD)/coinrun_cpp_d$(SO): $(SRC_D) 63 | $(LINK) $(SHARED) $(LINK_OUT) $@ $^ $(LIBS) 64 | 65 | $(OBJDIRR)/%.o: %.cpp 66 | $(CC) $(CFLAGS) -c $< $(MINUS_O)$@ $(DEPENDS) 67 | $(OBJDIRD)/%.o: %.cpp 68 | $(CC) $(CFLAGSD) -c $< $(MINUS_O)$@ $(DEPENDS) 69 | 70 | .PHONY: depends clean dirs 71 | 72 | clean: 73 | $(RM) $(EVERY_BIN) $(EVERY_OBJ_R) $(EVERY_OBJ_D) .generated/*.moc *.ilk *.pdb $(DEP) 74 | rm -rf .generated 75 | rm -rf $(OBJDIRD) 76 | rm -rf $(OBJDIRR) 77 | 78 | depends: 79 | cat $(DEP) > Makefile.dep 80 | 81 | .generated: 82 | mkdir -p .generated 83 | $(OBJDIRR): 84 | mkdir -p $@ 85 | $(OBJDIRD): 86 | mkdir -p $@ 87 | 88 | dirs: .generated $(OBJDIRR) $(OBJDIRD) 89 | 90 | -include Makefile.dep 91 | -------------------------------------------------------------------------------- /coinrun/__init__.py: -------------------------------------------------------------------------------- 1 | from .coinrunenv import init_args_and_threads 2 | from .coinrunenv import make 3 | 4 | __all__ = [ 5 | 'init_args_and_threads', 6 | 'make' 7 | ] 8 | -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/background-2/airadventurelevel1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/background-2/airadventurelevel1.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/background-2/airadventurelevel2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/background-2/airadventurelevel2.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/background-2/airadventurelevel3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/background-2/airadventurelevel3.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/background-2/airadventurelevel4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/background-2/airadventurelevel4.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/background-from-glitch-assets/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/background-from-glitch-assets/background.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/game-backgrounds/BG_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/game-backgrounds/BG_only.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/game-backgrounds/Background (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/game-backgrounds/Background (2).png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/game-backgrounds/Background (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/game-backgrounds/Background (3).png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/game-backgrounds/Background (4).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/game-backgrounds/Background (4).png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/game-backgrounds/Background (5).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/game-backgrounds/Background (5).png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/game-backgrounds/Background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/game-backgrounds/Background.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/game-backgrounds/G049_OT000_002A__background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/game-backgrounds/G049_OT000_002A__background.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/game-backgrounds/G154_OT000_002A__background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/game-backgrounds/G154_OT000_002A__background.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/game-backgrounds/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/game-backgrounds/bg1.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/game-backgrounds/seabed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/game-backgrounds/seabed.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/space-backgrounds-3/Background-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/space-backgrounds-3/Background-1.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/space-backgrounds-3/Background-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/space-backgrounds-3/Background-2.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/space-backgrounds-3/Background-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/space-backgrounds-3/Background-3.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/space-backgrounds-3/Background-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/space-backgrounds-3/Background-4.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/spacebackgrounds-0/deep_sky_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/spacebackgrounds-0/deep_sky_01.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/spacebackgrounds-0/deep_space_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/spacebackgrounds-0/deep_space_01.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/spacebackgrounds-0/eye_nebula_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/spacebackgrounds-0/eye_nebula_01.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/spacebackgrounds-0/ez_space_lite_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/spacebackgrounds-0/ez_space_lite_01.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/spacebackgrounds-0/meyespace_v1_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/spacebackgrounds-0/meyespace_v1_01.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/spacebackgrounds-0/milky_way_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/spacebackgrounds-0/milky_way_01.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/spacebackgrounds-0/space_nebula_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/spacebackgrounds-0/space_nebula_01.png -------------------------------------------------------------------------------- /coinrun/assets/backgrounds/spacebackgrounds-0/spacegen_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/backgrounds/spacebackgrounds-0/spacegen_01.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Backgrounds/blue_desert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Backgrounds/blue_desert.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Backgrounds/blue_grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Backgrounds/blue_grass.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Backgrounds/blue_land.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Backgrounds/blue_land.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Backgrounds/blue_shroom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Backgrounds/blue_shroom.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Backgrounds/colored_desert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Backgrounds/colored_desert.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Backgrounds/colored_grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Backgrounds/colored_grass.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Backgrounds/colored_land.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Backgrounds/colored_land.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Backgrounds/colored_shroom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Backgrounds/colored_shroom.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/barnacle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/barnacle.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/barnacle_attack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/barnacle_attack.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/barnacle_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/barnacle_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/bee.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/bee.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/bee_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/bee_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/bee_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/bee_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fishBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fishBlue.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fishBlue_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fishBlue_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fishBlue_fall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fishBlue_fall.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fishGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fishGreen.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fishGreen_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fishGreen_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fishGreen_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fishGreen_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fishPink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fishPink.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fishPink_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fishPink_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fishPink_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fishPink_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fly.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fly_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fly_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/fly_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/fly_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/frog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/frog.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/frog_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/frog_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/frog_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/frog_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/ladybug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/ladybug.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/ladybug_fly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/ladybug_fly.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/ladybug_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/ladybug_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/mouse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/mouse.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/mouse_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/mouse_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/mouse_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/mouse_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/saw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/saw.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/sawHalf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/sawHalf.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/sawHalf_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/sawHalf_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/sawHalf_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/sawHalf_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/saw_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/saw_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/saw_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/saw_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimeBlock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimeBlock.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimeBlock_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimeBlock_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimeBlock_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimeBlock_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimeBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimeBlue.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimeBlue_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimeBlue_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimeBlue_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimeBlue_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimeBlue_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimeBlue_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimeGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimeGreen.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimeGreen_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimeGreen_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimeGreen_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimeGreen_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimeGreen_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimeGreen_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimePurple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimePurple.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimePurple_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimePurple_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimePurple_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimePurple_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/slimePurple_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/slimePurple_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/snail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/snail.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/snail_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/snail_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/snail_shell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/snail_shell.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/wormGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/wormGreen.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/wormGreen_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/wormGreen_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/wormGreen_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/wormGreen_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/wormPink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/wormPink.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/wormPink_dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/wormPink_dead.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Enemies/wormPink_move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Enemies/wormPink_move.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirt.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtCenter.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtCenter_rounded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtCenter_rounded.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtCliffAlt_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtCliffAlt_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtCliffAlt_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtCliffAlt_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtCliff_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtCliff_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtCliff_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtCliff_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtCorner_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtCorner_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtCorner_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtCorner_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtHalf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtHalf.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtHalf_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtHalf_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtHalf_mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtHalf_mid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtHalf_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtHalf_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtHill_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtHill_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtHill_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtHill_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtLeft.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtMid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtMid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Dirt/dirtRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Dirt/dirtRight.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grass.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassCenter.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassCenter_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassCenter_round.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassCliffAlt_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassCliffAlt_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassCliffAlt_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassCliffAlt_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassCliff_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassCliff_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassCliff_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassCliff_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassCorner_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassCorner_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassCorner_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassCorner_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassHalf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassHalf.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassHalf_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassHalf_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassHalf_mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassHalf_mid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassHalf_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassHalf_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassHill_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassHill_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassHill_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassHill_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassLeft.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassMid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassMid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Grass/grassRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Grass/grassRight.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planet.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetCenter.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetCenter_rounded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetCenter_rounded.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetCliffAlt_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetCliffAlt_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetCliffAlt_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetCliffAlt_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetCliff_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetCliff_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetCliff_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetCliff_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetCorner_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetCorner_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetCorner_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetCorner_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetHalf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetHalf.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetHalf_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetHalf_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetHalf_mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetHalf_mid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetHalf_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetHalf_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetHill_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetHill_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetHill_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetHill_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetLeft.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetMid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetMid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Planet/planetRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Planet/planetRight.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sand.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandCenter.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandCenter_rounded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandCenter_rounded.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandCliffAlt_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandCliffAlt_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandCliffAlt_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandCliffAlt_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandCliff_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandCliff_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandCliff_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandCliff_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandCorner_leftg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandCorner_leftg.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandCorner_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandCorner_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandHalf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandHalf.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandHalf_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandHalf_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandHalf_mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandHalf_mid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandHalf_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandHalf_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandHill_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandHill_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandHill_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandHill_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandLeft.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandMid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandMid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Sand/sandRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Sand/sandRight.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snow.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowCenter.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowCenter_rounded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowCenter_rounded.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowCliffAlt_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowCliffAlt_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowCliffAlt_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowCliffAlt_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowCliff_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowCliff_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowCliff_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowCliff_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowCorner_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowCorner_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowCorner_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowCorner_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowHalf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowHalf.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowHalf_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowHalf_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowHalf_mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowHalf_mid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowHalf_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowHalf_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowHill_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowHill_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowHill_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowHill_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowLeft.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowMid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowMid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Snow/snowRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Snow/snowRight.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stone.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneCenter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneCenter.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneCenter_rounded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneCenter_rounded.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneCliffAlt_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneCliffAlt_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneCliffAlt_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneCliffAlt_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneCliff_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneCliff_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneCliff_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneCliff_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneCorner_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneCorner_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneCorner_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneCorner_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneHalf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneHalf.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneHalf_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneHalf_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneHalf_mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneHalf_mid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneHalf_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneHalf_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneHill_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneHill_left.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneHill_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneHill_right.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneLeft.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneMid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneMid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Ground/Stone/stoneRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Ground/Stone/stoneRight.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hud0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hud0.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hud1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hud1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hud2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hud2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hud3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hud3.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hud4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hud4.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hud5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hud5.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hud6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hud6.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hud7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hud7.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hud8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hud8.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hud9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hud9.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudCoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudCoin.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudHeart_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudHeart_empty.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudHeart_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudHeart_full.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudHeart_half.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudHeart_half.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudJewel_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudJewel_blue.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudJewel_blue_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudJewel_blue_empty.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudJewel_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudJewel_green.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudJewel_green_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudJewel_green_empty.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudJewel_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudJewel_red.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudJewel_red_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudJewel_red_empty.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudJewel_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudJewel_yellow.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudJewel_yellow_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudJewel_yellow_empty.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudKey_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudKey_blue.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudKey_blue_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudKey_blue_empty.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudKey_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudKey_green.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudKey_green_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudKey_green_empty.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudKey_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudKey_red.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudKey_red_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudKey_red_empty.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudKey_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudKey_yellow.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudKey_yellow_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudKey_yellow_empty.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudPlayer_beige.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudPlayer_beige.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudPlayer_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudPlayer_blue.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudPlayer_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudPlayer_green.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudPlayer_pink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudPlayer_pink.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudPlayer_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudPlayer_yellow.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/HUD/hudX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/HUD/hudX.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/coinBronze.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/coinBronze.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/coinGold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/coinGold.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/coinSilver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/coinSilver.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagBlue1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagBlue1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagBlue2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagBlue2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagBlue_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagBlue_down.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagGreen1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagGreen1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagGreen2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagGreen2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagGreen_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagGreen_down.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagRed1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagRed1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagRed2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagRed2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagRed_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagRed_down.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagYellow1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagYellow1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagYellow2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagYellow2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/flagYellow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/flagYellow_down.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/gemBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/gemBlue.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/gemGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/gemGreen.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/gemRed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/gemRed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/gemYellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/gemYellow.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/keyBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/keyBlue.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/keyGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/keyGreen.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/keyRed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/keyRed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/keyYellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/keyYellow.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Items/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Items/star.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Particles/brickBrown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Particles/brickBrown.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Particles/brickGrey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Particles/brickGrey.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Particles/fireball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Particles/fireball.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Beige/alienBeige_climb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Beige/alienBeige_climb1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Beige/alienBeige_climb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Beige/alienBeige_climb2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Beige/alienBeige_duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Beige/alienBeige_duck.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Beige/alienBeige_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Beige/alienBeige_front.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Beige/alienBeige_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Beige/alienBeige_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Beige/alienBeige_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Beige/alienBeige_jump.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Beige/alienBeige_stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Beige/alienBeige_stand.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Beige/alienBeige_swim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Beige/alienBeige_swim1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Beige/alienBeige_swim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Beige/alienBeige_swim2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Beige/alienBeige_walk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Beige/alienBeige_walk1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Beige/alienBeige_walk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Beige/alienBeige_walk2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Blue/alienBlue_climb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Blue/alienBlue_climb1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Blue/alienBlue_climb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Blue/alienBlue_climb2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Blue/alienBlue_duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Blue/alienBlue_duck.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Blue/alienBlue_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Blue/alienBlue_front.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Blue/alienBlue_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Blue/alienBlue_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Blue/alienBlue_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Blue/alienBlue_jump.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Blue/alienBlue_stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Blue/alienBlue_stand.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Blue/alienBlue_swim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Blue/alienBlue_swim1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Blue/alienBlue_swim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Blue/alienBlue_swim2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Blue/alienBlue_walk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Blue/alienBlue_walk1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Blue/alienBlue_walk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Blue/alienBlue_walk2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Green/alienGreen_climb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Green/alienGreen_climb1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Green/alienGreen_climb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Green/alienGreen_climb2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Green/alienGreen_duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Green/alienGreen_duck.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Green/alienGreen_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Green/alienGreen_front.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Green/alienGreen_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Green/alienGreen_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Green/alienGreen_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Green/alienGreen_jump.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Green/alienGreen_stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Green/alienGreen_stand.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Green/alienGreen_swim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Green/alienGreen_swim1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Green/alienGreen_swim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Green/alienGreen_swim2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Green/alienGreen_walk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Green/alienGreen_walk1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Green/alienGreen_walk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Green/alienGreen_walk2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Pink/alienPink_climb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Pink/alienPink_climb1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Pink/alienPink_climb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Pink/alienPink_climb2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Pink/alienPink_duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Pink/alienPink_duck.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Pink/alienPink_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Pink/alienPink_front.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Pink/alienPink_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Pink/alienPink_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Pink/alienPink_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Pink/alienPink_jump.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Pink/alienPink_stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Pink/alienPink_stand.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Pink/alienPink_swim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Pink/alienPink_swim1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Pink/alienPink_swim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Pink/alienPink_swim2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Pink/alienPink_walk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Pink/alienPink_walk1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Pink/alienPink_walk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Pink/alienPink_walk2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_climb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_climb1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_climb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_climb2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_duck.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_front.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_jump.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_stand.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_swim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_swim1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_swim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_swim2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_walk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_walk1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_walk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/128x256/Yellow/alienYellow_walk2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_climb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_climb1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_climb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_climb2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_duck.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_front.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_jump.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_stand.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_swim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_swim1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_swim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_swim2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_walk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_walk1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_walk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Beige/alienBiege_walk2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_climb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_climb1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_climb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_climb2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_duck.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_front.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_jump.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_stand.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_swim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_swim1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_swim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_swim2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_walk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_walk1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_walk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Blue/alienBlue_walk2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_climb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_climb1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_climb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_climb2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_duck.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_front.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_jump.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_stand.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_swim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_swim1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_swim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_swim2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_walk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_walk1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_walk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Green/alienGreen_walk2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_climb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_climb1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_climb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_climb2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_duck.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_front.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_jump.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_stand.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_swim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_swim1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_swim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_swim2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_walk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_walk1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_walk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Pink/alienPink_walk2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_climb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_climb1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_climb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_climb2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_duck.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_front.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_front.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_hit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_hit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_jump.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_stand.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_swim1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_swim1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_swim2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_swim2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_walk1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_walk1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_walk2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Players/Variable sizes/Yellow/alienYellow_walk2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/bomb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/bomb.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/bombWhite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/bombWhite.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxCoin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxCoin.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxCoin_boxed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxCoin_boxed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxCoin_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxCoin_disabled.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxCoin_disabled_boxed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxCoin_disabled_boxed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxCrate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxCrate.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxCrate_double.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxCrate_double.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxCrate_single.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxCrate_single.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxCrate_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxCrate_warning.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxExplosive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxExplosive.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxExplosive_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxExplosive_disabled.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxExplosive_used.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxExplosive_used.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxItem.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxItem_boxed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxItem_boxed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxItem_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxItem_disabled.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/boxItem_disabled_boxed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/boxItem_disabled_boxed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/brickBrown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/brickBrown.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/brickGrey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/brickGrey.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/bridgeA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/bridgeA.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/bridgeB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/bridgeB.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/bush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/bush.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/cactus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/cactus.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/chain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/chain.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/doorClosed_mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/doorClosed_mid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/doorClosed_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/doorClosed_top.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/doorOpen_mid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/doorOpen_mid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/doorOpen_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/doorOpen_top.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/fence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/fence.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/fenceBroken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/fenceBroken.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/grass.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/ladderMid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/ladderMid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/ladderTop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/ladderTop.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/lava.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/lava.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/lavaTop_high.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/lavaTop_high.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/lavaTop_low.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/lavaTop_low.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/leverLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/leverLeft.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/leverMid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/leverMid.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/leverRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/leverRight.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/lockBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/lockBlue.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/lockGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/lockGreen.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/lockRed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/lockRed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/lockYellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/lockYellow.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/mushroomBrown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/mushroomBrown.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/mushroomRed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/mushroomRed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/plantPurple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/plantPurple.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/rock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/rock.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/sign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/sign.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/signExit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/signExit.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/signLeft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/signLeft.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/signRight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/signRight.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/snow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/snow.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/spikes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/spikes.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/spring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/spring.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/sprung.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/sprung.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/switchBlue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/switchBlue.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/switchBlue_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/switchBlue_pressed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/switchGreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/switchGreen.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/switchGreen_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/switchGreen_pressed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/switchRed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/switchRed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/switchRed_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/switchRed_pressed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/switchYellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/switchYellow.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/switchYellow_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/switchYellow_pressed.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/torch1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/torch1.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/torch2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/torch2.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/torchOff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/torchOff.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/water.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/water.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/waterTop_high.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/waterTop_high.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/waterTop_low.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/waterTop_low.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/weight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/weight.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/weightAttached.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/weightAttached.png -------------------------------------------------------------------------------- /coinrun/assets/kenney/Tiles/window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openai/coinrun/523704f3a203dcaad84caf96ea92799452dc902f/coinrun/assets/kenney/Tiles/window.png -------------------------------------------------------------------------------- /coinrun/coinrunenv.py: -------------------------------------------------------------------------------- 1 | """ 2 | Python interface to the CoinRun shared library using ctypes. 3 | 4 | On import, this will attempt to build the shared library. 5 | """ 6 | 7 | import os 8 | import atexit 9 | import random 10 | import sys 11 | from ctypes import c_int, c_char_p, c_float, c_bool 12 | 13 | import gym 14 | import gym.spaces 15 | import numpy as np 16 | import numpy.ctypeslib as npct 17 | from baselines.common.vec_env import VecEnv 18 | from baselines import logger 19 | 20 | from coinrun.config import Config 21 | 22 | from mpi4py import MPI 23 | from baselines.common import mpi_util 24 | 25 | # if the environment is crashing, try using the debug build to get 26 | # a readable stack trace 27 | DEBUG = False 28 | SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) 29 | 30 | game_versions = { 31 | 'standard': 1000, 32 | 'platform': 1001, 33 | 'maze': 1002, 34 | } 35 | 36 | def build(): 37 | lrank, _lsize = mpi_util.get_local_rank_size(MPI.COMM_WORLD) 38 | if lrank == 0: 39 | dirname = os.path.dirname(__file__) 40 | if len(dirname): 41 | make_cmd = "QT_SELECT=5 make -C %s" % dirname 42 | else: 43 | make_cmd = "QT_SELECT=5 make" 44 | 45 | r = os.system(make_cmd) 46 | if r != 0: 47 | logger.error('coinrun: make failed') 48 | sys.exit(1) 49 | MPI.COMM_WORLD.barrier() 50 | 51 | build() 52 | 53 | if DEBUG: 54 | lib_path = '.build-debug/coinrun_cpp_d' 55 | else: 56 | lib_path = '.build-release/coinrun_cpp' 57 | 58 | lib = npct.load_library(lib_path, os.path.dirname(__file__)) 59 | lib.init.argtypes = [c_int] 60 | lib.get_NUM_ACTIONS.restype = c_int 61 | lib.get_RES_W.restype = c_int 62 | lib.get_RES_H.restype = c_int 63 | lib.get_VIDEORES.restype = c_int 64 | 65 | lib.vec_create.argtypes = [ 66 | c_int, # game_type 67 | c_int, # nenvs 68 | c_int, # lump_n 69 | c_bool, # want_hires_render 70 | c_float, # default_zoom 71 | ] 72 | lib.vec_create.restype = c_int 73 | 74 | lib.vec_close.argtypes = [c_int] 75 | 76 | lib.vec_step_async_discrete.argtypes = [c_int, npct.ndpointer(dtype=np.int32, ndim=1)] 77 | 78 | lib.initialize_args.argtypes = [npct.ndpointer(dtype=np.int32, ndim=1)] 79 | lib.initialize_set_monitor_dir.argtypes = [c_char_p, c_int] 80 | 81 | lib.vec_wait.argtypes = [ 82 | c_int, 83 | npct.ndpointer(dtype=np.uint8, ndim=4), # normal rgb 84 | npct.ndpointer(dtype=np.uint8, ndim=4), # larger rgb for render() 85 | npct.ndpointer(dtype=np.float32, ndim=1), # rew 86 | npct.ndpointer(dtype=np.bool, ndim=1), # done 87 | ] 88 | 89 | already_inited = False 90 | 91 | def init_args_and_threads(cpu_count=4, 92 | monitor_csv_policy='all', 93 | rand_seed=None): 94 | """ 95 | Perform one-time global init for the CoinRun library. This must be called 96 | before creating an instance of CoinRunVecEnv. You should not 97 | call this multiple times from the same process. 98 | """ 99 | os.environ['COINRUN_RESOURCES_PATH'] = os.path.join(SCRIPT_DIR, 'assets') 100 | is_high_difficulty = Config.HIGH_DIFFICULTY 101 | 102 | if rand_seed is None: 103 | rand_seed = random.SystemRandom().randint(0, 1000000000) 104 | 105 | # ensure different MPI processes get different seeds (just in case SystemRandom implementation is poor) 106 | mpi_rank, mpi_size = mpi_util.get_local_rank_size(MPI.COMM_WORLD) 107 | rand_seed = rand_seed - rand_seed % mpi_size + mpi_rank 108 | 109 | int_args = np.array([int(is_high_difficulty), Config.NUM_LEVELS, int(Config.PAINT_VEL_INFO), Config.USE_DATA_AUGMENTATION, game_versions[Config.GAME_TYPE], Config.SET_SEED, rand_seed]).astype(np.int32) 110 | 111 | lib.initialize_args(int_args) 112 | lib.initialize_set_monitor_dir(logger.get_dir().encode('utf-8'), {'off': 0, 'first_env': 1, 'all': 2}[monitor_csv_policy]) 113 | 114 | global already_inited 115 | if already_inited: 116 | return 117 | 118 | lib.init(cpu_count) 119 | already_inited = True 120 | 121 | @atexit.register 122 | def shutdown(): 123 | global already_inited 124 | if not already_inited: 125 | return 126 | lib.coinrun_shutdown() 127 | 128 | class CoinRunVecEnv(VecEnv): 129 | """ 130 | This is the CoinRun VecEnv, all CoinRun environments are just instances 131 | of this class with different values for `game_type` 132 | 133 | `game_type`: int game type corresponding to the game type to create, see `enum GameType` in `coinrun.cpp` 134 | `num_envs`: number of environments to create in this VecEnv 135 | `lump_n`: only used when the environment creates `monitor.csv` files 136 | `default_zoom`: controls how much of the level the agent can see 137 | """ 138 | def __init__(self, game_type, num_envs, lump_n=0, default_zoom=5.0): 139 | self.metadata = {'render.modes': []} 140 | self.reward_range = (-float('inf'), float('inf')) 141 | 142 | self.NUM_ACTIONS = lib.get_NUM_ACTIONS() 143 | self.RES_W = lib.get_RES_W() 144 | self.RES_H = lib.get_RES_H() 145 | self.VIDEORES = lib.get_VIDEORES() 146 | 147 | self.buf_rew = np.zeros([num_envs], dtype=np.float32) 148 | self.buf_done = np.zeros([num_envs], dtype=np.bool) 149 | self.buf_rgb = np.zeros([num_envs, self.RES_H, self.RES_W, 3], dtype=np.uint8) 150 | self.hires_render = Config.IS_HIGH_RES 151 | if self.hires_render: 152 | self.buf_render_rgb = np.zeros([num_envs, self.VIDEORES, self.VIDEORES, 3], dtype=np.uint8) 153 | else: 154 | self.buf_render_rgb = np.zeros([1, 1, 1, 1], dtype=np.uint8) 155 | 156 | num_channels = 1 if Config.USE_BLACK_WHITE else 3 157 | obs_space = gym.spaces.Box(0, 255, shape=[self.RES_H, self.RES_W, num_channels], dtype=np.uint8) 158 | 159 | super().__init__( 160 | num_envs=num_envs, 161 | observation_space=obs_space, 162 | action_space=gym.spaces.Discrete(self.NUM_ACTIONS), 163 | ) 164 | self.handle = lib.vec_create( 165 | game_versions[game_type], 166 | self.num_envs, 167 | lump_n, 168 | self.hires_render, 169 | default_zoom) 170 | self.dummy_info = [{} for _ in range(num_envs)] 171 | 172 | def __del__(self): 173 | if hasattr(self, 'handle'): 174 | lib.vec_close(self.handle) 175 | self.handle = 0 176 | 177 | def close(self): 178 | lib.vec_close(self.handle) 179 | self.handle = 0 180 | 181 | def reset(self): 182 | print("CoinRun ignores resets") 183 | obs, _, _, _ = self.step_wait() 184 | return obs 185 | 186 | def get_images(self): 187 | if self.hires_render: 188 | return self.buf_render_rgb 189 | else: 190 | return self.buf_rgb 191 | 192 | def step_async(self, actions): 193 | assert actions.dtype in [np.int32, np.int64] 194 | actions = actions.astype(np.int32) 195 | lib.vec_step_async_discrete(self.handle, actions) 196 | 197 | def step_wait(self): 198 | self.buf_rew = np.zeros_like(self.buf_rew) 199 | self.buf_done = np.zeros_like(self.buf_done) 200 | 201 | lib.vec_wait( 202 | self.handle, 203 | self.buf_rgb, 204 | self.buf_render_rgb, 205 | self.buf_rew, 206 | self.buf_done) 207 | 208 | obs_frames = self.buf_rgb 209 | 210 | if Config.USE_BLACK_WHITE: 211 | obs_frames = np.mean(obs_frames, axis=-1).astype(np.uint8)[...,None] 212 | 213 | return obs_frames, self.buf_rew, self.buf_done, self.dummy_info 214 | 215 | def make(env_id, num_envs, **kwargs): 216 | assert env_id in game_versions, 'cannot find environment "%s", maybe you mean one of %s' % (env_id, list(game_versions.keys())) 217 | return CoinRunVecEnv(env_id, num_envs, **kwargs) 218 | -------------------------------------------------------------------------------- /coinrun/config.py: -------------------------------------------------------------------------------- 1 | from mpi4py import MPI 2 | import argparse 3 | import os 4 | 5 | class ConfigSingle(object): 6 | """ 7 | A global config object that can be initialized from command line arguments or 8 | keyword arguments. 9 | """ 10 | def __init__(self): 11 | self.WORKDIR = './saved_models/' 12 | self.TB_DIR = '/tmp/tensorflow' 13 | if not os.path.exists(self.WORKDIR): 14 | os.makedirs(self.WORKDIR, exist_ok=True) 15 | 16 | self.LOG_ALL_MPI = True 17 | self.SYNC_FROM_ROOT = True 18 | 19 | arg_keys = [] 20 | bool_keys = [] 21 | type_keys = [] 22 | 23 | # The runid, used to determine the name for save files. 24 | type_keys.append(('runid', 'run_id', str, 'tmp')) 25 | 26 | # The runid whose parameters and settings you want to load. 27 | type_keys.append(('resid', 'restore_id', str, None)) 28 | 29 | # The game to be played. 30 | # One of {'standard', 'platform', 'maze'} (for CoinRun, CoinRun-Platforms, Random-Mazes) 31 | type_keys.append(('gamet', 'game_type', str, 'standard', True)) 32 | 33 | # The convolutional architecture to use 34 | # One of {'nature', 'impala', 'impalalarge'} 35 | type_keys.append(('arch', 'architecture', str, 'impala', True)) 36 | 37 | # Should the model include an LSTM 38 | type_keys.append(('lstm', 'use_lstm', int, 0, True)) 39 | 40 | # The number of parallel environments to run 41 | type_keys.append(('ne', 'num_envs', int, 32, True)) 42 | 43 | # The number of levels in the training set. 44 | # If NUM_LEVELS = 0, the training set is unbounded. All level seeds will be randomly generated. 45 | # Use SET_SEED = -1 and NUM_LEVELS = 500 to train with the same levels in the paper. 46 | type_keys.append(('nlev', 'num_levels', int, 0, True)) 47 | 48 | # Provided as a seed for training set generation. 49 | # If SET_SEED = -1, this seed is not used and level seeds with be drawn from the range [0, NUM_LEVELS). 50 | # Use SET_SEED = -1 and NUM_LEVELS = 500 to train with the same levels in the paper. 51 | # NOTE: This value must and will be saved, in order to use the same training set for evaluation and/or visualization. 52 | type_keys.append(('set-seed', 'set_seed', int, -1, True)) 53 | 54 | # PPO Hyperparameters 55 | type_keys.append(('ns', 'num_steps', int, 256)) 56 | type_keys.append(('nmb', 'num_minibatches', int, 8)) 57 | type_keys.append(('ppoeps', 'ppo_epochs', int, 3)) 58 | type_keys.append(('ent', 'entropy_coeff', float, .01)) 59 | type_keys.append(('lr', 'learning_rate', float, 5e-4)) 60 | type_keys.append(('gamma', 'gamma', float, 0.999)) 61 | 62 | # Should the agent's velocity be painted in the upper left corner of observations. 63 | # 1/0 means True/False 64 | # PAINT_VEL_INFO = -1 uses smart defaulting -- will default to 1 if GAME_TYPE is 'standard' (CoinRun), 0 otherwise 65 | type_keys.append(('pvi', 'paint_vel_info', int, -1, True)) 66 | 67 | # Should batch normalization be used after each convolutional layer 68 | # 1/0 means True/False 69 | # This code only supports training-mode batch normalization (normalizing with statistics of the current batch). 70 | # In practice, we found this is nearly as effective as tracking the moving average of the statistics. 71 | # NOTE: Only applies to IMPALA and IMPALA-Large architectures 72 | type_keys.append(('norm', 'use_batch_norm', int, 0, True)) 73 | 74 | # What dropout probability to use after each convolutional layer 75 | # NOTE: Only applies to IMPALA and IMPALA-Large architectures 76 | type_keys.append(('dropout', 'dropout', float, 0.0, True)) 77 | 78 | # Should data augmentation be used 79 | # 1/0 means True/False 80 | type_keys.append(('uda', 'use_data_augmentation', int, 0)) 81 | 82 | # The l2 penalty to use during training 83 | type_keys.append(('l2', 'l2_weight', float, 0.0)) 84 | 85 | # The probability the agent's action is replaced with a random action 86 | type_keys.append(('eps', 'epsilon_greedy', float, 0.0)) 87 | 88 | # The number of frames to stack for each observation. 89 | # No frame stack is necessary if PAINT_VEL_INFO = 1 90 | type_keys.append(('fs', 'frame_stack', int, 1, True)) 91 | 92 | # Should observations be transformed to grayscale 93 | # 1/0 means True/False 94 | type_keys.append(('ubw', 'use_black_white', int, 0, True)) 95 | 96 | # Overwrite the latest save file after this many updates 97 | type_keys.append(('si', 'save_interval', int, 10)) 98 | 99 | # The number of evaluation environments to use 100 | type_keys.append(('num-eval', 'num_eval', int, 20, True)) 101 | 102 | # The number of episodes to evaluate with each evaluation environment 103 | type_keys.append(('rep', 'rep', int, 1)) 104 | 105 | # Should half the workers act solely has test workers for evaluation 106 | # These workers will run on test levels and not contributing to training 107 | bool_keys.append(('test', 'test')) 108 | 109 | # Perform evaluation with all levels sampled from the training set 110 | bool_keys.append(('train-eval', 'train_eval')) 111 | 112 | # Perform evaluation with all levels sampled from the test set (unseen levels of high difficulty) 113 | bool_keys.append(('test-eval', 'test_eval')) 114 | 115 | # Only generate high difficulty levels 116 | bool_keys.append(('highd', 'high_difficulty')) 117 | 118 | # Use high resolution images for rendering 119 | bool_keys.append(('hres', 'is_high_res')) 120 | 121 | self.RES_KEYS = [] 122 | 123 | for tk in type_keys: 124 | arg_keys.append(self.process_field(tk[1])) 125 | 126 | if (len(tk) > 4) and tk[4]: 127 | self.RES_KEYS.append(tk[1]) 128 | 129 | for bk in bool_keys: 130 | arg_keys.append(bk[1]) 131 | 132 | if (len(bk) > 2) and bk[2]: 133 | self.RES_KEYS.append(bk[1]) 134 | 135 | self.arg_keys = arg_keys 136 | self.bool_keys = bool_keys 137 | self.type_keys = type_keys 138 | 139 | self.load_data = {} 140 | self.args_dict = {} 141 | 142 | def is_test_rank(self): 143 | if self.TEST: 144 | rank = MPI.COMM_WORLD.Get_rank() 145 | return rank % 2 == 1 146 | 147 | return False 148 | 149 | def get_test_frac(self): 150 | return .5 if self.TEST else 0 151 | 152 | def get_load_data(self, load_key='default'): 153 | if not load_key in self.load_data: 154 | return None 155 | 156 | return self.load_data[load_key] 157 | 158 | def set_load_data(self, ld, load_key='default'): 159 | self.load_data[load_key] = ld 160 | 161 | def process_field(self, name): 162 | return name.replace('-','_') 163 | 164 | def deprocess_field(self, name): 165 | return name.replace('_','-') 166 | 167 | def parse_all_args(self, args): 168 | assert isinstance(args, argparse.Namespace), 'expected argparse.Namespace object' 169 | update_dict = vars(args) 170 | self.parse_args_dict(update_dict) 171 | 172 | def parse_args_dict(self, update_dict): 173 | self.args_dict.update(update_dict) 174 | 175 | for ak in self.args_dict: 176 | val = self.args_dict[ak] 177 | 178 | if isinstance(val, str): 179 | val = self.process_field(val) 180 | 181 | setattr(self, ak.upper(), val) 182 | 183 | self.compute_args_dependencies() 184 | 185 | def compute_args_dependencies(self): 186 | if self.is_test_rank(): 187 | self.NUM_LEVELS = 0 188 | self.USE_DATA_AUGMENTATION = 0 189 | self.EPSILON_GREEDY = 0 190 | self.HIGH_DIFFICULTY = 1 191 | 192 | if self.PAINT_VEL_INFO < 0: 193 | if self.GAME_TYPE == 'standard': 194 | self.PAINT_VEL_INFO = 1 195 | else: 196 | self.PAINT_VEL_INFO = 0 197 | 198 | if self.TEST_EVAL: 199 | self.NUM_LEVELS = 0 200 | self.HIGH_DIFFICULTY = 1 201 | 202 | self.TRAIN_TEST_COMM = MPI.COMM_WORLD.Split(1 if self.is_test_rank() else 0, 0) 203 | 204 | def get_load_filename(self, base_name=None, restore_id=None): 205 | if restore_id is None: 206 | restore_id = Config.RESTORE_ID 207 | 208 | if restore_id is None: 209 | return None 210 | 211 | filename = Config.get_save_file_for_rank(0, self.process_field(restore_id), base_name=base_name) 212 | 213 | return filename 214 | 215 | def get_save_path(self, runid=None): 216 | return self.WORKDIR + self.get_save_file(runid) 217 | 218 | def get_save_file_for_rank(self, rank, runid=None, base_name=None): 219 | if runid is None: 220 | runid = self.RUN_ID 221 | 222 | extra = '' 223 | 224 | if base_name is not None: 225 | extra = '_' + base_name 226 | 227 | return 'sav_' + runid + extra + '_' + str(rank) 228 | 229 | def get_save_file(self, runid=None, base_name=None): 230 | comm = MPI.COMM_WORLD 231 | rank = comm.Get_rank() 232 | 233 | return self.get_save_file_for_rank(rank, runid, base_name=base_name) 234 | 235 | def get_arg_text(self): 236 | arg_strs = [] 237 | 238 | for key in self.args_dict: 239 | arg_strs.append(key + '=' + str(self.args_dict[key])) 240 | 241 | return arg_strs 242 | 243 | def get_args_dict(self): 244 | _args_dict = {} 245 | _args_dict.update(self.args_dict) 246 | 247 | return _args_dict 248 | 249 | def initialize_args(self, use_cmd_line_args=True, **kwargs): 250 | default_args = {} 251 | 252 | for tk in self.type_keys: 253 | default_args[self.process_field(tk[1])] = tk[3] 254 | 255 | for bk in self.bool_keys: 256 | default_args[bk[1]] = False 257 | 258 | default_args.update(kwargs) 259 | 260 | parser = argparse.ArgumentParser() 261 | 262 | for tk in self.type_keys: 263 | parser.add_argument('-' + tk[0], '--' + self.deprocess_field(tk[1]), type=tk[2], default=default_args[tk[1]]) 264 | 265 | for bk in self.bool_keys: 266 | parser.add_argument('--' + bk[0], dest=bk[1], action='store_true') 267 | bk_kwargs = {bk[1]: default_args[bk[1]]} 268 | parser.set_defaults(**bk_kwargs) 269 | 270 | if use_cmd_line_args: 271 | args = parser.parse_args() 272 | else: 273 | args = parser.parse_args(args=[]) 274 | 275 | self.parse_all_args(args) 276 | 277 | return args 278 | 279 | Config = ConfigSingle() 280 | -------------------------------------------------------------------------------- /coinrun/enjoy.py: -------------------------------------------------------------------------------- 1 | """ 2 | Load an agent trained with train_agent.py and 3 | """ 4 | 5 | import time 6 | 7 | import tensorflow as tf 8 | import numpy as np 9 | from coinrun import setup_utils 10 | import coinrun.main_utils as utils 11 | from coinrun.config import Config 12 | from coinrun import policies, wrappers 13 | 14 | mpi_print = utils.mpi_print 15 | 16 | def create_act_model(sess, env, nenvs): 17 | ob_space = env.observation_space 18 | ac_space = env.action_space 19 | 20 | policy = policies.get_policy() 21 | act = policy(sess, ob_space, ac_space, nenvs, 1, reuse=False) 22 | 23 | return act 24 | 25 | def enjoy_env_sess(sess): 26 | should_render = True 27 | should_eval = Config.TRAIN_EVAL or Config.TEST_EVAL 28 | rep_count = Config.REP 29 | 30 | if should_eval: 31 | env = utils.make_general_env(Config.NUM_EVAL) 32 | should_render = False 33 | else: 34 | env = utils.make_general_env(1) 35 | 36 | env = wrappers.add_final_wrappers(env) 37 | 38 | if should_render: 39 | from gym.envs.classic_control import rendering 40 | 41 | nenvs = env.num_envs 42 | 43 | agent = create_act_model(sess, env, nenvs) 44 | 45 | sess.run(tf.global_variables_initializer()) 46 | loaded_params = utils.load_params_for_scope(sess, 'model') 47 | 48 | if not loaded_params: 49 | print('NO SAVED PARAMS LOADED') 50 | 51 | obs = env.reset() 52 | t_step = 0 53 | 54 | if should_render: 55 | viewer = rendering.SimpleImageViewer() 56 | 57 | should_render_obs = not Config.IS_HIGH_RES 58 | 59 | def maybe_render(info=None): 60 | if should_render and not should_render_obs: 61 | env.render() 62 | 63 | maybe_render() 64 | 65 | scores = np.array([0] * nenvs) 66 | score_counts = np.array([0] * nenvs) 67 | curr_rews = np.zeros((nenvs, 3)) 68 | 69 | def should_continue(): 70 | if should_eval: 71 | return np.sum(score_counts) < rep_count * nenvs 72 | 73 | return True 74 | 75 | state = agent.initial_state 76 | done = np.zeros(nenvs) 77 | 78 | while should_continue(): 79 | action, values, state, _ = agent.step(obs, state, done) 80 | obs, rew, done, info = env.step(action) 81 | 82 | if should_render and should_render_obs: 83 | if np.shape(obs)[-1] % 3 == 0: 84 | ob_frame = obs[0,:,:,-3:] 85 | else: 86 | ob_frame = obs[0,:,:,-1] 87 | ob_frame = np.stack([ob_frame] * 3, axis=2) 88 | viewer.imshow(ob_frame) 89 | 90 | curr_rews[:,0] += rew 91 | 92 | for i, d in enumerate(done): 93 | if d: 94 | if score_counts[i] < rep_count: 95 | score_counts[i] += 1 96 | 97 | if 'episode' in info[i]: 98 | scores[i] += info[i].get('episode')['r'] 99 | 100 | if t_step % 100 == 0: 101 | mpi_print('t', t_step, values[0], done[0], rew[0], curr_rews[0], np.shape(obs)) 102 | 103 | maybe_render(info[0]) 104 | 105 | t_step += 1 106 | 107 | if should_render: 108 | time.sleep(.02) 109 | 110 | if done[0]: 111 | if should_render: 112 | mpi_print('ep_rew', curr_rews) 113 | 114 | curr_rews[:] = 0 115 | 116 | result = 0 117 | 118 | if should_eval: 119 | mean_score = np.mean(scores) / rep_count 120 | max_idx = np.argmax(scores) 121 | mpi_print('scores', scores / rep_count) 122 | print('mean_score', mean_score) 123 | mpi_print('max idx', max_idx) 124 | 125 | mpi_mean_score = utils.mpi_average([mean_score]) 126 | mpi_print('mpi_mean', mpi_mean_score) 127 | 128 | result = mean_score 129 | 130 | return result 131 | 132 | def main(): 133 | utils.setup_mpi_gpus() 134 | setup_utils.setup_and_load() 135 | with tf.Session() as sess: 136 | enjoy_env_sess(sess) 137 | 138 | if __name__ == '__main__': 139 | main() -------------------------------------------------------------------------------- /coinrun/interactive.py: -------------------------------------------------------------------------------- 1 | """ 2 | Run a CoinRun environment in a window where you can interact with it using the keyboard 3 | """ 4 | 5 | from coinrun.coinrunenv import lib 6 | from coinrun import setup_utils 7 | 8 | 9 | def main(): 10 | setup_utils.setup_and_load(paint_vel_info=0) 11 | print("""Control with arrow keys, 12 | F1, F2 -- switch resolution, 13 | F5, F6, F7, F8 -- zoom, 14 | F9 -- switch reconstruction target picture, 15 | F10 -- switch lasers 16 | """) 17 | lib.test_main_loop() 18 | 19 | 20 | if __name__ == '__main__': 21 | main() -------------------------------------------------------------------------------- /coinrun/main_utils.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | import os 3 | import joblib 4 | import numpy as np 5 | 6 | from mpi4py import MPI 7 | 8 | from baselines.common.vec_env.vec_frame_stack import VecFrameStack 9 | from coinrun.config import Config 10 | from coinrun import setup_utils, wrappers 11 | 12 | import platform 13 | 14 | def make_general_env(num_env, seed=0, use_sub_proc=True): 15 | from coinrun import coinrunenv 16 | 17 | env = coinrunenv.make(Config.GAME_TYPE, num_env) 18 | 19 | if Config.FRAME_STACK > 1: 20 | env = VecFrameStack(env, Config.FRAME_STACK) 21 | 22 | epsilon = Config.EPSILON_GREEDY 23 | 24 | if epsilon > 0: 25 | env = wrappers.EpsilonGreedyWrapper(env, epsilon) 26 | 27 | return env 28 | 29 | def file_to_path(filename): 30 | return setup_utils.file_to_path(filename) 31 | 32 | def load_all_params(sess): 33 | load_params_for_scope(sess, 'model') 34 | 35 | def load_params_for_scope(sess, scope, load_key='default'): 36 | load_data = Config.get_load_data(load_key) 37 | if load_data is None: 38 | return False 39 | 40 | params_dict = load_data['params'] 41 | 42 | if scope in params_dict: 43 | print('Loading saved file for scope', scope) 44 | 45 | loaded_params = params_dict[scope] 46 | 47 | loaded_params, params = get_savable_params(loaded_params, scope, keep_heads=True) 48 | 49 | restore_params(sess, loaded_params, params) 50 | 51 | return True 52 | 53 | def get_savable_params(loaded_params, scope, keep_heads=False): 54 | params = tf.trainable_variables(scope) 55 | filtered_params = [] 56 | filtered_loaded = [] 57 | 58 | if len(loaded_params) != len(params): 59 | print('param mismatch', len(loaded_params), len(params)) 60 | assert(False) 61 | 62 | for p, loaded_p in zip(params, loaded_params): 63 | keep = True 64 | 65 | if any((scope + '/' + x) in p.name for x in ['v','pi']): 66 | keep = keep_heads 67 | 68 | if keep: 69 | filtered_params.append(p) 70 | filtered_loaded.append(loaded_p) 71 | else: 72 | print('drop', p) 73 | 74 | 75 | return filtered_loaded, filtered_params 76 | 77 | def restore_params(sess, loaded_params, params): 78 | if len(loaded_params) != len(params): 79 | print('param mismatch', len(loaded_params), len(params)) 80 | assert(False) 81 | 82 | restores = [] 83 | for p, loaded_p in zip(params, loaded_params): 84 | print('restoring', p) 85 | restores.append(p.assign(loaded_p)) 86 | sess.run(restores) 87 | 88 | def save_params_in_scopes(sess, scopes, filename, base_dict=None): 89 | data_dict = {} 90 | 91 | if base_dict is not None: 92 | data_dict.update(base_dict) 93 | 94 | save_path = file_to_path(filename) 95 | 96 | data_dict['args'] = Config.get_args_dict() 97 | param_dict = {} 98 | 99 | for scope in scopes: 100 | params = tf.trainable_variables(scope) 101 | 102 | if len(params) > 0: 103 | print('saving scope', scope, filename) 104 | ps = sess.run(params) 105 | 106 | param_dict[scope] = ps 107 | 108 | data_dict['params'] = param_dict 109 | joblib.dump(data_dict, save_path) 110 | 111 | def setup_mpi_gpus(): 112 | if 'RCALL_NUM_GPU' not in os.environ: 113 | return 114 | num_gpus = int(os.environ['RCALL_NUM_GPU']) 115 | node_id = platform.node() 116 | nodes = MPI.COMM_WORLD.allgather(node_id) 117 | local_rank = len([n for n in nodes[:MPI.COMM_WORLD.Get_rank()] if n == node_id]) 118 | os.environ['CUDA_VISIBLE_DEVICES'] = str(local_rank % num_gpus) 119 | 120 | def is_mpi_root(): 121 | return MPI.COMM_WORLD.Get_rank() == 0 122 | 123 | def tf_initialize(sess): 124 | sess.run(tf.initialize_all_variables()) 125 | sync_from_root(sess) 126 | 127 | def sync_from_root(sess, vars=None): 128 | if vars is None: 129 | vars = tf.trainable_variables() 130 | 131 | if Config.SYNC_FROM_ROOT: 132 | rank = MPI.COMM_WORLD.Get_rank() 133 | print('sync from root', rank) 134 | for var in vars: 135 | if rank == 0: 136 | MPI.COMM_WORLD.bcast(sess.run(var)) 137 | else: 138 | sess.run(tf.assign(var, MPI.COMM_WORLD.bcast(None))) 139 | 140 | def mpi_average(values): 141 | return mpi_average_comm(values, MPI.COMM_WORLD) 142 | 143 | def mpi_average_comm(values, comm): 144 | size = comm.size 145 | 146 | x = np.array(values) 147 | buf = np.zeros_like(x) 148 | comm.Allreduce(x, buf, op=MPI.SUM) 149 | buf = buf / size 150 | 151 | return buf 152 | 153 | def mpi_average_train_test(values): 154 | return mpi_average_comm(values, Config.TRAIN_TEST_COMM) 155 | 156 | def mpi_print(*args): 157 | rank = MPI.COMM_WORLD.Get_rank() 158 | 159 | if rank == 0: 160 | print(*args) 161 | 162 | def process_ep_buf(epinfobuf, tb_writer=None, suffix='', step=0): 163 | rewards = [epinfo['r'] for epinfo in epinfobuf] 164 | rew_mean = np.nanmean(rewards) 165 | 166 | if Config.SYNC_FROM_ROOT: 167 | rew_mean = mpi_average_train_test([rew_mean])[0] 168 | 169 | if tb_writer is not None: 170 | tb_writer.log_scalar(rew_mean, 'rew_mean' + suffix, step) 171 | 172 | aux_dicts = [] 173 | 174 | if len(epinfobuf) > 0 and 'aux_dict' in epinfobuf[0]: 175 | aux_dicts = [epinfo['aux_dict'] for epinfo in epinfobuf] 176 | 177 | if len(aux_dicts) > 0: 178 | keys = aux_dicts[0].keys() 179 | 180 | for key in keys: 181 | sub_rews = [aux_dict[key] for aux_dict in aux_dicts] 182 | sub_rew = np.nanmean(sub_rews) 183 | 184 | if tb_writer is not None: 185 | tb_writer.log_scalar(sub_rew, key, step) 186 | 187 | return rew_mean 188 | -------------------------------------------------------------------------------- /coinrun/policies.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import tensorflow as tf 3 | from baselines.a2c.utils import conv, fc, conv_to_fc, batch_to_seq, seq_to_batch, lstm 4 | from baselines.common.distributions import make_pdtype 5 | from baselines.common.input import observation_input 6 | 7 | from coinrun.config import Config 8 | 9 | def impala_cnn(images, depths=[16, 32, 32]): 10 | """ 11 | Model used in the paper "IMPALA: Scalable Distributed Deep-RL with 12 | Importance Weighted Actor-Learner Architectures" https://arxiv.org/abs/1802.01561 13 | """ 14 | use_batch_norm = Config.USE_BATCH_NORM == 1 15 | 16 | dropout_layer_num = [0] 17 | dropout_assign_ops = [] 18 | 19 | def dropout_layer(out): 20 | if Config.DROPOUT > 0: 21 | out_shape = out.get_shape().as_list() 22 | num_features = np.prod(out_shape[1:]) 23 | 24 | var_name = 'mask_' + str(dropout_layer_num[0]) 25 | batch_seed_shape = out_shape[1:] 26 | batch_seed = tf.get_variable(var_name, shape=batch_seed_shape, initializer=tf.random_uniform_initializer(minval=0, maxval=1), trainable=False) 27 | batch_seed_assign = tf.assign(batch_seed, tf.random_uniform(batch_seed_shape, minval=0, maxval=1)) 28 | dropout_assign_ops.append(batch_seed_assign) 29 | 30 | curr_mask = tf.sign(tf.nn.relu(batch_seed[None,...] - Config.DROPOUT)) 31 | 32 | curr_mask = curr_mask * (1.0 / (1.0 - Config.DROPOUT)) 33 | 34 | out = out * curr_mask 35 | 36 | dropout_layer_num[0] += 1 37 | 38 | return out 39 | 40 | def conv_layer(out, depth): 41 | out = tf.layers.conv2d(out, depth, 3, padding='same') 42 | out = dropout_layer(out) 43 | 44 | if use_batch_norm: 45 | out = tf.contrib.layers.batch_norm(out, center=True, scale=True, is_training=True) 46 | 47 | return out 48 | 49 | def residual_block(inputs): 50 | depth = inputs.get_shape()[-1].value 51 | 52 | out = tf.nn.relu(inputs) 53 | 54 | out = conv_layer(out, depth) 55 | out = tf.nn.relu(out) 56 | out = conv_layer(out, depth) 57 | return out + inputs 58 | 59 | def conv_sequence(inputs, depth): 60 | out = conv_layer(inputs, depth) 61 | out = tf.layers.max_pooling2d(out, pool_size=3, strides=2, padding='same') 62 | out = residual_block(out) 63 | out = residual_block(out) 64 | return out 65 | 66 | out = images 67 | for depth in depths: 68 | out = conv_sequence(out, depth) 69 | 70 | out = tf.layers.flatten(out) 71 | out = tf.nn.relu(out) 72 | out = tf.layers.dense(out, 256, activation=tf.nn.relu) 73 | 74 | return out, dropout_assign_ops 75 | 76 | def nature_cnn(scaled_images, **conv_kwargs): 77 | """ 78 | Model used in the paper "Human-level control through deep reinforcement learning" 79 | https://www.nature.com/articles/nature14236 80 | """ 81 | 82 | def activ(curr): 83 | return tf.nn.relu(curr) 84 | 85 | h = activ(conv(scaled_images, 'c1', nf=32, rf=8, stride=4, init_scale=np.sqrt(2), 86 | **conv_kwargs)) 87 | h2 = activ(conv(h, 'c2', nf=64, rf=4, stride=2, init_scale=np.sqrt(2), **conv_kwargs)) 88 | h3 = activ(conv(h2, 'c3', nf=64, rf=3, stride=1, init_scale=np.sqrt(2), **conv_kwargs)) 89 | h3 = conv_to_fc(h3) 90 | return activ(fc(h3, 'fc1', nh=512, init_scale=np.sqrt(2))) 91 | 92 | def choose_cnn(images): 93 | arch = Config.ARCHITECTURE 94 | scaled_images = tf.cast(images, tf.float32) / 255. 95 | dropout_assign_ops = [] 96 | 97 | if arch == 'nature': 98 | out = nature_cnn(scaled_images) 99 | elif arch == 'impala': 100 | out, dropout_assign_ops = impala_cnn(scaled_images) 101 | elif arch == 'impalalarge': 102 | out, dropout_assign_ops = impala_cnn(scaled_images, depths=[32, 64, 64, 64, 64]) 103 | else: 104 | assert(False) 105 | 106 | return out, dropout_assign_ops 107 | 108 | class LstmPolicy(object): 109 | 110 | def __init__(self, sess, ob_space, ac_space, nbatch, nsteps, nlstm=256): 111 | nenv = nbatch // nsteps 112 | self.pdtype = make_pdtype(ac_space) 113 | X, processed_x = observation_input(ob_space, nbatch) 114 | 115 | M = tf.placeholder(tf.float32, [nbatch]) #mask (done t-1) 116 | S = tf.placeholder(tf.float32, [nenv, nlstm*2]) #states 117 | with tf.variable_scope("model", reuse=tf.AUTO_REUSE): 118 | h, self.dropout_assign_ops = choose_cnn(processed_x) 119 | xs = batch_to_seq(h, nenv, nsteps) 120 | ms = batch_to_seq(M, nenv, nsteps) 121 | h5, snew = lstm(xs, ms, S, 'lstm1', nh=nlstm) 122 | h5 = seq_to_batch(h5) 123 | vf = fc(h5, 'v', 1)[:,0] 124 | self.pd, self.pi = self.pdtype.pdfromlatent(h5) 125 | 126 | a0 = self.pd.sample() 127 | neglogp0 = self.pd.neglogp(a0) 128 | self.initial_state = np.zeros((nenv, nlstm*2), dtype=np.float32) 129 | 130 | def step(ob, state, mask): 131 | return sess.run([a0, vf, snew, neglogp0], {X:ob, S:state, M:mask}) 132 | 133 | def value(ob, state, mask): 134 | return sess.run(vf, {X:ob, S:state, M:mask}) 135 | 136 | self.X = X 137 | self.M = M 138 | self.S = S 139 | self.vf = vf 140 | self.step = step 141 | self.value = value 142 | 143 | class CnnPolicy(object): 144 | def __init__(self, sess, ob_space, ac_space, nbatch, nsteps, **conv_kwargs): #pylint: disable=W0613 145 | self.pdtype = make_pdtype(ac_space) 146 | X, processed_x = observation_input(ob_space, nbatch) 147 | 148 | with tf.variable_scope("model", reuse=tf.AUTO_REUSE): 149 | h, self.dropout_assign_ops = choose_cnn(processed_x) 150 | vf = fc(h, 'v', 1)[:,0] 151 | self.pd, self.pi = self.pdtype.pdfromlatent(h, init_scale=0.01) 152 | 153 | a0 = self.pd.sample() 154 | neglogp0 = self.pd.neglogp(a0) 155 | self.initial_state = None 156 | 157 | def step(ob, *_args, **_kwargs): 158 | a, v, neglogp = sess.run([a0, vf, neglogp0], {X:ob}) 159 | return a, v, self.initial_state, neglogp 160 | 161 | def value(ob, *_args, **_kwargs): 162 | return sess.run(vf, {X:ob}) 163 | 164 | self.X = X 165 | self.vf = vf 166 | self.step = step 167 | self.value = value 168 | 169 | 170 | def get_policy(): 171 | use_lstm = Config.USE_LSTM 172 | 173 | if use_lstm == 1: 174 | policy = LstmPolicy 175 | elif use_lstm == 0: 176 | policy = CnnPolicy 177 | else: 178 | assert(False) 179 | 180 | return policy 181 | -------------------------------------------------------------------------------- /coinrun/ppo2.py: -------------------------------------------------------------------------------- 1 | """ 2 | This is a copy of PPO from openai/baselines (https://github.com/openai/baselines/blob/52255beda5f5c8760b0ae1f676aa656bb1a61f80/baselines/ppo2/ppo2.py) with some minor changes. 3 | """ 4 | 5 | import time 6 | import joblib 7 | import numpy as np 8 | import tensorflow as tf 9 | from collections import deque 10 | 11 | from mpi4py import MPI 12 | 13 | from coinrun.tb_utils import TB_Writer 14 | import coinrun.main_utils as utils 15 | 16 | from coinrun.config import Config 17 | 18 | mpi_print = utils.mpi_print 19 | 20 | from baselines.common.runners import AbstractEnvRunner 21 | from baselines.common.tf_util import initialize 22 | from baselines.common.mpi_util import sync_from_root 23 | 24 | class MpiAdamOptimizer(tf.train.AdamOptimizer): 25 | """Adam optimizer that averages gradients across mpi processes.""" 26 | def __init__(self, comm, **kwargs): 27 | self.comm = comm 28 | self.train_frac = 1.0 - Config.get_test_frac() 29 | tf.train.AdamOptimizer.__init__(self, **kwargs) 30 | def compute_gradients(self, loss, var_list, **kwargs): 31 | grads_and_vars = tf.train.AdamOptimizer.compute_gradients(self, loss, var_list, **kwargs) 32 | grads_and_vars = [(g, v) for g, v in grads_and_vars if g is not None] 33 | 34 | flat_grad = tf.concat([tf.reshape(g, (-1,)) for g, v in grads_and_vars], axis=0) 35 | 36 | if Config.is_test_rank(): 37 | flat_grad = tf.zeros_like(flat_grad) 38 | 39 | shapes = [v.shape.as_list() for g, v in grads_and_vars] 40 | sizes = [int(np.prod(s)) for s in shapes] 41 | 42 | num_tasks = self.comm.Get_size() 43 | buf = np.zeros(sum(sizes), np.float32) 44 | 45 | def _collect_grads(flat_grad): 46 | self.comm.Allreduce(flat_grad, buf, op=MPI.SUM) 47 | np.divide(buf, float(num_tasks) * self.train_frac, out=buf) 48 | return buf 49 | 50 | avg_flat_grad = tf.py_func(_collect_grads, [flat_grad], tf.float32) 51 | avg_flat_grad.set_shape(flat_grad.shape) 52 | avg_grads = tf.split(avg_flat_grad, sizes, axis=0) 53 | avg_grads_and_vars = [(tf.reshape(g, v.shape), v) 54 | for g, (_, v) in zip(avg_grads, grads_and_vars)] 55 | 56 | return avg_grads_and_vars 57 | 58 | class Model(object): 59 | def __init__(self, *, policy, ob_space, ac_space, nbatch_act, nbatch_train, 60 | nsteps, ent_coef, vf_coef, max_grad_norm): 61 | sess = tf.get_default_session() 62 | 63 | train_model = policy(sess, ob_space, ac_space, nbatch_train, nsteps) 64 | norm_update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS) 65 | act_model = policy(sess, ob_space, ac_space, nbatch_act, 1) 66 | 67 | A = train_model.pdtype.sample_placeholder([None]) 68 | ADV = tf.placeholder(tf.float32, [None]) 69 | R = tf.placeholder(tf.float32, [None]) 70 | OLDNEGLOGPAC = tf.placeholder(tf.float32, [None]) 71 | OLDVPRED = tf.placeholder(tf.float32, [None]) 72 | LR = tf.placeholder(tf.float32, []) 73 | CLIPRANGE = tf.placeholder(tf.float32, []) 74 | 75 | neglogpac = train_model.pd.neglogp(A) 76 | entropy = tf.reduce_mean(train_model.pd.entropy()) 77 | 78 | vpred = train_model.vf 79 | vpredclipped = OLDVPRED + tf.clip_by_value(train_model.vf - OLDVPRED, - CLIPRANGE, CLIPRANGE) 80 | vf_losses1 = tf.square(vpred - R) 81 | vf_losses2 = tf.square(vpredclipped - R) 82 | vf_loss = .5 * tf.reduce_mean(tf.maximum(vf_losses1, vf_losses2)) 83 | ratio = tf.exp(OLDNEGLOGPAC - neglogpac) 84 | pg_losses = -ADV * ratio 85 | pg_losses2 = -ADV * tf.clip_by_value(ratio, 1.0 - CLIPRANGE, 1.0 + CLIPRANGE) 86 | pg_loss = tf.reduce_mean(tf.maximum(pg_losses, pg_losses2)) 87 | approxkl = .5 * tf.reduce_mean(tf.square(neglogpac - OLDNEGLOGPAC)) 88 | clipfrac = tf.reduce_mean(tf.to_float(tf.greater(tf.abs(ratio - 1.0), CLIPRANGE))) 89 | 90 | params = tf.trainable_variables() 91 | weight_params = [v for v in params if '/b' not in v.name] 92 | 93 | total_num_params = 0 94 | 95 | for p in params: 96 | shape = p.get_shape().as_list() 97 | num_params = np.prod(shape) 98 | mpi_print('param', p, num_params) 99 | total_num_params += num_params 100 | 101 | mpi_print('total num params:', total_num_params) 102 | 103 | l2_loss = tf.reduce_sum([tf.nn.l2_loss(v) for v in weight_params]) 104 | 105 | loss = pg_loss - entropy * ent_coef + vf_loss * vf_coef + l2_loss * Config.L2_WEIGHT 106 | 107 | if Config.SYNC_FROM_ROOT: 108 | trainer = MpiAdamOptimizer(MPI.COMM_WORLD, learning_rate=LR, epsilon=1e-5) 109 | else: 110 | trainer = tf.train.AdamOptimizer(learning_rate=LR, epsilon=1e-5) 111 | 112 | grads_and_var = trainer.compute_gradients(loss, params) 113 | 114 | grads, var = zip(*grads_and_var) 115 | if max_grad_norm is not None: 116 | grads, _grad_norm = tf.clip_by_global_norm(grads, max_grad_norm) 117 | grads_and_var = list(zip(grads, var)) 118 | 119 | _train = trainer.apply_gradients(grads_and_var) 120 | 121 | def train(lr, cliprange, obs, returns, masks, actions, values, neglogpacs, states=None): 122 | advs = returns - values 123 | 124 | adv_mean = np.mean(advs, axis=0, keepdims=True) 125 | adv_std = np.std(advs, axis=0, keepdims=True) 126 | advs = (advs - adv_mean) / (adv_std + 1e-8) 127 | 128 | td_map = {train_model.X:obs, A:actions, ADV:advs, R:returns, LR:lr, 129 | CLIPRANGE:cliprange, OLDNEGLOGPAC:neglogpacs, OLDVPRED:values} 130 | if states is not None: 131 | td_map[train_model.S] = states 132 | td_map[train_model.M] = masks 133 | return sess.run( 134 | [pg_loss, vf_loss, entropy, approxkl, clipfrac, l2_loss, _train], 135 | td_map 136 | )[:-1] 137 | self.loss_names = ['policy_loss', 'value_loss', 'policy_entropy', 'approxkl', 'clipfrac', 'l2_loss'] 138 | 139 | def save(save_path): 140 | ps = sess.run(params) 141 | joblib.dump(ps, save_path) 142 | 143 | def load(load_path): 144 | loaded_params = joblib.load(load_path) 145 | restores = [] 146 | for p, loaded_p in zip(params, loaded_params): 147 | restores.append(p.assign(loaded_p)) 148 | sess.run(restores) 149 | 150 | self.train = train 151 | self.train_model = train_model 152 | self.act_model = act_model 153 | self.step = act_model.step 154 | self.value = act_model.value 155 | self.initial_state = act_model.initial_state 156 | self.save = save 157 | self.load = load 158 | 159 | if Config.SYNC_FROM_ROOT: 160 | if MPI.COMM_WORLD.Get_rank() == 0: 161 | initialize() 162 | 163 | global_variables = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope="") 164 | sync_from_root(sess, global_variables) #pylint: disable=E1101 165 | else: 166 | initialize() 167 | 168 | class Runner(AbstractEnvRunner): 169 | def __init__(self, *, env, model, nsteps, gamma, lam): 170 | super().__init__(env=env, model=model, nsteps=nsteps) 171 | self.lam = lam 172 | self.gamma = gamma 173 | 174 | def run(self): 175 | # Here, we init the lists that will contain the mb of experiences 176 | mb_obs, mb_rewards, mb_actions, mb_values, mb_dones, mb_neglogpacs = [],[],[],[],[],[] 177 | mb_states = self.states 178 | epinfos = [] 179 | # For n in range number of steps 180 | for _ in range(self.nsteps): 181 | # Given observations, get action value and neglopacs 182 | # We already have self.obs because Runner superclass run self.obs[:] = env.reset() on init 183 | actions, values, self.states, neglogpacs = self.model.step(self.obs, self.states, self.dones) 184 | mb_obs.append(self.obs.copy()) 185 | mb_actions.append(actions) 186 | mb_values.append(values) 187 | mb_neglogpacs.append(neglogpacs) 188 | mb_dones.append(self.dones) 189 | 190 | # Take actions in env and look the results 191 | # Infos contains a ton of useful informations 192 | self.obs[:], rewards, self.dones, infos = self.env.step(actions) 193 | for info in infos: 194 | maybeepinfo = info.get('episode') 195 | if maybeepinfo: epinfos.append(maybeepinfo) 196 | mb_rewards.append(rewards) 197 | #batch of steps to batch of rollouts 198 | mb_obs = np.asarray(mb_obs, dtype=self.obs.dtype) 199 | mb_rewards = np.asarray(mb_rewards, dtype=np.float32) 200 | mb_actions = np.asarray(mb_actions) 201 | mb_values = np.asarray(mb_values, dtype=np.float32) 202 | mb_neglogpacs = np.asarray(mb_neglogpacs, dtype=np.float32) 203 | mb_dones = np.asarray(mb_dones, dtype=np.bool) 204 | last_values = self.model.value(self.obs, self.states, self.dones) 205 | 206 | # discount/bootstrap off value fn 207 | mb_returns = np.zeros_like(mb_rewards) 208 | mb_advs = np.zeros_like(mb_rewards) 209 | lastgaelam = 0 210 | for t in reversed(range(self.nsteps)): 211 | if t == self.nsteps - 1: 212 | nextnonterminal = 1.0 - self.dones 213 | nextvalues = last_values 214 | else: 215 | nextnonterminal = 1.0 - mb_dones[t+1] 216 | nextvalues = mb_values[t+1] 217 | delta = mb_rewards[t] + self.gamma * nextvalues * nextnonterminal - mb_values[t] 218 | mb_advs[t] = lastgaelam = delta + self.gamma * self.lam * nextnonterminal * lastgaelam 219 | mb_returns = mb_advs + mb_values 220 | 221 | return (*map(sf01, (mb_obs, mb_returns, mb_dones, mb_actions, mb_values, mb_neglogpacs)), 222 | mb_states, epinfos) 223 | 224 | def sf01(arr): 225 | """ 226 | swap and then flatten axes 0 and 1 227 | """ 228 | s = arr.shape 229 | return arr.swapaxes(0, 1).reshape(s[0] * s[1], *s[2:]) 230 | 231 | 232 | def constfn(val): 233 | def f(_): 234 | return val 235 | return f 236 | 237 | 238 | def learn(*, policy, env, nsteps, total_timesteps, ent_coef, lr, 239 | vf_coef=0.5, max_grad_norm=0.5, gamma=0.99, lam=0.95, 240 | log_interval=10, nminibatches=4, noptepochs=4, cliprange=0.2, 241 | save_interval=0, load_path=None): 242 | comm = MPI.COMM_WORLD 243 | rank = comm.Get_rank() 244 | mpi_size = comm.Get_size() 245 | 246 | sess = tf.get_default_session() 247 | tb_writer = TB_Writer(sess) 248 | 249 | if isinstance(lr, float): lr = constfn(lr) 250 | else: assert callable(lr) 251 | if isinstance(cliprange, float): cliprange = constfn(cliprange) 252 | else: assert callable(cliprange) 253 | total_timesteps = int(total_timesteps) 254 | 255 | nenvs = env.num_envs 256 | ob_space = env.observation_space 257 | ac_space = env.action_space 258 | nbatch = nenvs * nsteps 259 | 260 | nbatch_train = nbatch // nminibatches 261 | 262 | model = Model(policy=policy, ob_space=ob_space, ac_space=ac_space, nbatch_act=nenvs, nbatch_train=nbatch_train, 263 | nsteps=nsteps, ent_coef=ent_coef, vf_coef=vf_coef, 264 | max_grad_norm=max_grad_norm) 265 | 266 | utils.load_all_params(sess) 267 | 268 | runner = Runner(env=env, model=model, nsteps=nsteps, gamma=gamma, lam=lam) 269 | 270 | epinfobuf10 = deque(maxlen=10) 271 | epinfobuf100 = deque(maxlen=100) 272 | tfirststart = time.time() 273 | active_ep_buf = epinfobuf100 274 | 275 | nupdates = total_timesteps//nbatch 276 | mean_rewards = [] 277 | datapoints = [] 278 | 279 | run_t_total = 0 280 | train_t_total = 0 281 | 282 | can_save = True 283 | checkpoints = [32, 64] 284 | saved_key_checkpoints = [False] * len(checkpoints) 285 | 286 | if Config.SYNC_FROM_ROOT and rank != 0: 287 | can_save = False 288 | 289 | def save_model(base_name=None): 290 | base_dict = {'datapoints': datapoints} 291 | utils.save_params_in_scopes(sess, ['model'], Config.get_save_file(base_name=base_name), base_dict) 292 | 293 | for update in range(1, nupdates+1): 294 | assert nbatch % nminibatches == 0 295 | nbatch_train = nbatch // nminibatches 296 | tstart = time.time() 297 | frac = 1.0 - (update - 1.0) / nupdates 298 | lrnow = lr(frac) 299 | cliprangenow = cliprange(frac) 300 | 301 | mpi_print('collecting rollouts...') 302 | run_tstart = time.time() 303 | 304 | obs, returns, masks, actions, values, neglogpacs, states, epinfos = runner.run() 305 | epinfobuf10.extend(epinfos) 306 | epinfobuf100.extend(epinfos) 307 | 308 | run_elapsed = time.time() - run_tstart 309 | run_t_total += run_elapsed 310 | mpi_print('rollouts complete') 311 | 312 | mblossvals = [] 313 | 314 | mpi_print('updating parameters...') 315 | train_tstart = time.time() 316 | 317 | if states is None: # nonrecurrent version 318 | inds = np.arange(nbatch) 319 | for _ in range(noptepochs): 320 | np.random.shuffle(inds) 321 | for start in range(0, nbatch, nbatch_train): 322 | end = start + nbatch_train 323 | mbinds = inds[start:end] 324 | slices = (arr[mbinds] for arr in (obs, returns, masks, actions, values, neglogpacs)) 325 | mblossvals.append(model.train(lrnow, cliprangenow, *slices)) 326 | else: # recurrent version 327 | assert nenvs % nminibatches == 0 328 | envinds = np.arange(nenvs) 329 | flatinds = np.arange(nenvs * nsteps).reshape(nenvs, nsteps) 330 | envsperbatch = nbatch_train // nsteps 331 | for _ in range(noptepochs): 332 | np.random.shuffle(envinds) 333 | for start in range(0, nenvs, envsperbatch): 334 | end = start + envsperbatch 335 | mbenvinds = envinds[start:end] 336 | mbflatinds = flatinds[mbenvinds].ravel() 337 | slices = (arr[mbflatinds] for arr in (obs, returns, masks, actions, values, neglogpacs)) 338 | mbstates = states[mbenvinds] 339 | mblossvals.append(model.train(lrnow, cliprangenow, *slices, mbstates)) 340 | 341 | # update the dropout mask 342 | sess.run([model.train_model.dropout_assign_ops]) 343 | 344 | train_elapsed = time.time() - train_tstart 345 | train_t_total += train_elapsed 346 | mpi_print('update complete') 347 | 348 | lossvals = np.mean(mblossvals, axis=0) 349 | tnow = time.time() 350 | fps = int(nbatch / (tnow - tstart)) 351 | 352 | if update % log_interval == 0 or update == 1: 353 | step = update*nbatch 354 | rew_mean_10 = utils.process_ep_buf(active_ep_buf, tb_writer=tb_writer, suffix='', step=step) 355 | ep_len_mean = np.nanmean([epinfo['l'] for epinfo in active_ep_buf]) 356 | 357 | mpi_print('\n----', update) 358 | 359 | mean_rewards.append(rew_mean_10) 360 | datapoints.append([step, rew_mean_10]) 361 | 362 | tb_writer.log_scalar(ep_len_mean, 'ep_len_mean') 363 | tb_writer.log_scalar(fps, 'fps') 364 | 365 | mpi_print('time_elapsed', tnow - tfirststart, run_t_total, train_t_total) 366 | mpi_print('timesteps', update*nsteps, total_timesteps) 367 | 368 | mpi_print('eplenmean', ep_len_mean) 369 | mpi_print('eprew', rew_mean_10) 370 | mpi_print('fps', fps) 371 | mpi_print('total_timesteps', update*nbatch) 372 | mpi_print([epinfo['r'] for epinfo in epinfobuf10]) 373 | 374 | if len(mblossvals): 375 | for (lossval, lossname) in zip(lossvals, model.loss_names): 376 | mpi_print(lossname, lossval) 377 | tb_writer.log_scalar(lossval, lossname) 378 | mpi_print('----\n') 379 | 380 | if can_save: 381 | if save_interval and (update % save_interval == 0): 382 | save_model() 383 | 384 | for j, checkpoint in enumerate(checkpoints): 385 | if (not saved_key_checkpoints[j]) and (step >= (checkpoint * 1e6)): 386 | saved_key_checkpoints[j] = True 387 | save_model(str(checkpoint) + 'M') 388 | 389 | save_model() 390 | 391 | env.close() 392 | return mean_rewards 393 | -------------------------------------------------------------------------------- /coinrun/random_agent.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | from coinrun import setup_utils, make 3 | 4 | 5 | def random_agent(num_envs=1, max_steps=100000): 6 | setup_utils.setup_and_load(use_cmd_line_args=False) 7 | env = make('standard', num_envs=num_envs) 8 | for step in range(max_steps): 9 | acts = np.array([env.action_space.sample() for _ in range(env.num_envs)]) 10 | _obs, rews, _dones, _infos = env.step(acts) 11 | print("step", step, "rews", rews) 12 | env.close() 13 | 14 | 15 | if __name__ == '__main__': 16 | random_agent() -------------------------------------------------------------------------------- /coinrun/setup_utils.py: -------------------------------------------------------------------------------- 1 | from coinrun.config import Config 2 | 3 | import os 4 | import joblib 5 | 6 | def load_for_setup_if_necessary(): 7 | restore_file(Config.RESTORE_ID) 8 | 9 | def restore_file(restore_id, load_key='default'): 10 | if restore_id is not None: 11 | load_file = Config.get_load_filename(restore_id=restore_id) 12 | filepath = file_to_path(load_file) 13 | load_data = joblib.load(filepath) 14 | 15 | Config.set_load_data(load_data, load_key=load_key) 16 | 17 | restored_args = load_data['args'] 18 | sub_dict = {} 19 | res_keys = Config.RES_KEYS 20 | 21 | for key in res_keys: 22 | if key in restored_args: 23 | sub_dict[key] = restored_args[key] 24 | else: 25 | print('warning key %s not restored' % key) 26 | 27 | Config.parse_args_dict(sub_dict) 28 | 29 | from coinrun.coinrunenv import init_args_and_threads 30 | init_args_and_threads(4) 31 | 32 | def setup_and_load(use_cmd_line_args=True, **kwargs): 33 | """ 34 | Initialize the global config using command line options, defaulting to the values in `config.py`. 35 | 36 | `use_cmd_line_args`: set to False to ignore command line arguments passed to the program 37 | `**kwargs`: override the defaults from `config.py` with these values 38 | """ 39 | args = Config.initialize_args(use_cmd_line_args=use_cmd_line_args, **kwargs) 40 | 41 | load_for_setup_if_necessary() 42 | 43 | return args 44 | 45 | def file_to_path(filename): 46 | return os.path.join(Config.WORKDIR, filename) -------------------------------------------------------------------------------- /coinrun/tb_utils.py: -------------------------------------------------------------------------------- 1 | import tensorflow as tf 2 | from mpi4py import MPI 3 | from coinrun.config import Config 4 | import numpy as np 5 | 6 | def clean_tb_dir(): 7 | comm = MPI.COMM_WORLD 8 | rank = comm.Get_rank() 9 | 10 | if rank == 0: 11 | if tf.gfile.Exists(Config.TB_DIR): 12 | tf.gfile.DeleteRecursively(Config.TB_DIR) 13 | tf.gfile.MakeDirs(Config.TB_DIR) 14 | 15 | comm.Barrier() 16 | 17 | class TB_Writer(object): 18 | def __init__(self, sess): 19 | comm = MPI.COMM_WORLD 20 | rank = comm.Get_rank() 21 | 22 | clean_tb_dir() 23 | 24 | tb_writer = tf.summary.FileWriter(Config.TB_DIR + '/' + Config.RUN_ID + '_' + str(rank), sess.graph) 25 | total_steps = [0] 26 | 27 | should_log = (rank == 0 or Config.LOG_ALL_MPI) 28 | 29 | if should_log: 30 | hyperparams = np.array(Config.get_arg_text()) 31 | hyperparams_tensor = tf.constant(hyperparams) 32 | 33 | summary_op = tf.summary.text("hyperparameters info", hyperparams_tensor) 34 | summary = sess.run(summary_op) 35 | 36 | tb_writer.add_summary(summary) 37 | 38 | def add_summary(_merged, interval=1): 39 | if should_log: 40 | total_steps[0] += 1 41 | 42 | if total_steps[0] % interval == 0: 43 | tb_writer.add_summary(_merged, total_steps[0]) 44 | tb_writer.flush() 45 | 46 | tuples = [] 47 | 48 | def make_scalar_graph(name): 49 | scalar_ph = tf.placeholder(name='scalar_' + name, dtype=tf.float32) 50 | scalar_summary = tf.summary.scalar(name, scalar_ph) 51 | merged = tf.summary.merge([scalar_summary]) 52 | tuples.append((scalar_ph, merged)) 53 | 54 | name_dict = {} 55 | curr_name_idx = [0] 56 | 57 | def log_scalar(x, name, step=-1): 58 | if not name in name_dict: 59 | name_dict[name] = curr_name_idx[0] 60 | tf_name = (name + '_' + Config.RUN_ID) if curr_name_idx[0] == 0 else name 61 | make_scalar_graph(tf_name) 62 | curr_name_idx[0] += 1 63 | 64 | idx = name_dict[name] 65 | 66 | scalar_ph, merged = tuples[idx] 67 | 68 | if should_log: 69 | if step == -1: 70 | step = total_steps[0] 71 | total_steps[0] += 1 72 | 73 | _merged = sess.run(merged, {scalar_ph: x}) 74 | 75 | tb_writer.add_summary(_merged, step) 76 | tb_writer.flush() 77 | 78 | self.add_summary = add_summary 79 | self.log_scalar = log_scalar 80 | -------------------------------------------------------------------------------- /coinrun/test_coinrun.py: -------------------------------------------------------------------------------- 1 | from coinrun import random_agent 2 | 3 | def test_coinrun(): 4 | random_agent.random_agent(num_envs=16, max_steps=100) 5 | 6 | 7 | if __name__ == '__main__': 8 | test_coinrun() -------------------------------------------------------------------------------- /coinrun/train_agent.py: -------------------------------------------------------------------------------- 1 | """ 2 | Train an agent using a PPO2 based on OpenAI Baselines. 3 | """ 4 | 5 | import time 6 | from mpi4py import MPI 7 | import tensorflow as tf 8 | from baselines.common import set_global_seeds 9 | import coinrun.main_utils as utils 10 | from coinrun import setup_utils, policies, wrappers, ppo2 11 | from coinrun.config import Config 12 | 13 | def main(): 14 | args = setup_utils.setup_and_load() 15 | 16 | comm = MPI.COMM_WORLD 17 | rank = comm.Get_rank() 18 | 19 | seed = int(time.time()) % 10000 20 | set_global_seeds(seed * 100 + rank) 21 | 22 | utils.setup_mpi_gpus() 23 | 24 | config = tf.ConfigProto() 25 | config.gpu_options.allow_growth = True # pylint: disable=E1101 26 | 27 | nenvs = Config.NUM_ENVS 28 | total_timesteps = int(256e6) 29 | save_interval = args.save_interval 30 | 31 | env = utils.make_general_env(nenvs, seed=rank) 32 | 33 | with tf.Session(config=config): 34 | env = wrappers.add_final_wrappers(env) 35 | 36 | policy = policies.get_policy() 37 | 38 | ppo2.learn(policy=policy, 39 | env=env, 40 | save_interval=save_interval, 41 | nsteps=Config.NUM_STEPS, 42 | nminibatches=Config.NUM_MINIBATCHES, 43 | lam=0.95, 44 | gamma=Config.GAMMA, 45 | noptepochs=Config.PPO_EPOCHS, 46 | log_interval=1, 47 | ent_coef=Config.ENTROPY_COEFF, 48 | lr=lambda f : f * Config.LEARNING_RATE, 49 | cliprange=lambda f : f * 0.2, 50 | total_timesteps=total_timesteps) 51 | 52 | if __name__ == '__main__': 53 | main() 54 | 55 | -------------------------------------------------------------------------------- /coinrun/wrappers.py: -------------------------------------------------------------------------------- 1 | import gym 2 | import numpy as np 3 | 4 | class EpsilonGreedyWrapper(gym.Wrapper): 5 | """ 6 | Wrapper to perform a random action each step instead of the requested action, 7 | with the provided probability. 8 | """ 9 | def __init__(self, env, prob=0.05): 10 | gym.Wrapper.__init__(self, env) 11 | self.prob = prob 12 | self.num_envs = env.num_envs 13 | 14 | def reset(self): 15 | return self.env.reset() 16 | 17 | def step(self, action): 18 | if np.random.uniform() 0 60 | 61 | if use_aux: 62 | for i, info in enumerate(infos): 63 | self.aux_rewards[i,:] += info['aux_rew'] 64 | self.long_aux_rewards[i,:] += info['aux_rew'] 65 | 66 | for i, d in enumerate(done): 67 | if d: 68 | epinfo = {'r': round(self.rewards[i], 6), 'l': self.lengths[i], 't': 0} 69 | aux_dict = {} 70 | 71 | for nr in range(self.num_aux_rews): 72 | aux_dict['aux_' + str(nr)] = self.aux_rewards[i,nr] 73 | 74 | if 'ale.lives' in infos[i]: 75 | game_over_rew = np.nan 76 | 77 | is_game_over = infos[i]['ale.lives'] == 0 78 | 79 | if is_game_over: 80 | game_over_rew = self.long_aux_rewards[i,0] 81 | self.long_aux_rewards[i,:] = 0 82 | 83 | aux_dict['game_over_rew'] = game_over_rew 84 | 85 | epinfo['aux_dict'] = aux_dict 86 | 87 | infos[i]['episode'] = epinfo 88 | 89 | self.rewards[i] = 0 90 | self.lengths[i] = 0 91 | self.aux_rewards[i,:] = 0 92 | 93 | return obs, rew, done, infos 94 | 95 | self.reset = reset 96 | self.step = step 97 | 98 | def add_final_wrappers(env): 99 | env = EpisodeRewardWrapper(env) 100 | 101 | return env -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | numpy~=1.15 2 | gym==0.10.0 3 | pyglet~=1.3.2 4 | mpi4py~=3.0 5 | joblib~=0.12 6 | https://github.com/openai/baselines/archive/7139a66d333b94c2dafc4af35f6a8c7598361df6.zip 7 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup, find_packages 2 | 3 | setup( 4 | name='coinrun', 5 | packages=find_packages(), 6 | version='0.0.1', 7 | ) 8 | --------------------------------------------------------------------------------