Release Notes#

PettingZoo 1.23.1#

Released on 2023-05-24 - GitHub - PyPI

PettingZoo 1.23.1 Release Notes:

This release is a small hotfix to fix compatibility issues with Shimmy and other small bugs.

Bug Fixes:

  • Fix bug in API test test_action_flexibility() (#986)
    • Fixes tests for Shimmy's OpenSpiel wrapper
  • Remove ParrellEnv.seed() (#987)
  • Update RLlib requirements (#992)

Documentation Updates:

  • Add info about aec and parallel APIs to homepage (#985)
  • Create CITATION.cff (#990)
  • Added Carla gym to (#991)

Full Changelog: 1.23.0...1.23.1

PettingZoo 1.23.0#

Released on 2023-05-15 - GitHub - PyPI

PettingZoo 1.23.0 Release Notes:

This release finishes the process of standardizing the PettingZoo API to fully match Gymnasium. The deprecated env.seed() method has been removed in favor of env.reset(seed=seed), and the return_info argument from reset() has been removed—info is now always returned on reset.

New features include full support for serialization using Pickle, and updated testing: pickle tests, improved API test, and re-written seed test (matching Gymnasium). The library has also been updated to use pyproject.toml, to make installation more consistent and reliable, and to comply with PEP 621 standards.

This release includes significant documentation updates: full installation and usage examples for each environment type (Atari, Butterfly, Classic, MPE, SISL), 9+ new third-party-environments, new action masking documentation, new LangChain tutorial, updated CleanRL, Tianshou, and RLlib) tutorials, and more.

Breaking Changes:

To ensure full consistency between the PettingZoo and Gymnasium API’s, the following changes have been made:

The deprecated environment seed() method has been fully removed.

  • To seed an environment, call env.reset(seed=0)

The return_info argument has been removed from the reset() function.

  • Calls toreset() will now always return observation and info.

New Features and Improvements

  • Action masking is now supported using either observation[action_mask] or info[action_mask], with documentation and examples (#953)
  • Replace with pyproject.toml (#875)
  • Remove return_info argument from reset() (#890)
  • Add type hinting for utils and base environments (#964)
  • Add aec_wrapper_fn to match parallel_wrapper_fn (#879)
  • Update SISL Waterworld environment to increase maximum acceleration, for smoother behavior (#882)
  • Update MPE simple_spread agent reward (#894), update all MPE envs to update position before velocity, matching the original paper (#970)

Bug Fixes:

  • Rename BaseParallelWraper to BaseParallelWrapper (fixed typo) (#876, #908)
  • Removed casting actions to int in parallel_to_aec conversion (#975)
  • Fix broken Tianshou tutorial and update dependencies (#980)
  • Fix an issue where MPE envs would render black screen when using the rgb_array mode (#874)
  • Fix failing CI tests in GitHub workflows (#886)
  • Fix minor linting issues with pre-commit hooks (#835)
  • Resolve a large number of pytest warnings (#897)
  • Remove unnecessary lines in MPE code (#891)
  • Update Tianshou and CleanRL tutorials to work with the new API changes (#984)

Documentation Updates:

  • Add full installation and usage examples for each environment type (#906)
  • Update Third-Party Environments with two new custom board game environments (gobblet-rl and cathedral-rl) (#907)
  • Add full documentation for wrappers (including Shimmy compatibility wrappers) (#904, #942)
  • Add LangChain tutorial (#979)
  • Updated EnvironmentCreation tutorial (#903, #972)
  • Updated Tianshou Tutorial (#980)
  • Update README with getting started information (#950)
  • Add installation instructions to Getting Started documentation page (#968)
  • Update docs contributing README (#883)
  • Update homepage to include video demonstrating environments, cleanup homepage text, add logo (#954, #960)

Full Changelog: 1.22.3...1.23.0


Released on 2023-03-20 - GitHub - PyPI

This release has been yanked due to breaking API changes. We are working hard to address this in the next release.

What's Changed

Bug Fixes:

Documentation Updates:

Full Changelog: 1.22.3...1.22.4


Released on 2022-12-28 - GitHub - PyPI

What's Changed

New Contributors

Full Changelog: 1.22.2...1.22.3


Released on 2022-11-11 - GitHub - PyPI

What's Changed

New Contributors

Full Changelog: 1.22.1...1.22.2


Released on 2022-10-25 - GitHub - PyPI

What's Changed

Full Changelog: 1.22.0...1.22.1


Released on 2022-10-07 - GitHub - PyPI

Major API change: done -> termination and truncation, matching Gymnasium's new API.
The dependency gym has been switched with gymnasium, which is maintained.

What's Changed

New Contributors

Full Changelog: 1.21.0...1.22.0


Released on 2022-09-24 - GitHub - PyPI

What's Changed

  1. As part of the Gym update to 0.26, the following change has been made:
    • done -> termination and truncation: The singular done signal has been changed to a termination and truncation signal, where termination dictates that the environment has ended due to meeting certain conditions, and truncation dictates that the environment has ended due to exceeding the time/frame limit.
  2. Butterfly/Prospector, Classic/Mahjong, Classic/Doudizhu, Classic/Backgammon, Classic/Checkers has been pulled.
  3. Some QOL improvements for development, such as moving pyright to pre-commit and enforcing pydocstyle.
  4. Massive website upgrade.

List of Changes

New Contributors

Full Changelog: 1.20.1...1.21.0


Released on 2022-08-07 - GitHub - PyPI

Refer to the previous version (1.20.0) for list of changes, this version simply exists due to technical problems with publishing to PyPI.


Released on 2022-08-07 - GitHub - PyPI

What's Changed

New Contributors

Full Changelog: 1.19.1...1.20.0


Released on 2022-06-21 - GitHub - PyPI

  • Update Gym requirement version


Released on 2022-06-21 - GitHub - PyPI

  • Streamlined all envs to have consistent folder structures
  • Added info as output of reset to be consistent with new Gym API

0.18.1: 1.18.1#

Released on 2022-04-29 - GitHub - PyPI

  • Massive overhaul to Knight Archers Zombies, version bumped
  • Changed Atari games to use minimal observation space by default, all versions bumped
  • Large bug fix to all MAgent environments, versions bumped
  • MAgent environments now have Windows binaries
  • Removed Prison environment
  • Multiwalker bug fix, version bumped
  • Large number of test fixes
  • Removed manual_control with new manual_policy method
  • Converted seed method to argument to reset to match new Gym API

(The PettingZoo 1.18.0 release never existed due to technical issues)


Released on 2022-03-15 - GitHub - PyPI

  • Changed metadata naming scheme to match gym. In particular render.modes -> render_modes and video.frames_per_second -> render_fps
  • Fixed bad pettingzoo import error messages caused by autodeprication logic


Released on 2022-03-05 - GitHub - PyPI

  • KAZ: Code rewrite and numerous fixes, added manual control capabililty
  • Supports changes to seeding in gym 0.22.0
  • Fixed prison state space, bumped version
  • Fixed battlefield state space
  • Increased default cycles in api tests (making them catch more errors than before)
  • Added turn-based to parallel wrapper
  • Moved magent render logic to Magent repo


Released on 2022-01-28 - GitHub - PyPI

  • Bug fixes to KAZ, pistonball, multiwalker, cooperative pong. Versions bumped.
  • Removed logo from gather, version bumped.
  • Added FPS attribute to all environments to make rendering easier.
  • Multiwalker now uses pygame instead of pyglet for rendering
  • Renamed to_parallel and from_parallel to aec_to_parallel and parallel_to_aec
  • Added is_parallelizable metadata to ensure that the aec_to_parallel wrapper is not misused
  • Fixed the API tests to better support agent generation


Released on 2021-12-05 - GitHub - PyPI

-Bug fixes and partial redesign to pursuit environment logic and rendering. Environment is now learnable, version bumped
-Bug fixes and reward function redesign for cooperative pong environment, version bumped
-Ball moving into the left column due to physics engine imprecision in pistonball no longer gives additional reward, version bumped
-PyGame version bumped, no environment version bumps needed
-Python 3.10 support
-Fixed parallel API tests to allow environments without possible_agents


Released on 2021-10-19 - GitHub - PyPI

  • Fixed unnecessary warnings generated about observation and action spaces
  • Upstreamed new rlcard version with new texas holdem no limit implementation, bumped version to v6
  • Updated python chess dependency, bumped version to v5
  • Dropped support for python 3.6, added official support for 3.9
  • Various documentation fixes


Released on 2021-10-08 - GitHub - PyPI

  • API changes
    • new observation_space(agent), action_space(agent) methods that retreive the static space for an agent
    • possible_agents, observation_spaces, action_spaces attributes made optional. Wrappers pass these attributes through if they exist.
    • parallel environment's agents list contains agents to take next step, instead of agents that took previous step.
    • Generated agents now allowed, agents can be created any time during an episode. Note that agents cannot resurect, once they are done, they cannot be readded to the environment.
  • Fixed unexpected behavior with close method in pursuit environment
  • Removed pygame loading messages
  • Fix pillow dependency issue
  • Removed local ratio arg from pistonball environment
  • Gym 0.21.0 support
  • Better code formatting (isort, etc.)


Released on 2021-08-19 - GitHub - PyPI

  • Fix scipy and pyglet dependencies for sisl environments
  • Fix pistonball rendering (no version bumps)
  • Update rlcard to v1.0.4 with a fix for texas hold'em no limit; bump version


Released on 2021-08-02 - GitHub - PyPI

-Upgraded to RLCard 1.0.3, bumped all versions. Also added support for num_players in RLcard based environments which can have variable numbers of players.
-Fixed Go and Chess observation spaces, bumped versions
-Minor Go rendering fix
-Fix PyGame dependency in classic (used for rendering)
-Fixed images being loaded into slow PyGame data structures, resulting in substantial speedups in certain Butterfly games (no version bump needed)
-Fix odd cache problem using RGB rendering in cooperative pong
-Misc fixes to tests and warning messages


Released on 2021-07-17 - GitHub - PyPI

  • Added continuous action support for MPE environments as an argument
  • Added pixel art rendering for Texas Hold'em No Limit, Rock Paper Scissors and Go
  • Fixed pixel art rendering in Connect Four
  • Fixed bug in order of black/white pieces in Go observation space, bumped version
  • Changed observation in cooperative pong to include entire screen, bumped version


Released on 2021-06-12 - GitHub - PyPI

  • Created no action timer for pong to encourage players to serve (before there was no penalty to stalling the game forever). Bumped version of all pong environments (pong, basketball_pong, volleyball_pong, foozpong, quadrapong)
  • Fixed Multiwalker collision bug, bumped version
  • Add state method to Magent and MPE
  • Merged rock paper scissors and rock paper scissors lizard spock into a single environment that takes the number of actions as an argument, and adds the n_cycles argument to allow for a single game to be sequential. Bumped version
  • Removed depricated env_done method
  • Fixed order of channels in combined_arms observation
  • Added pixel art based RGB rendering to connect four. This will also be added to rock paper scissors, Go and Texas Holdem in upcoming releases
  • Moved pettingzoo CI test files outside of the repo
  • Changed max cycles test to be more robust under agent death


Released on 2021-05-14 - GitHub - PyPI

  • fixed multiwalker bug, bumped environment version.
  • Added support for custom render modes in render_test


Released on 2021-04-16 - GitHub - PyPI

  • Added argument to seed test to disable the seed()-reset() test. Docs updated.
  • Minor changes to MAgent rendering


Released on 2021-04-04 - GitHub - PyPI

  • Fixed arbitrary calls to observe() in classic games (especially tictactoe and connect 4)
  • Fixed documentation for tictactoe and pistonball


Released on 2021-03-27 - GitHub - PyPI

  • Fixed MAgent bugs and changed default to non-minimap mode, bumped versions.
  • Fix transient installation error.


Released on 2021-03-08 - GitHub - PyPI

Minor miscellaneous fixes and small feature additions:

  • Added .unwrapped
  • Minor fix to from_parallel
  • removed warning from close()
  • fixed random demo
  • fixed prison manual control


Released on 2021-02-21 - GitHub - PyPI

  • Changed default values of max_cycles in pistonball, prison, prospector
  • Changed pistonball default mode to continuous and changed default value for local_ratio
  • Refactored externally facing tests and utils
  • Bumped pymunk version to 6.0.0 and bumped versions of all environments which depend on pymunk
  • Added state() and state_space to API, implemented methods in butterfly environments
  • Various small bug fixes in butterfly environments.
  • Documentation updates.


Released on 2021-01-29 - GitHub - PyPI

Fix miscellaneous annoying loading messages for butterfly environments. Improvements to save_obs and related functionality. Fixes to KAZ.


Released on 2021-01-13 - GitHub - PyPI

Fixes MPE rendering dependency, fixes minor left over dependencies on six, fixes issues when pickling Pistonball. No versions were bumped.


Released on 2021-01-05 - GitHub - PyPI

Refactors tests to be generally usable by third party environments. Added average reward calculating util, and made minor improvements to random_demo and save_obs utils. Removed black death argument from KAZ (it's now a wrapper in supersuit). Redid how illegal actions are handled in classic, by making observations dictionaries where one element is the observation and the other is a proper illegal action mask. Pistonball was refactored for readability, to run faster and to allow the number of pistons to be varied via argument. Waterworld was completely refactored with various major fixes. RLCard version was bumped (and includes bug fixes impacting environments). MAgent rendering looks much better now (versions not bumped). Major bug in the observation space of pursuit is fixed. Add Python 3.9 support. Update Gym version. Fixed multiwalker observation space, for good this time, and made large improvements to code quality. Removed NaN wrapper.


Released on 2020-11-26 - GitHub - PyPI

Pistonball reward and miscellaneous problems. Fixed KAZ observation and rendering issues. Fix Cooperative Pong issues with rendering. Fixed default parameters in Hanabi. Fixed multiwalker rewards, added arguments. Changed combined_arms observation and rewards, tiger_deer rewards. Added more arguments to all MAgent environments.


Released on 2020-11-07 - GitHub - PyPI

General: Substantial API upgrades (see, overhaul of the handling of agent death. In particular, the agents list now only contains live agents (agents which have not been done). Moved significant logic from wrappers to raw environment. Renamed max_frames to max_cycles and made the meaning of this argument consistent across all environments.

Atari: Fixed entombed_cooperative rewards, add support for custom ROM directory specification

Butterfly: Bug fixes in all environment, bumped PyGame and PyMunk versions

Classic: Bumped RLCard version, fixed default observation space for many environments depending on RLCard

SISL: Bug fixes in all environments

MAgent: Fixes to observation space of all environments

Bumped versions of all environments. There hopefully will be no more major API changes after this.