OpenSpiel 1.0.0
This is our first major stable release and fully-supported entry into pip/PyPI (binary distribution wheels and build from source).
New functionality since v0.3.1
Games
- Dark Chess
- Dark Hex
- Imperfect recall variants of:
- Dark Hex
- Liar's Dice
- Phantom Tic-Tac-Toe
- Kriegspiel
- Mean-field games:
- Crowd modelling (C++ and Python)
- Crowd modelling 2D (C++)
- Predator prey (Python)
- Python games:
- Iterated prisoner's dilemma
- Tic-Tac-Toe
- Reconnaissance Blind Chess
Algorithms:
- Deep CFR (JAX)
- DQN (C++, via Libtorch)
- DQN (JAX)
- Fixed Strategy Iteration CFR (FSICFR) (Neller & Hnath '11)
- Joint Policy-Space Response Oracles, JPSRO (Marris et al. '21)
- Mean-field game algorithms:
- best response / NashConv
- Fictitious Play
- Mirror Descent
- NFSP (JAX)
- Tabular best response MDP (C++): alternative best response, including proper support for perfect info games and imperfect recall
Bots:
- UCI (chess-playing) Bot
- Gin Rummy: Simple Bot
API
- golang
- Mean-field games
Examples
- DQNBR: computing an approximate best response using DQN
- FSICFR in Liar's Dice
- JSPRO usage example
- MCCFR on imperfect recall games
- Mean-field games: JAX DQN
Support and Process changes:
- Building and testing of pip binary distribution wheels via cibuildwheel (nox tests removed)
- Python dependencies: make most dependencies optional, depend only on those truly required
- pybind11: use smart_holder (and depend on smart_holder branch)
- Support g++ again (used for building bdist wheels)
- Support Python 3.9
Misc
- AlphaZero (C++ Libtorch) support for checkpointing
- Connect Four: add ResampleFromInformationState
- Gin Rummy: observer and parameterizing the game size
- Game-specific functions: chess, backgammon
- Poker: add half-pot abstraction, add total money, support subgames
- Utilities: bit permutation function
Fixes and Documentation
We added two video tutorials (by Marc & Ed) linked from the main site. We also added a link to the main page about building and using OpenSpiel as a C++ library.
- AlphaZero Libtorch: construct loss from policy logits
- AlphaZero (TF-based): document status externally (unsupported)
- Alpha-rank visualization: minor fix to deprecated matplotlib function
- Argslib: fix multiple command-line arguments
- Build: fix to enable optimizations by default
- Docker build: fix to commands and documentation improvements
- CFR tabular average policy computation more efficient
- Refactor and cleanup of Python MCCFR
- OshiZumo: fix side swap
- PolicyBot: use keys instead of legal actions
- Poker: add card set and other tests
- Python games: many improvements and better overall support
- PyTorch Deep CFR: fix MLP initialization issues and policy_net sizes parameter
- Scripts: add caching to install and build scripts
- Tabular Sarsa and Q-Learning (C++)
- Tests: refactoring, add new tests that allow disabling of legal masks check and game-specific state-checker hook
Thanks
Thanks to DeepMind for continued support of development and maintenance of OpenSpiel.
Thanks to all of our contributors:
- Core Team: https://github.com/deepmind/open_spiel/blob/master/docs/authors.md
- All Contributors: https://github.com/deepmind/open_spiel/graphs/contributors