[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Kautenja--gym-super-mario-bros":3,"tool-Kautenja--gym-super-mario-bros":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":80,"owner_email":80,"owner_twitter":80,"owner_website":80,"owner_url":81,"languages":82,"stars":91,"forks":92,"last_commit_at":93,"license":94,"difficulty_score":23,"env_os":95,"env_gpu":96,"env_ram":95,"env_deps":97,"category_tags":104,"github_topics":105,"view_count":23,"oss_zip_url":80,"oss_zip_packed_at":80,"status":16,"created_at":109,"updated_at":110,"faqs":111,"releases":141},2420,"Kautenja\u002Fgym-super-mario-bros","gym-super-mario-bros","An OpenAI Gym interface to Super Mario Bros. & Super Mario Bros. 2 (Lost Levels) on The NES","gym-super-mario-bros 是一个将经典红白机游戏《超级马里奥兄弟》及其续作接入 OpenAI Gym 框架的开源工具。它利用 nes-py 模拟器，让 AI 算法能够直接在标准的马里奥游戏环境中进行训练和测试。\n\n这一工具主要解决了强化学习领域缺乏高质量、标准化且具挑战性的基准测试环境的问题。以往研究人员需要自行搭建复杂的游戏模拟接口，而 gym-super-mario-bros 提供了开箱即用的解决方案。它会自动过滤掉过场动画和加载画面，仅向智能体返回可产生奖励的游戏帧，并在无法跳过的剧情时自动锁定进程，确保了训练数据的有效性和连续性。此外，它还支持自定义动作空间（如简化移动指令），帮助降低训练难度。\n\n该工具非常适合人工智能研究人员、算法工程师以及强化学习爱好者使用。无论是想要验证新的深度学习模型，还是希望入门游戏 AI 开发的开发者，都能通过简单的 Python 代码或命令行快速启动环境。其独特的技术亮点在于对 NES 模拟器的深度集成与优化，提供了从像素级到降采样等多种不同版本的环境配置，满足了从高精度研究到快速原型开发的不同需求，是探索游戏智能不可或缺的基础设","gym-super-mario-bros 是一个将经典红白机游戏《超级马里奥兄弟》及其续作接入 OpenAI Gym 框架的开源工具。它利用 nes-py 模拟器，让 AI 算法能够直接在标准的马里奥游戏环境中进行训练和测试。\n\n这一工具主要解决了强化学习领域缺乏高质量、标准化且具挑战性的基准测试环境的问题。以往研究人员需要自行搭建复杂的游戏模拟接口，而 gym-super-mario-bros 提供了开箱即用的解决方案。它会自动过滤掉过场动画和加载画面，仅向智能体返回可产生奖励的游戏帧，并在无法跳过的剧情时自动锁定进程，确保了训练数据的有效性和连续性。此外，它还支持自定义动作空间（如简化移动指令），帮助降低训练难度。\n\n该工具非常适合人工智能研究人员、算法工程师以及强化学习爱好者使用。无论是想要验证新的深度学习模型，还是希望入门游戏 AI 开发的开发者，都能通过简单的 Python 代码或命令行快速启动环境。其独特的技术亮点在于对 NES 模拟器的深度集成与优化，提供了从像素级到降采样等多种不同版本的环境配置，满足了从高精度研究到快速原型开发的不同需求，是探索游戏智能不可或缺的基础设施。","# gym-super-mario-bros\n\n[![BuildStatus][build-status]][ci-server]\n[![PackageVersion][pypi-version]][pypi-home]\n[![PythonVersion][python-version]][python-home]\n[![Stable][pypi-status]][pypi-home]\n[![Format][pypi-format]][pypi-home]\n[![License][pypi-license]](LICENSE)\n\n[build-status]: https:\u002F\u002Fapp.travis-ci.com\u002FKautenja\u002Fgym-super-mario-bros.svg?branch=master\n[ci-server]: https:\u002F\u002Fapp.travis-ci.com\u002FKautenja\u002Fgym-super-mario-bros\n[pypi-version]: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fgym-super-mario-bros.svg\n[pypi-license]: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Fgym-super-mario-bros.svg\n[pypi-status]: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fstatus\u002Fgym-super-mario-bros.svg\n[pypi-format]: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fformat\u002Fgym-super-mario-bros.svg\n[pypi-home]: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fgym-super-mario-bros\n[python-version]: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fgym-super-mario-bros.svg\n[python-home]: https:\u002F\u002Fpython.org\n\n![Mario](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FKautenja_gym-super-mario-bros_readme_4c89c0117202.gif)\n\nAn [OpenAI Gym](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fgym) environment for\nSuper Mario Bros. & Super Mario Bros. 2 (Lost Levels) on The Nintendo\nEntertainment System (NES) using\n[the nes-py emulator](https:\u002F\u002Fgithub.com\u002FKautenja\u002Fnes-py).\n\n## Installation\n\nThe preferred installation of `gym-super-mario-bros` is from `pip`:\n\n```shell\npip install gym-super-mario-bros\n```\n\n## Usage\n\n### Python\n\nYou must import `gym_super_mario_bros` before trying to make an environment.\nThis is because gym environments are registered at runtime. By default,\n`gym_super_mario_bros` environments use the full NES action space of 256\ndiscrete actions. To contstrain this, `gym_super_mario_bros.actions` provides\nthree actions lists (`RIGHT_ONLY`, `SIMPLE_MOVEMENT`, and `COMPLEX_MOVEMENT`)\nfor the `nes_py.wrappers.JoypadSpace` wrapper. See\n[gym_super_mario_bros\u002Factions.py](https:\u002F\u002Fgithub.com\u002FKautenja\u002Fgym-super-mario-bros\u002Fblob\u002Fmaster\u002Fgym_super_mario_bros\u002Factions.py) for a\nbreakdown of the legal actions in each of these three lists.\n\n```python\nfrom nes_py.wrappers import JoypadSpace\nimport gym_super_mario_bros\nfrom gym_super_mario_bros.actions import SIMPLE_MOVEMENT\nenv = gym_super_mario_bros.make('SuperMarioBros-v0')\nenv = JoypadSpace(env, SIMPLE_MOVEMENT)\n\ndone = True\nfor step in range(5000):\n    if done:\n        state = env.reset()\n    state, reward, done, info = env.step(env.action_space.sample())\n    env.render()\n\nenv.close()\n```\n\n**NOTE:** `gym_super_mario_bros.make` is just an alias to `gym.make` for\nconvenience.\n\n**NOTE:** remove calls to `render` in training code for a nontrivial\nspeedup.\n\n### Command Line\n\n`gym_super_mario_bros` features a command line interface for playing\nenvironments using either the keyboard, or uniform random movement.\n\n```shell\ngym_super_mario_bros -e \u003Cthe environment ID to play> -m \u003C`human` or `random`>\n```\n\n**NOTE:** by default, `-e` is set to `SuperMarioBros-v0` and `-m` is set to\n`human`.\n\n**NOTE:** `SuperMarioBrosRandomStages-*` support the `--stages\u002F-S` flag for\nsupplying the set of stages to sample from like `-S 1-4 2-4 3-4 4-4`.\n\n## Environments\n\nThese environments allow 3 attempts (lives) to make it through the 32 stages\nin the game. The environments only send reward-able game-play frames to\nagents; No cut-scenes, loading screens, etc. are sent from the NES emulator\nto an agent nor can an agent perform actions during these instances. If a\ncut-scene is not able to be skipped by hacking the NES's RAM, the environment\nwill lock the Python process until the emulator is ready for the next action.\n\n| Environment                     | Game | ROM           | Screenshot |\n|:--------------------------------|:-----|:--------------|:-----------|\n| `SuperMarioBros-v0`             | SMB  | standard      | ![][v0]    |\n| `SuperMarioBros-v1`             | SMB  | downsample    | ![][v1]    |\n| `SuperMarioBros-v2`             | SMB  | pixel         | ![][v2]    |\n| `SuperMarioBros-v3`             | SMB  | rectangle     | ![][v3]    |\n| `SuperMarioBros2-v0`            | SMB2 | standard      | ![][2-v0]  |\n| `SuperMarioBros2-v1`            | SMB2 | downsample    | ![][2-v1]  |\n\n[v0]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948820-3d15e5c2-6830-11e8-81d4-ecfaffee0a14.png\n[v1]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948819-3cff6c48-6830-11e8-8373-8fad1665ac72.png\n[v2]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948818-3cea09d4-6830-11e8-8efa-8f34d8b05b11.png\n[v3]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948817-3cd6600a-6830-11e8-8abb-9cee6a31d377.png\n[2-v0]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948822-3d3b8412-6830-11e8-860b-af3802f5373f.png\n[2-v1]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948821-3d2d61a2-6830-11e8-8789-a92e750aa9a8.png\n\n### Individual Stages\n\nThese environments allow a single attempt (life) to make it through a single\nstage of the game.\n\nUse the template\n\n    SuperMarioBros-\u003Cworld>-\u003Cstage>-v\u003Cversion>\n\nwhere:\n\n-   `\u003Cworld>` is a number in {1, 2, 3, 4, 5, 6, 7, 8} indicating the world\n-   `\u003Cstage>` is a number in {1, 2, 3, 4} indicating the stage within a world\n-   `\u003Cversion>` is a number in {0, 1, 2, 3} specifying the ROM mode to use\n    - 0: standard ROM\n    - 1: downsampled ROM\n    - 2: pixel ROM\n    - 3: rectangle ROM\n\nFor example, to play 4-2 on the downsampled ROM, you would use the environment\nid `SuperMarioBros-4-2-v1`.\n\n### Random Stage Selection\n\nThe random stage selection environment randomly selects a stage and allows a\nsingle attempt to clear it. Upon a death and subsequent call to `reset` the\nenvironment randomly selects a new stage. This is only available for the\nstandard Super Mario Bros. game, _not_ Lost Levels (at the moment). To use\nthese environments, append `RandomStages` to the `SuperMarioBros` id. For\nexample, to use the standard ROM with random stage selection use\n`SuperMarioBrosRandomStages-v0`. To seed the random stage selection use the\n`seed` method of the env, i.e., `env.seed(222)`, before any calls to `reset`.\nAlternatively pass the `seed` keyword argument to the `reset` method directly\nlike `reset(seed=222)`.\n\nIn addition to randomly selecting any of the 32 original stages, a subset of\nuser-defined stages can be specified to limit the random choice of stages to a\nspecific subset. For example, the stage selector could be limited to only\nsample castle stages, water levels, underground, and more.\n\nTo specify a subset of stages to randomly sample from, create a list of each\nstage to allow to be sampled and pass that list to the `gym.make()` function.\nFor example:\n\n```python\ngym.make('SuperMarioBrosRandomStages-v0', stages=['1-4', '2-4', '3-4', '4-4'])\n```\n\nThe example above will sample a random stage from 1-4, 2-4, 3-4, and 4-4 upon\nevery call to `reset`.\n\n## Step\n\nInfo about the rewards and info returned by the `step` method.\n\n### Reward Function\n\nThe reward function assumes the objective of the game is to move as far right\nas possible (increase the agent's _x_ value), as fast as possible, without\ndying. To model this game, three separate variables compose the reward:\n\n1.  _v_: the difference in agent _x_ values between states\n    -   in this case this is instantaneous velocity for the given step\n    -   _v = x1 - x0_\n        -   _x0_ is the x position before the step\n        -   _x1_ is the x position after the step\n    -   moving right ⇔ _v > 0_\n    -   moving left ⇔ _v \u003C 0_\n    -   not moving ⇔ _v = 0_\n2.  _c_: the difference in the game clock between frames\n    -   the penalty prevents the agent from standing still\n    -   _c = c0 - c1_\n        -   _c0_ is the clock reading before the step\n        -   _c1_ is the clock reading after the step\n    -   no clock tick ⇔ _c = 0_\n    -   clock tick ⇔ _c \u003C 0_\n3.  _d_: a death penalty that penalizes the agent for dying in a state\n    -   this penalty encourages the agent to avoid death\n    -   alive ⇔ _d = 0_\n    -   dead ⇔ _d = -15_\n\n_r = v + c + d_\n\nThe reward is clipped into the range _(-15, 15)_.\n\n### `info` dictionary\n\nThe `info` dictionary returned by the `step` method contains the following\nkeys:\n\n| Key        | Type   | Description\n|:-----------|:-------|:------------------------------------------------------|\n| `coins   ` | `int`  | The number of collected coins\n| `flag_get` | `bool` | True if Mario reached a flag or ax\n| `life`     | `int`  | The number of lives left, i.e., _{3, 2, 1}_\n| `score`    | `int`  | The cumulative in-game score\n| `stage`    | `int`  | The current stage, i.e., _{1, ..., 4}_\n| `status`   | `str`  | Mario's status, i.e., _{'small', 'tall', 'fireball'}_\n| `time`     | `int`  | The time left on the clock\n| `world`    | `int`  | The current world, i.e., _{1, ..., 8}_\n| `x_pos`    | `int`  | Mario's _x_ position in the stage (from the left)\n| `y_pos`    | `int`  | Mario's _y_ position in the stage (from the bottom)\n\n## Citation\n\nPlease cite `gym-super-mario-bros` if you use it in your research.\n\n```tex\n@misc{gym-super-mario-bros,\n  author = {Christian Kauten},\n  howpublished = {GitHub},\n  title = {{S}uper {M}ario {B}ros for {O}pen{AI} {G}ym},\n  URL = {https:\u002F\u002Fgithub.com\u002FKautenja\u002Fgym-super-mario-bros},\n  year = {2018},\n}\n```\n","# gym-超级马里奥兄弟\n\n[![构建状态][build-status]][ci-server]\n[![包版本][pypi-version]][pypi-home]\n[![Python版本][python-version]][python-home]\n[![稳定][pypi-status]][pypi-home]\n[![格式][pypi-format]][pypi-home]\n[![许可证][pypi-license]](LICENSE)\n\n[build-status]: https:\u002F\u002Fapp.travis-ci.com\u002FKautenja\u002Fgym-super-mario-bros.svg?branch=master\n[ci-server]: https:\u002F\u002Fapp.travis-ci.com\u002FKautenja\u002Fgym-super-mario-bros\n[pypi-version]: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fgym-super-mario-bros.svg\n[pypi-license]: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Fgym-super-mario-bros.svg\n[pypi-status]: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fstatus\u002Fgym-super-mario-bros.svg\n[pypi-format]: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fformat\u002Fgym-super-mario-bros.svg\n[pypi-home]: https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fgym-super-mario-bros\n[python-version]: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fpyversions\u002Fgym-super-mario-bros.svg\n[python-home]: https:\u002F\u002Fpython.org\n\n![马里奥](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FKautenja_gym-super-mario-bros_readme_4c89c0117202.gif)\n\n一个基于 [OpenAI Gym](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fgym) 的环境，用于在任天堂娱乐系统（NES）上运行《超级马里奥兄弟》和《超级马里奥兄弟2：失落关卡》，使用了 [nes-py 模拟器](https:\u002F\u002Fgithub.com\u002FKautenja\u002Fnes-py)。\n\n## 安装\n\n推荐通过 `pip` 安装 `gym-super-mario-bros`：\n\n```shell\npip install gym-super-mario-bros\n```\n\n## 使用\n\n### Python\n\n在尝试创建环境之前，必须先导入 `gym_super_mario_bros`。这是因为 Gym 环境是在运行时注册的。默认情况下，`gym_super_mario_bros` 环境使用 NES 的完整动作空间，包含 256 种离散动作。为了限制动作范围，`gym_super_mario_bros.actions` 提供了三个动作列表（`RIGHT_ONLY`、`SIMPLE_MOVEMENT` 和 `COMPLEX_MOVEMENT`），供 `nes_py.wrappers.JoypadSpace` 包装器使用。有关这三个列表中合法动作的详细说明，请参阅 [gym_super_mario_bros\u002Factions.py](https:\u002F\u002Fgithub.com\u002FKautenja\u002Fgym-super-mario-bros\u002Fblob\u002Fmaster\u002Fgym_super_mario_bros\u002Factions.py)。\n\n```python\nfrom nes_py.wrappers import JoypadSpace\nimport gym_super_mario_bros\nfrom gym_super_mario_bros.actions import SIMPLE_MOVEMENT\nenv = gym_super_mario_bros.make('SuperMarioBros-v0')\nenv = JoypadSpace(env, SIMPLE_MOVEMENT)\n\ndone = True\nfor step in range(5000):\n    if done:\n        state = env.reset()\n    state, reward, done, info = env.step(env.action_space.sample())\n    env.render()\n\nenv.close()\n```\n\n**注意：** `gym_super_mario_bros.make` 只是 `gym.make` 的别名，方便使用。\n\n**注意：** 在训练代码中移除对 `render` 的调用可以显著提升速度。\n\n### 命令行\n\n`gym_super_mario_bros` 提供了一个命令行界面，可以通过键盘或均匀随机移动来游玩环境。\n\n```shell\ngym_super_mario_bros -e \u003C要游玩的环境ID> -m \u003C`human` 或 `random`>\n```\n\n**注意：** 默认情况下，`-e` 设置为 `SuperMarioBros-v0`，`-m` 设置为 `human`。\n\n**注意：** `SuperMarioBrosRandomStages-*` 支持 `--stages\u002F-S` 标志，用于指定要从中随机选择关卡的集合，例如 `-S 1-4 2-4 3-4 4-4`。\n\n## 环境\n\n这些环境允许玩家有 3 次机会（生命值）通关游戏中的 32 个关卡。环境只会将可获得奖励的游戏画面发送给智能体；过场动画、加载屏幕等不会从 NES 模拟器传递给智能体，智能体在这些期间也无法执行动作。如果无法通过修改 NES 的 RAM 来跳过过场动画，环境会锁定 Python 进程，直到模拟器准备好进行下一步操作。\n\n| 环境                     | 游戏   | ROM           | 截图 |\n|:--------------------------------|:-----|:--------------|:-----------|\n| `SuperMarioBros-v0`             | SMB  | 标准          | ![][v0]    |\n| `SuperMarioBros-v1`             | SMB  | 下采样        | ![][v1]    |\n| `SuperMarioBros-v2`             | SMB  | 像素化        | ![][v2]    |\n| `SuperMarioBros-v3`             | SMB  | 矩形化        | ![][v3]    |\n| `SuperMarioBros2-v0`            | SMB2 | 标准          | ![][2-v0]  |\n| `SuperMarioBros2-v1`            | SMB2 | 下采样        | ![][2-v1]  |\n\n[v0]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948820-3d15e5c2-6830-11e8-81d4-ecfaffee0a14.png\n[v1]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948819-3cff6c48-6830-11e8-8373-8fad1665ac72.png\n[v2]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948818-3cea09d4-6830-11e8-8efa-8f34d8b05b11.png\n[v3]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948817-3cd6600a-6830-11e8-8abb-9cee6a31d377.png\n[2-v0]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948822-3d3b8412-6830-11e8-860b-af3802f5373f.png\n[2-v1]: https:\u002F\u002Fuser-images.githubusercontent.com\u002F2184469\u002F40948821-3d2d61a2-6830-11e8-8789-a92e750aa9a8.png\n\n### 单个关卡\n\n这些环境允许玩家仅有一次机会（一次生命）通关游戏中的单个关卡。\n\n使用以下模板：\n\n    SuperMarioBros-\u003C世界>-\u003C阶段>-v\u003C版本>\n\n其中：\n\n- `\u003C世界>` 是一个介于 1 到 8 之间的数字，表示游戏中的世界；\n- `\u003C阶段>` 是一个介于 1 到 4 之间的数字，表示某个世界中的具体关卡；\n- `\u003C版本>` 是一个介于 0 到 3 之间的数字，用于指定使用的 ROM 模式：\n  - 0：标准 ROM\n  - 1：下采样 ROM\n  - 2：像素化 ROM\n  - 3：矩形化 ROM\n\n例如，要在下采样 ROM 上游玩 4-2 关卡，可以使用环境 ID `SuperMarioBros-4-2-v1`。\n\n### 随机关卡选择\n\n随机关卡选择环境会随机选取一个关卡，并允许玩家尝试通关。一旦玩家死亡并调用 `reset` 方法，环境就会再次随机选择一个新的关卡。目前此功能仅适用于标准版《超级马里奥兄弟》，而不适用于《失落关卡》。要使用这些环境，只需在 `SuperMarioBros` 的 ID 后加上 `RandomStages`。例如，若要使用标准 ROM 并结合随机关卡选择功能，可以使用 `SuperMarioBrosRandomStages-v0`。若想固定随机种子，可在调用 `reset` 之前使用环境的 `seed` 方法，如 `env.seed(222)`，或者直接在 `reset` 方法中传入 `seed` 参数，例如 `reset(seed=222)`。\n\n除了可以从全部 32 个原始关卡中随机选择外，还可以指定用户自定义的关卡子集，以将随机选择范围限定在特定子集中。例如，可以选择只包含城堡关卡、水下关卡、地下关卡等。\n\n要指定一个关卡子集用于随机抽选，可以创建一个允许被抽选的关卡列表，并将其传递给 `gym.make()` 函数。例如：\n\n```python\ngym.make('SuperMarioBrosRandomStages-v0', stages=['1-4', '2-4', '3-4', '4-4'])\n```\n\n上述示例将在每次调用 `reset` 时，从 1-4、2-4、3-4 和 4-4 中随机选择一个关卡。\n\n## 步骤\n\n关于 `step` 方法返回的奖励和信息的相关说明。\n\n### 奖励函数\n\n奖励函数假设游戏的目标是尽可能向右移动（增加智能体的 _x_ 值），同时尽可能快地移动，且不能死亡。为了建模这个游戏，奖励由三个独立的变量组成：\n\n1.  _v_：状态之间智能体 _x_ 值的差值  \n    -   在这种情况下，它表示当前步骤的瞬时速度  \n    -   _v = x1 - x0_  \n        -   _x0_ 是步骤前的 _x_ 位置  \n        -   _x1_ 是步骤后的 _x_ 位置  \n    -   向右移动 ⇔ _v > 0_  \n    -   向左移动 ⇔ _v \u003C 0_  \n    -   不动 ⇔ _v = 0_  \n2.  _c_：帧之间游戏时钟的差值  \n    -   这个惩罚项可以防止智能体静止不动  \n    -   _c = c0 - c1_  \n        -   _c0_ 是步骤前的时钟读数  \n        -   _c1_ 是步骤后的时钟读数  \n    -   没有时钟滴答 ⇔ _c = 0_  \n    -   有时钟滴答 ⇔ _c \u003C 0_  \n3.  _d_：死亡惩罚项，用于惩罚智能体在某个状态下死亡  \n    -   这个惩罚项鼓励智能体避免死亡  \n    -   生存 ⇔ _d = 0_  \n    -   死亡 ⇔ _d = -15_\n\n_r = v + c + d_\n\n奖励会被截断到区间 _(-15, 15)_。\n\n### `info` 字典\n\n`step` 方法返回的 `info` 字典包含以下键：\n\n| 键        | 类型   | 描述\n|:-----------|:-------|:------------------------------------------------------|\n| `coins`   | `int`  | 收集到的金币数量\n| `flag_get` | `bool` | 如果马里奥到达了旗帜或斧头，则为真\n| `life`     | `int`  | 剩余的生命数，即 _{3, 2, 1}_\n| `score`    | `int`  | 累积的游戏分数\n| `stage`    | `int`  | 当前关卡，即 _{1, ..., 4}_\n| `status`   | `str`  | 马里奥的状态，即 _{'small', 'tall', 'fireball'}_\n| `time`     | `int`  | 时钟剩余的时间\n| `world`    | `int`  | 当前世界，即 _{1, ..., 8}_\n| `x_pos`    | `int`  | 马里奥在关卡中的 _x_ 位置（从左侧算起）\n| `y_pos`    | `int`  | 马里奥在关卡中的 _y_ 位置（从底部算起）\n\n## 引用\n\n如果您在研究中使用了 `gym-super-mario-bros`，请引用它。\n\n```tex\n@misc{gym-super-mario-bros,\n  author = {Christian Kauten},\n  howpublished = {GitHub},\n  title = {{S}uper {M}ario {B}ros for {O}pen{AI} {G}ym},\n  URL = {https:\u002F\u002Fgithub.com\u002FKautenja\u002Fgym-super-mario-bros},\n  year = {2018},\n}\n```","# gym-super-mario-bros 快速上手指南\n\n`gym-super-mario-bros` 是一个基于 OpenAI Gym 接口构建的超级马里奥兄弟（NES 版）强化学习环境。它使用 `nes-py` 模拟器，支持标准的《超级马里奥兄弟》及《超级马里奥兄弟 2》（失落的关卡）。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux 或 macOS (Windows 支持可能受限，建议在 WSL 或 Docker 中运行)\n*   **Python 版本**: 3.6 - 3.9 (推荐 Python 3.8+)\n*   **前置依赖**:\n    *   `gym`: 强化学习框架\n    *   `nes-py`: NES 模拟器核心\n    *   `numpy`: 数值计算库\n\n> **提示**：国内用户建议使用清华源或阿里源加速安装过程。\n\n## 安装步骤\n\n推荐使用 `pip` 进行安装。\n\n### 1. 基础安装\n直接使用 pip 安装最新稳定版：\n\n```shell\npip install gym-super-mario-bros\n```\n\n### 2. 国内加速安装（推荐）\n如果您在中国大陆，使用镜像源可以显著提升下载速度：\n\n```shell\npip install gym-super-mario-bros -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\n### Python 代码示例\n\n以下是最小化的运行示例，展示了如何创建环境、限制动作空间并运行游戏循环。\n\n**注意**：\n1. 必须先导入 `gym_super_mario_bros` 以注册环境。\n2. 默认动作空间包含 256 种组合，建议使用 `JoypadSpace` 包装器将其简化为常用动作（如 `SIMPLE_MOVEMENT`）。\n3. **训练时请注释掉 `env.render()`** 以获得显著的速度提升。\n\n```python\nfrom nes_py.wrappers import JoypadSpace\nimport gym_super_mario_bros\nfrom gym_super_mario_bros.actions import SIMPLE_MOVEMENT\n\n# 1. 创建环境 (别名：gym_super_mario_bros.make 等同于 gym.make)\nenv = gym_super_mario_bros.make('SuperMarioBros-v0')\n\n# 2. 应用动作空间包装器 (将动作限制为简单的移动和跳跃)\nenv = JoypadSpace(env, SIMPLE_MOVEMENT)\n\ndone = True\nfor step in range(5000):\n    if done:\n        # 重置环境，如果是新回合则返回初始状态\n        state = env.reset()\n    \n    # 执行随机动作\n    state, reward, done, info = env.step(env.action_space.sample())\n    \n    # 渲染画面 (仅在调试\u002F演示时开启，训练时请关闭)\n    env.render()\n\nenv.close()\n```\n\n### 命令行试玩\n\n该工具内置了命令行界面，可以直接通过键盘或随机策略玩游戏。\n\n**基本命令格式：**\n```shell\ngym_super_mario_bros -e \u003C环境 ID> -m \u003C模式：human 或 random>\n```\n\n**示例：启动默认环境并使用键盘控制**\n```shell\ngym_super_mario_bros\n# 等价于：gym_super_mario_bros -e SuperMarioBros-v0 -m human\n```\n\n**示例：指定特定关卡版本并观察随机游走**\n```shell\ngym_super_mario_bros -e SuperMarioBros-4-2-v1 -m random\n```\n\n### 常用环境 ID 说明\n\n| 环境 ID | 描述 |\n| :--- | :--- |\n| `SuperMarioBros-v0` | 标准 ROM，完整游戏 (32 关，3 条命) |\n| `SuperMarioBros-v1` | 下采样 ROM (分辨率更低，适合快速训练) |\n| `SuperMarioBros-\u003C世界>-\u003C关卡>-v\u003C版本>` | 单关卡模式 (例如：`SuperMarioBros-1-1-v0`) |\n| `SuperMarioBrosRandomStages-v0` | 随机关卡模式 (每次重置随机选择一关) |","某高校强化学习实验室的研究团队正致力于训练一个能自主通关《超级马里奥兄弟》的 AI 模型，以验证新的深度 Q 网络（DQN）算法在复杂离散动作空间中的有效性。\n\n### 没有 gym-super-mario-bros 时\n- **环境搭建极其繁琐**：研究人员需自行寻找 NES 模拟器、获取游戏 ROM 文件，并编写复杂的底层代码将游戏画面帧与 Python 进程对接，耗时数周仍难以稳定运行。\n- **动作空间冗余难处理**：原生模拟器提供 256 种组合按键动作，其中大量无效操作（如同时按左右）导致智能体探索效率极低，收敛速度缓慢。\n- **训练数据包含噪声**：游戏过场动画和加载界面会被误作为状态输入给模型，不仅浪费计算资源，还干扰了奖励函数的正常反馈逻辑。\n- **缺乏标准化接口**：不同成员编写的实验代码接口不统一，难以复现彼此的成果，也无法直接利用现有的 OpenAI Gym 生态工具库。\n\n### 使用 gym-super-mario-bros 后\n- **一键部署标准环境**：通过 `pip install` 即可安装，调用 `gym_super_mario_bros.make` 一行代码便能启动标准化的马里奥训练环境，将配置时间从数周缩短至几分钟。\n- **灵活约束动作空间**：利用内置的 `JoypadSpace` 包装器和 `SIMPLE_MOVEMENT` 预设，轻松将动作集精简为跑、跳等关键操作，显著提升了模型的探索效率和训练速度。\n- **自动过滤无效帧**：工具自动屏蔽过场动画和加载画面，仅向智能体输送可操作的游戏帧，确保每一步训练都在有效状态下进行，大幅优化了算力利用率。\n- **无缝兼容主流算法**：完全遵循 OpenAI Gym 接口规范，团队可直接复用成熟的 DQN、PPO 等算法代码库，快速开展对比实验并复现前沿论文结果。\n\ngym-super-mario-bros 将复杂的复古游戏仿真转化为标准的强化学习沙盒，让研究者能专注于算法创新而非底层工程适配。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FKautenja_gym-super-mario-bros_ede1ca7d.png","Kautenja","Christian Kauten","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FKautenja_0e5c457d.png","If you listen closely you can hear the numbers.",null,"https:\u002F\u002Fgithub.com\u002FKautenja",[83,87],{"name":84,"color":85,"percentage":86},"Python","#3572A5",99.1,{"name":88,"color":89,"percentage":90},"Makefile","#427819",0.9,848,168,"2026-03-30T02:57:04","NOASSERTION","未说明","不需要 GPU",{"notes":98,"python":99,"dependencies":100},"该工具是一个基于 nes-py 模拟器的 OpenAI Gym 环境，用于运行超级马里奥兄弟游戏。它主要依赖 CPU 进行模拟器运算，无需显卡加速。安装推荐通过 pip 进行。在训练代码中建议移除 render 调用以获得显著的速度提升。默认动作空间包含 256 个离散动作，可通过 JoypadSpace 包装器限制为更简单的动作集。","3.6+",[101,102,103],"gym","nes-py","numpy",[13,54],[106,107,108,102],"openai-gym","super-mario-bros","super-mario-bros-2-lost-levels","2026-03-27T02:49:30.150509","2026-04-06T08:46:48.233584",[112,117,122,127,132,137],{"id":113,"question_zh":114,"answer_zh":115,"source_url":116},11128,"如何加速模拟器运行或训练速度？","可以通过升级到新版本来获得显著的速度提升。版本 3.0 使用了新的 C++ 后端模拟器（nes-py），在无头模式（headless mode）下可达到 450 FPS。如果结合超频 NES CPU 和帧跳过（frame-skip）机制，速度可进一步提升至接近 1000 FPS，与 OpenAI 的 atari-py 实现相当。此外，确保使用最新的 nes-py 库以获取性能优化。","https:\u002F\u002Fgithub.com\u002FKautenja\u002Fgym-super-mario-bros\u002Fissues\u002F43",{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},11129,"在使用多进程创建多个环境时，为什么一个环境结束会导致所有环境都结束？","这是因为如果在父进程中调用 `make` 函数，所有子进程生成的环境会拥有相同的进程 ID (PID) 和线程名，导致它们共享同一个指向模拟器的管道。解决方法是重构代码，确保在子进程内部调用 `make` 来初始化环境。例如，不要在主进程中创建 env 列表传给子进程，而是在子进程的启动函数中直接执行 `env = gym_super_mario_bros.make(...)`。后续版本（1.1.3+）已通过使用 uuid 生成唯一管道名修复了此问题，但最佳实践仍是在子进程中初始化环境。","https:\u002F\u002Fgithub.com\u002FKautenja\u002Fgym-super-mario-bros\u002Fissues\u002F44",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},11130,"如何准确检测马里奥是否到达了终点旗杆（Flag Get）？","不要仅依赖内存地址 0x001D 的值是否为 2 来判断，因为该值在马里奥从 ledge 掉落空中时也会变为 2，并非仅在爬旗杆时触发。根据 RAM 映射文档，0x001D 为 0x03 时才表示正在滑下旗杆。对于特定关卡（如 1-1），更可靠的方法是检查马里奥的 X 坐标（x_pos），当 `x_pos > 3155` 时通常意味着已到达终点。建议结合具体的坐标阈值和状态位进行综合判断。","https:\u002F\u002Fgithub.com\u002FKautenja\u002Fgym-super-mario-bros\u002Fissues\u002F91",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},11131,"如何在每个进程中运行多个模拟器实例以实现并行训练？","该库支持在每个进程中运行多个环境实例，这比传统的每个进程一个环境更灵活。你可以利用这一特性，在单个线程或进程中发送来自独立游戏的批处理帧到同一个神经网络。如果需要极高的并行度，也可以考虑结合使用 `nes-py` 和 `retro`，但需注意两者的奖励函数可能需要对齐以保持兼容性。对于多实例支持，请确保使用的是较新版本的 `nes-py`。","https:\u002F\u002Fgithub.com\u002FKautenja\u002Fgym-super-mario-bros\u002Fissues\u002F63",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},11132,"重置环境后出现图形闪烁或渲染错误怎么办？","如果在多次重置后出现背景或物体图像闪烁、裁剪等图形故障，但这通常只是可视化层面的问题（visualization bug）。只要智能体是“盲”的（即不直接依赖渲染图像作为输入，而是使用原始内存状态或预处理后的观测），这种显示错误不会影响训练逻辑或观测数据的有效性。如果确实影响观测，请尝试更新 `nes-py` 和 `gym-super-mario-bros` 到最新版本，因为部分渲染问题已在后续优化中修复。","https:\u002F\u002Fgithub.com\u002FKautenja\u002Fgym-super-mario-bros\u002Fissues\u002F72",{"id":138,"question_zh":139,"answer_zh":140,"source_url":131},11133,"通关阶段过渡时环境为什么会暂停几秒？","在马里奥清除一个阶段（如 1-1）进入下一阶段时，环境可能会出现短暂的停顿。这通常与底层模拟器的状态切换或渲染同步有关。虽然这是一个已知现象，但在高版本中通过优化 C++ 代码和调整帧率限制有所改善。如果停顿严重影响训练效率，建议在阶段过渡期间跳过某些步骤，或者确认是否使用了支持更高帧率的 `nes-py` 后端以减少延迟。",[142,147,152,157,162,167,172,177,182,187,192,197,202,207,212,217,222,227,232,237],{"id":143,"version":144,"summary_zh":145,"released_at":146},61543,"7.4.0","更新：新增 `RandomStages` 环境，可随机采样关卡。","2022-06-21T04:24:40",{"id":148,"version":149,"summary_zh":150,"released_at":151},61544,"7.3.3","修复 README 中指向 PyPI 的链接","2022-06-07T04:37:30",{"id":153,"version":154,"summary_zh":155,"released_at":156},61545,"7.2.3","较旧的迭代实现性能优于当前基于 NumPy 的向量化实现。为了获得更好的性能（以及更易读的代码），决定回退到旧实现。","2019-06-02T17:57:27",{"id":158,"version":159,"summary_zh":160,"released_at":161},61546,"7.2.2","更新 nes-py 的版本","2019-06-02T17:45:02",{"id":163,"version":164,"summary_zh":165,"released_at":166},61547,"7.1.6","在 `SuperMarioBrosRandomStagesEnv` 环境中实现 `get_action_meanings` 方法。","2019-01-22T02:40:47",{"id":168,"version":169,"summary_zh":170,"released_at":171},61548,"7.1.5","修复随机数生成器的名称，使其能与健身房包装器配合使用。","2019-01-21T03:14:28",{"id":173,"version":174,"summary_zh":175,"released_at":176},61549,"7.1.4","在 nes-py 基础环境中初始化随机数生成器，以确保与包装器兼容。","2019-01-21T03:07:35",{"id":178,"version":179,"summary_zh":180,"released_at":181},61550,"7.1.3","移除 nes-py 中已弃用的 `wrap` 功能的 deprecated 用法","2019-01-21T02:57:00",{"id":183,"version":184,"summary_zh":185,"released_at":186},61551,"7.1.2","更新包含破坏性变更的 nes-py 版本。","2019-01-21T02:53:03",{"id":188,"version":189,"summary_zh":190,"released_at":191},61552,"7.1.1","与项目及游戏整体的命名规范更加一致。","2019-01-16T16:17:34",{"id":193,"version":194,"summary_zh":195,"released_at":196},61553,"7.1.0","an environment for selecting random levels.","2019-01-16T16:13:26",{"id":198,"version":199,"summary_zh":200,"released_at":201},61554,"7.0.1","This is no longer necessary with the SimpleNES emulator.","2019-01-06T07:22:09",{"id":203,"version":204,"summary_zh":205,"released_at":206},61555,"7.0.0","nes-py deprecated the frameskip functionality in the environment, putting it in a wrapper instead.","2019-01-06T07:12:16",{"id":208,"version":209,"summary_zh":210,"released_at":211},61556,"6.0.4","Restore proper `reset` functionality of level environments and introduce a speed up to all calls to `reset` using save states instead of completely restarting the machine.","2019-01-06T03:33:20",{"id":213,"version":214,"summary_zh":215,"released_at":216},61557,"6.0.3","Update to nes-py 4.0.0 and the direct RAM access feature to reduce CPU instructions for RAM access in environments.","2019-01-05T22:02:55",{"id":218,"version":219,"summary_zh":220,"released_at":221},61558,"6.0.2","Update versions of dependencies in the setup.py script.","2019-01-05T21:54:06",{"id":223,"version":224,"summary_zh":225,"released_at":226},61559,"6.0.1","resolve bug in reset where the start screen image was showing to agents.","2018-12-29T02:00:00",{"id":228,"version":229,"summary_zh":230,"released_at":231},61560,"6.0.0","remove the unnecessary 1 added to the life counter in the info dictionary","2018-12-29T01:44:35",{"id":233,"version":234,"summary_zh":235,"released_at":236},61561,"5.0.1","resolve the graphical glitch by removing usage of the backup\u002Frestore feature in the nes-py emulator.","2018-12-29T01:44:01",{"id":238,"version":239,"summary_zh":240,"released_at":241},61562,"5.0.0","1. resolve a bug where touching a vine caused a reset in a level environment\r\n2. add the `up` controller input to the COMPLEX_MOVEMENT list","2018-10-10T03:15:09"]