This release adds new games, bug fixes, and process + support changes.
Support and Process changes
- Add Python 3.12 support
- Add Ubuntu 24.04, macos-13, and macos-14 to CI tests
- Remove Python 3.8 support
- Remove use of nox and noxfile.py
- Remove several things that we unused: HIGC, Ludii, eigen
- Remove C++ AlphaZero based on TF (LibTorch C++ implementation still available)
- Remove macos-12 and Ubuntu 20.04 from CI test
- Remove unfinished implementation of Yacht
Games
- Coalitional games from (Gemp et al., Approximating the Core via Iterative Coalition Sampling)
- Middle-Eastern Dominoes (python)
- Spades
- Team Dominoes (python)
- Twixt
Algorithms
- CFR (JAX implementation)
- Core Lagrangian from (Gemp et al., Approximating the Core via Iterative Coalition Sampling)
- Core via Linear Programming (Yan & Procaccia, If You Like Shapley, then You'll Love the Core)
- EFR from (Morrill et al. Efficient Deviation Types and Learning for Hindsight Rationality in Extensive-Form Games)
- max^n (Luckhardt, C. Irani, K., An algorithmic solution of N-person game)
- Mean-Field PSRO (by Muller et al. Learning Equilibria in Mean-Field Games: Introducing Mean-Field PSRO)
- MF-PPO (Algumaei et al, Regularization of the policy updates for stabilizing Mean Field Games)
- PIMC search (Long et al. 2010, Understanding the Success of Perfect Information Monte Carlo Sampling in Game Tree Search)
- SGD in adidas_solvers, from (Gemp et al., Approximating Nash Equilibria in Normal-Form Games via Stochastic Optimization)
- Voting-as-Evaluation (VasE) voting methods from (Lanctot et al., Evaluating Agents using Social Choice Theory)
Examples
- Add example of applying VasE to Chatbot Arena
Improvements and other additions
- Several additions for chat game python game
- Add prisoner's dilemma to the docs
- Add a warning when loading games with known issues
- Add Colab example for how to use OpenSpiel with mean field games
- Add parser for PrefLib data files
- Add missing API methods in Julia API
Fixes
- Fix cards display in Dou Dizhu
- Fix dqn.cc build error
- Fix mean logit calculation in NeuRD loss for R-NaD
- Fix example.py to support games with simultaneous moves
- Fix trade_comm's: expose observer's trade proposal if one was made
- Fix numpy incompatibility change for PSRO's joint to marginal probability function
- Fix bridge observation tensor
- Fix chess state serialization
- Several fixes to universal poker (serialization, betting abstraction, observation tensors)
- Fix float tolerance in OOS test
- Normalize GTP responses to lower case
- Fix deprecated use of mask in LibTorch C++ DQN to PyTorch 2.0
- Fix bug in loading of PyTorch DQN checkpoints
- Convert Quoridor movement actions IDs to be relative to the state
Several other miscellaneous fixes and improvements.
Acknowledgments
Thanks to Google DeepMind for continued support of development and maintenance of OpenSpiel.
Thanks to all of our contributors: