Skip to main content

A Framework for Reinforcement Learning in Games (forked from OpenSpiel)

Project description

Map Games Proto: A Framework for Reinforcement Learning in Games

Original Project

Map Games Proto is a fork of OpenSpiel, maintained by LogitGames. This package is available on PyPI as map-games-proto.

OpenSpiel is a collection of environments and algorithms for research in general reinforcement learning and search/planning in games. OpenSpiel supports n-player (single- and multi- agent) zero-sum, cooperative and general-sum, one-shot and sequential, strictly turn-taking and simultaneous-move, perfect and imperfect information games, as well as traditional multiagent environments such as (partially- and fully- observable) grid worlds and social dilemmas. OpenSpiel also includes tools to analyze learning dynamics and other common evaluation metrics. Games are represented as procedural extensive-form games, with some natural extensions. The core API and games are implemented in C++ and exposed to Python. Algorithms and tools are written both in C++ and Python.

Installation

Install from PyPI:

pip install map-games-proto

Note: The package is installed as map-games-proto but imported as open_spiel:

import open_spiel

OpenSpiel visual asset

Index

Please choose among the following options:

For a longer introduction to the core concepts, formalisms, and terminology, including an overview of the algorithms and some results, please see OpenSpiel: A Framework for Reinforcement Learning in Games.

For an overview of OpenSpiel and example uses of the core API, please check out our tutorials:

Citation

This project is forked from OpenSpiel. If you use this framework in your research, please cite the original OpenSpiel paper:

@article{LanctotEtAl2019OpenSpiel,
  title     = {{OpenSpiel}: A Framework for Reinforcement Learning in Games},
  author    = {Marc Lanctot and Edward Lockhart and Jean-Baptiste Lespiau and
               Vinicius Zambaldi and Satyaki Upadhyay and Julien P\'{e}rolat and
               Sriram Srinivasan and Finbarr Timbers and Karl Tuyls and
               Shayegan Omidshafiei and Daniel Hennes and Dustin Morrill and
               Paul Muller and Timo Ewalds and Ryan Faulkner and J\'{a}nos Kram\'{a}r
               and Bart De Vylder and Brennan Saeta and James Bradbury and David Ding
               and Sebastian Borgeaud and Matthew Lai and Julian Schrittwieser and
               Thomas Anthony and Edward Hughes and Ivo Danihelka and Jonah Ryan-Davis},
  year      = {2019},
  eprint    = {1908.09453},
  archivePrefix = {arXiv},
  primaryClass = {cs.LG},
  journal   = {CoRR},
  volume    = {abs/1908.09453},
  url       = {http://arxiv.org/abs/1908.09453},
}

Original Repository

This is a fork of the original OpenSpiel repository by DeepMind.

Versioning

We use Semantic Versioning.

Next

  • Make CC analogs of these classes: class DeckStatus(PClass): idx = field(type=int) uuid = field(type=str) faceup_stack = field(type=(FaceupCardStack, type(None)), initial=None) faceup_spread = field(type=(FaceupCardSpread, type(None)), initial=None) facedown_stack = field(type=(FacedownCardStack, type(None)), initial=None) facedown_spread = field(type=(FacedownCardSpread, type(None)), initial=None) discard_faceup_stack = field(type=(FaceupCardStack, type(None)), initial=None) discard_facedown_stack = field(type=(FacedownCardStack, type(None)), initial=None)

The command to run the tests is:

python open_spiel/python/tests/games_interstate_test.py

You can also run specific test methods if you want:

Run just one test

python open_spiel/python/tests/games_interstate_test.py GamesInterstateTest.test_default_parameters

Run with verbose output

python open_spiel/python/tests/games_interstate_test.py --verbose

If you want to run all Python tests in the test suite, you could do:

Run all tests (if you have pytest installed)

pytest open_spiel/python/tests/

Or run all game tests matching a pattern

python -m unittest discover open_spiel/python/tests/ "games_*_test.py"

The test uses absltest which is Google's testing framework, so it can be run directly as a Python script as shown above.

When you encounter a build error like "No rule to make target", follow these steps:

  1. Try running make games directly from the build directory: cd /Users/jh/Projects/map_games_proto/build make games
  2. This often resolves stale build state issues.
  3. If that doesn't work, try a clean rebuild: cd /Users/jh/Projects/map_games_proto/build rm -rf games/CMakeFiles/games.dir/interstate/* make games
  4. For more serious issues, do a full clean and reconfigure: cd /Users/jh/Projects/map_games_proto/build rm -rf * cmake ../open_spiel make games
  5. Use the build script from the project root: cd /Users/jh/Projects/map_games_proto ./open_spiel/scripts/build_only.sh interstate

Quick Rebuild and Test Commands:

Single command chain: ./open_spiel/scripts/build_only.sh interstate && pip install -e . --no-build-isolation && python open_spiel/python/tests/games_interstate_test.py

Or broken down:

  1. Rebuild just the interstate game (fastest C++ build): ./open_spiel/scripts/build_only.sh interstate
  2. Update Python bindings (development install): pip install -e . --no-build-isolation
  3. Run the test: python open_spiel/python/tests/games_interstate_test.py

Even Faster (if you're iterating):

After the first build, you can often skip the pip install step if you're only changing C++ implementation (not headers or interfaces):

./open_spiel/scripts/build_only.sh interstate && python open_spiel/python/tests/games_interstate_test.py

This typically takes less than 10 seconds for rebuilding just the interstate game and running the tests!

Most Common Commands

./open_spiel/scripts/build_only.sh interstate ./build/examples/console --game=interstate python open_spiel/python/tests/games_interstate_test.py ./open_spiel/scripts/buildpiptest.sh interstate ./open_spiel/scripts/buildtest.sh interstate

TODO:

  • Figure out how to enumerate (or assign action indices) to all the ways that someone can claim a path. Maybe it means discrete actions for selecting resources? There needs to be some 1-n translation of web-site actions to granular game actions.
  • Figure out "MaxChanceOutcomes" for InterstateGame.
  • Finish implementing "DoApplyAction" for the Faceup Spot Actions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

map_games_proto-1.6.8.4.tar.gz (5.3 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

map_games_proto-1.6.8.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

map_games_proto-1.6.8.4-cp310-cp310-macosx_15_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

Details for the file map_games_proto-1.6.8.4.tar.gz.

File metadata

  • Download URL: map_games_proto-1.6.8.4.tar.gz
  • Upload date:
  • Size: 5.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for map_games_proto-1.6.8.4.tar.gz
Algorithm Hash digest
SHA256 b5bd8892d3564bc2927a834a668c2b304983e0f171abf65fefb53f28f083cb53
MD5 9d7c714bc2061ec987a2fdab1973521c
BLAKE2b-256 357cc8bf8e9209da1f431cdf7021839870df8f565637b0425a594388bce7cdc5

See more details on using hashes here.

File details

Details for the file map_games_proto-1.6.8.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for map_games_proto-1.6.8.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b22155fc106e6fea0f6dafbda1179b5bdf60e2518cc3b86c762f52c0a3c33ea
MD5 b6e738bd1c825f5b764ffa73ecad4d8a
BLAKE2b-256 8c85ea3ef710318adfef04b87f03e591fd0083f8238fe4c9f3cec31d7965ed11

See more details on using hashes here.

File details

Details for the file map_games_proto-1.6.8.4-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for map_games_proto-1.6.8.4-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 ad6d7e7ca1e49550c84265fa203fa5f2a668b37242b26bdccd1e9f1b02aa493a
MD5 41c77ff6f774c5b0567972385ae5e314
BLAKE2b-256 0ee78213848cfb39388d85fa0bf132b230e5438a9d1a0830dd6e0f77a2874e6d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page