{ "info": { "author": "Sergiy Isakov", "author_email": "marvine.si@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# gym_doom\nGym environment for ViZDOOM\n\n### Requirements\n - [ViZDoom](https://github.com/mwydmuch/ViZDoom)\n - Python 3.6.8 (ViZDoom dependency)\n\n### Configuration\n#### 1. Environments \nYou can create two types of environments:\n\n`Doom-ram-v0` - It will have pseudo \"RAM\" observations. As \"RAM\" it uses `available_game_variables` from level config file.\n\n`Doom-v0` - Environment with screen images as observations.\n\n##### Default environtment:\n```\nenv = gym.make(env_id)\n```\n\nThis will create default game with `deathmatch` level and `640X480` resolution\n#### 2. Wrappers\n##### DoomFuncWrapper\n`:param env: env or env_id`\n\nCreate environment:\n```from gym_doom.doom_env import DoomFuncWrapper\nenv = gym.make('Doom-v0')\nenv = DoomFuncWrapper(env)\n```\nor\n```\nenv = DoomFuncWrapper('Doom-v0')\n```\n\nExtends environment to getting access to basic functions:\n\n def setGame(self, level=None, resolution=None, render=True):\n\n def advanceAction(self, tick=0):\n\n def playHuman(self):\n\n def getState(self):\n\n def getGameInfo(self):\n\n def getGameScreen(self):\n\n def getScreenFormat(self):\n\n def getRAM(self):\n\n def getButtonNames(self, action):\n\n def getEncodedAction(self):\n\n def getPossibleActionsCodes(self):\n\n def getActionSize(self):\n\n def getActionIndexFromEncoding(self, action_code):\n\n def getRandomAction(self):\n\n def get_image(self):\n\n##### ViZDoomEnv\n```\n:param env: or env_id\n:param level: name of level without extension\n:param data_dir: path to scenarios directory\n```\nInherited from DoomFuncWrapper. Main wrapper to change game to your custom level. Path directory must include `/scenarios/`\nwith `level_name.cfg` and `level_name.wad` files. Therefore you must provide same name for level\nparameter as in `level_name` without extension.\n\n\nCreate environment:\n```\ndir_ = \"E:\\VizDOOM\"\nenv = gym.make('Doom-v0')\nenv = ViZDoomEnv(env, level='deadly_corridor', data_dir=dir_)\n```\n\n##### ScreenWrapper\n```\n:param env: VizDoom environment or env_id\n:param dim: resize dimensions as a tuple\n:param resolution: desired resolution\n:param render: renders the main window\n:param dummy_obs: fills observations with zeros\n```\nInherited from ObservationWrapper and DoomFuncWrapper. \n\nTo resize observation space and pygame window provide `dim` in form of tuple with new dimensions. \nF.ex. `dim=(100, 100)`\n\nTo change resolution of main VizDoom screen specify `resolution=\"160x120\"`\n\nTo disable rendering of main VizDoom window set `render=False`\n\n List of available resolutions:\n\n '160x120', '200x125', '200x150', '256x144', '256x160', '256x192', '320x180', '320x200',\n '320x240', '320x256', '400x225', '400x250', '400x300', '512x288', '512x320', '512x384',\n '640x360', '640x400', '640x480', '800x450', '800x500', '800x600', '1024x576', '1024x640',\n '1024x768', '1280x720', '1280x800', '1280x960', '1280x1024', '1400x787', '1400x875',\n '1400x1050', '1600x900', '1600x1000', '1600x1200', '1920x1080'\n\n```\nenv = gym.make('Doom-v0')\nenv = ViZDoomEnv(env, level='deadly_corridor', data_dir=dir_)\nenv = ScreenWrapper(env, dim=(100, 100), render=False, dummy_obs=True)\n```\n\n#### 3. Python version issue\nViZDoom can probably also run successfully on other Python3 versions. \nTry to edit `_COMPILED_PYTHON_VERSION` in your `vizdoom/__init__.py` to your version:\n\n```\nimport sys as _sys\n\n_COMPILED_PYTHON_VERSION = \"3.6.6\"\n\n_this_python_version = \"{}.{}.{}\".format(*_sys.version_info[0:3])\n\nif _COMPILED_PYTHON_VERSION != _this_python_version:\n raise SystemError(\n \"This interpreter version: '{}' doesn't match with version of the interpreter ViZDoom was compiled with: {}\".format(\n _this_python_version, _COMPILED_PYTHON_VERSION))\n\nfrom .vizdoom import __version__ as __version__\nfrom .vizdoom import *\n\nimport os as _os\n\nscenarios_path = _os.path.join(__path__[0], \"scenarios\")\nwads = [wad for wad in sorted(_os.listdir(scenarios_path)) if wad.endswith(\".wad\")]\nconfigs = [cfg for cfg in sorted(_os.listdir(scenarios_path)) if cfg.endswith(\".cfg\")]\n```\n\n\n### Running \nViZDoomGymEnv method will create a gym environment.\n\n##### Human player\n\n```\nimport gym\nfrom gym_doom.wrappers import ViZDoomEnv, ScreenWrapper\n\nif __name__ == '__main__':\n\n viz_doom_renderer = False\n dir_ = \"E:\\VizDOOM\"\n env = gym.make('Doom-ram-v0')\n env = ViZDoomEnv(env, level='deadly_corridor', data_dir=dir_)\n env = ScreenWrapper(env, dim=(100, 100), render=True, dummy_obs=True)\n\n env.playHuman()\n\n```\n##### Loop for RL\n```\nimport random\nimport time\nimport gym\nfrom gym_doom.wrappers import ViZDoomEnv, ScreenWrapper\n\n\ndef randomAction(env):\n actions = env.unwrapped.available_action_codes\n return random.choice(actions)\n\n\nif __name__ == '__main__':\n\n viz_doom_renderer = False\n dir_ = \"E:\\VizDOOM\"\n env = gym.make('Doom-ram-v0')\n env = ViZDoomEnv(env, level='deadly_corridor', data_dir=dir_)\n env = ScreenWrapper(env, dim=(100, 100), render=True, dummy_obs=True)\n\n obs = env.reset()\n\n while True:\n action = randomAction(env)\n ob, reward, done, info = env.step(action)\n\n if not viz_doom_renderer:\n env.render()\n time.sleep(0.01)\n if done:\n env.reset()\n\n env.close()\n```\n\n\n### Links\n[ViZDoom](https://github.com/mwydmuch/ViZDoom) - original ViZDoom with all Documentation and Installation guide\n\n[ViZDoom Tutorial](http://vizdoom.cs.put.edu.pl/tutorial) - includes essential information about installation, configuration and running ViZDoom\n\n[ppaquette_gym_doom](https://github.com/ppaquette/gym-doom) - outdated original repository for gym ViZDoom environment\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/MarvineGothic/gym_doom", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "gym-doom", "package_url": "https://pypi.org/project/gym-doom/", "platform": "", "project_url": "https://pypi.org/project/gym-doom/", "project_urls": { "Homepage": "https://github.com/MarvineGothic/gym_doom" }, "release_url": "https://pypi.org/project/gym-doom/1.0/", "requires_dist": null, "requires_python": "", "summary": "Gym environment for VizDoom", "version": "1.0" }, "last_serial": 5998117, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "9eb93f7409bdc55d9493afb433b53757", "sha256": "5c7e8bd9508d95cd335c2ff54ae38b9811dc9f450942f71e565f2595327bb0c1" }, "downloads": -1, "filename": "gym_doom-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9eb93f7409bdc55d9493afb433b53757", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 51432, "upload_time": "2019-10-19T00:08:24", "url": "https://files.pythonhosted.org/packages/53/e0/0fb9608021064025ce7a13f43acbd7528df7d55a9507dd189f836a4daa31/gym_doom-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c4df3fc87674132cee4f6f89aaf1b5b", "sha256": "dc689de48651e3af88997be2fbf6b1613ae1cd2ff40548e507111066f5affa69" }, "downloads": -1, "filename": "gym_doom-1.0.tar.gz", "has_sig": false, "md5_digest": "7c4df3fc87674132cee4f6f89aaf1b5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38094, "upload_time": "2019-10-19T00:08:26", "url": "https://files.pythonhosted.org/packages/d8/37/1113abb54abdbf7cf644b00d3752ba8d4ca0905222d04aaaeeef2ca1249a/gym_doom-1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9eb93f7409bdc55d9493afb433b53757", "sha256": "5c7e8bd9508d95cd335c2ff54ae38b9811dc9f450942f71e565f2595327bb0c1" }, "downloads": -1, "filename": "gym_doom-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9eb93f7409bdc55d9493afb433b53757", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 51432, "upload_time": "2019-10-19T00:08:24", "url": "https://files.pythonhosted.org/packages/53/e0/0fb9608021064025ce7a13f43acbd7528df7d55a9507dd189f836a4daa31/gym_doom-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c4df3fc87674132cee4f6f89aaf1b5b", "sha256": "dc689de48651e3af88997be2fbf6b1613ae1cd2ff40548e507111066f5affa69" }, "downloads": -1, "filename": "gym_doom-1.0.tar.gz", "has_sig": false, "md5_digest": "7c4df3fc87674132cee4f6f89aaf1b5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38094, "upload_time": "2019-10-19T00:08:26", "url": "https://files.pythonhosted.org/packages/d8/37/1113abb54abdbf7cf644b00d3752ba8d4ca0905222d04aaaeeef2ca1249a/gym_doom-1.0.tar.gz" } ] }