Skip to content

OpenSpiel 1.0.0

Compare
Choose a tag to compare
@lanctot lanctot released this 16 Aug 14:01
· 1997 commits to master since this release

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: