Releases: google-deepmind/open_spiel
OpenSpiel 0.3.0
This release aims to address the problem that the new Python games were not compatible with the old version of OpenSpiel used by our pip package since it is too far behind (i.e. a fix to #503).
New Functionality
Games
- Add Dark Hex
- Add Kuhn (new Python game)
- Tic-Tac-Toe (Python game, updated to new API)
- Liar's Dice: new bidding variant, and configurable number of faces
- Trade Comm: add info state string
- Backgammon: expos action conversion functions available to Python
Algorithms
- Deep CFR (PyTorch)
- EVA (PyTorch)
- Policy gradients (PyTorch)
- Tabular Sarsa (C++)
- Tabular Q-Learning (C++)
- Sequence-form linear programming (C++)
- Variance Reduction baselines (VR-MCCFR) in Python
Metrics
- Distance to correlated and coarse-correlated equilibrium, for extensive-form games): CEDist and CCEDist (C++)
Examples
- Poker "fold, call, pot, all-in" (FCPA) abstracted no-limit example (Python)
- Generating multiple equilibria using CFR with random initial regrets and MCCFR
Process
- Move from Travis to Github Actions for continuous integration (CI)
- Update versions: TF, Jax, Julia
Misc.
- Allow registration of observers
- Distinction between perfect recall and imperfect recall example
- Information state trees
- JupyterLab environment (two Dockerfiles)
- Allow Python games from C++, now fully compatible with main C++ API
- Expose repr (Python)
Fixes and Documentation updates
- Fix network construction in Exploitability Descent example
- Fix GameParameters template compiler causing issues on older compilers
- Fix Observation consistency in Trade Comm
- Fix joining processes in Python AlphaZero
- Fix HistoryString as identifier in HistoryTree
- Improved documentation for the new observation API
- Many other smaller fixes
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
Files
The open_spiel-source-0.3.0.tar.gz bundles the necessary and some optional dependencies along with the core code (pybind11, Hanabi, ACPC, etc.) and should be able to be built directly without any additional downloads
OpenSpiel 0.2.0
This is our second release, mainly a stable version to use for our first entry in pip/PyPI.
Changes since last release:
Availability in PyPI as a source distribtuion. See installation page for instructions.
New Games
- Battleship
- Blackjack
- Clobber
- Hearts
- Klondike Solitaire
- Lewis Signaling
- Oh Hell
- Sheriff
- Slovenian Tarok
- Stones & Gems
New Algorithms
- CorrDist correlated equilibrium gap metrics for agent-form (AFCE, AFCCE)
- DQN (PyTorch)
- Deep CFR (TF2)
- External Sampling MCCFR (Python)
- Online Outcome Sampling (Lisy et al, 2015)
- NFSP (PyTorch)
- Policy Iteration
- Regression CFR (PyTorch) (Waugh et al. 2015, Morrill 2016)
- ResponseGraphUCB (Rowland et al. 2019)
New Support
- Build as a shared library using BUILD_SHARED_LIB
- Eigen
- Libtorch (PyTorch's C++ API)
- PyTorch (including 3 algorithms)
Bots
- Roshambo (rock paper scissors competition bots), optional using BUILD_WITH_ROSHAMBO
- xinxin (Nathan Sturtevant's Hearts bot), optional using BUILD_WITH_XINIXIN
Misc
- C++ LP solving via OR-Tools
- Correlated equilibrium solver via LP solver (C++)
- HyperGammon option to Backgammon
- Exact correlation device builder (for extensive-form correlated equilibria)
- Gambit normal-form game (.nfg) writer and reader
- Game Transform to start at a specific place in a game
- Observation framework
- Public State API and factored observation games (FOGs): public observations, action-observation histories, visualizations (Kovarik et al.)
- Repeated games
- Single-player turns in simultaneous move games
- Serialization and checkpointing in CFR, MCCFR, CFR-BR
- Serialization for kSampledStochastic chance modes
- Suggested alpha function for alpha-rank
- Supervised learning example for Hearts (based on xinxin self-play)
New utilities
- ActionView
- Random interface
- down_cast
- combinatorial helpers
New functionality, but untested or not fully supported
- C++ AlphaZero via TensorflowCC
- GAMUT integration
Removals
- dependency on sonnet (due to clashes with TF1; our uses replaced by simple_nets.py)
- games are no longer copyable
- PSRO version 1
Acknowledgments
Many thanks to DeepMind for their continued support of OpenSpiel.
Thank you to all of our contributors:
- https://github.com/deepmind/open_spiel/blob/master/docs/authors.md
- https://github.com/deepmind/open_spiel/graphs/contributors
Files
- The
open_spiel-0.2.0.tar.gz
andopen_spiel-0.2.0.zip
archives below include minimal dependencies necessary to build OpenSpiel, including some optional games, such as the Hanabi Learning Environment and universal_poker wrapper to ACPC poker code.
OpenSpiel 0.1.0
Release 0.1.0
This is our first release since we initially released OpenSpiel in August 2019.
The main purpose is to provide a stable version for anybody currently using the code base for research, or any other form of dependency, as we are planning a number of changes that could be disruptive. Please see #166 and #238 for details.
Changes since initial release
General support:
- MacOS
- Windows (via Subsystem for Linux)
- Docker install
- C++17 (from C++11)
- Clang (from g++)
- Julia API
- Colab
- pip installable package
New Algorithms
- AlphaZero (Python, C++)
- CFR-BR (C++, Python)
- CorrDist (analogues to NashConv for correlated equilibria, C++)
- Discounted CFR (Python)
- Double-Oracle solver
- General-sum Nash solver, iterated dominance
- Information Set MCTS (IS-MCTS)
- Linear CFR (Python)
- Outcome Sampling MCCFR (C++)
- PSRO v2 (with Deep RL Oracles)
New Games
- Cliff Walking
- Coordinated Matching Pennies
- Cursor Go
- Deep Sea
- Gambit .efg parser
- Gin Rummy
- GridMaze (Swift)
- Hanabi (via Hanabi Learning Environment)
- Hold’em Poker (via ACPC wrapper)
- Laser Tag
- Negotiation
- Othello
- Quoridor
- Skat
- Texas Hold’em (Swift)
- Tiny Hanabi
- Trade Comm
Misc. functionality
- Human player bot
- TF and Batch Trajectories (fast C++ inference via tensorflow)
- Player type, rather than int
- Visualization of game trees via graphviz
- Ludii wrapper
- MCTS-Solver
- Gradient clipping in policy gradients
- Multiplayer MCTS
- Serialization for games, states, game types
- Python-only games
- Utils library (json, logging, stats)
- Gambit .efg writers (C++, Python)
Removed:
- Python 2 support
In addition: many fixes.
Thank you to all our contributors!