Multi-Agent Reinforcement Learning Environment for the board game Gobblet using PettingZoo.
Project description
gobblet-rl
Interactive Multi-Agent Reinforcement Learning Environment for the Gobblet board game using PettingZoo and Pygame.
Allows for users to play in the same environment, and even play against RL agents trained with Tianshou.
Installation
Using pip (recommended)
pip install gobblet-rl
Local
git clone hhttps://github.com/elliottower/gobblet-rl.git
cd gobblet-rl
pip install -e .
Usage
Setting up a basic environment
In a Python shell, run the following:
from gobblet import gobblet_v1
env = gobblet_v1.env()
Play against a DQL agent trained with Tianshou
In the terminal, run the following:
python gobblet/example_tianshou_DQN.py --epoch 50 --player 1 --cpu-players 2
This will train a DQN model from Tianshou for 50 epochs, and launch an interactive game against the pre-trained agent.
Use the argument --cpu-player
to determine the number of CPU agents (1 or 2) and --player
to choose which agent goes first (human first: 0, CPU first: 1)
Play an interactive game
In the terminal, run the following:
python gobblet/examples/example_user_input.py"
To select a piece size, press a number key 1
, 2
, or 3
, or press space
to cycle through pieces. Placing a piece is done by clicking on a square on the board. A preview will appear showing legal moves with the selected piece size. Clicking on an already placed piece will pick it up and prompt you to place it in a new location (re-placing in the same location is an illegal move).
Create screen recording of a game
In the terminal, run the following:
python gobblet/examples/example_record_game.py"
This will save a screen recording of a game to gobblet/examples/game.gif
Watch a game between two basic CPU agents
In the terminal, run the following:
python gobblet/examples/example_basic.py"
This will launch a game with two basic agents choosing random actions. This file can be used as a starting point for prototyping future methods.
Command Line Arguments
Game Modes
All scripts besidesexample_basic.py
(no support for interactive play) take the following arguments:
The default game mode is human vs CPU, with the human playing as red and CPU as yellow.
--player 1
sets the human player as yellow, with the CPU moving first as red.
--cpu-players 1
will launch a game with one CPU agent and one human agent. (default)
--cpu-players 0
will launch a game with no CPU agents, taking interactive input for both agents.
--cpu-player 2
will launch a game with two CPU agents, and takes no interactive input.
Display Modes
example_basic.py
takes the following arguments to change display mode:
--render_mode="human"
will render the game board visually using pygame. Player 1 plays red and goes first, while player 2 plays yellow.
When playing interactively, possible moves can be previewed by hovering the mouse over each square. To move a piece which is already placed, simply click on it.
--render_mode="text"
will render a 3x3 board only showing the topmost pieces (pieces which are covered by others, or 'gobbled', are hidden):
TURN: 2, AGENT: player_1, ACTION: 51, POSITION: 6, PIECE: 3
| |
- | - | -3
_______|_______|_______
| |
- | - | +2
_______|_______|_______
| |
- | - | -
| |
--render_mode="text_full"
will render three different 3x3 boards representing the small, medium and large pieces. This gives full information about pieces which are covered or 'gobbled' by other pieces. :
TURN: 3, AGENT: player_0, ACTION: 42, POSITION: 6, PIECE: 5
SMALL MED LARGE
| | | | | |
- | - | - - | - | - - | - | +5
_______|_______|_______ _______|_______|_______ _______|_______|_______
| | | | | |
- | - | -2 - | - | - - | - | -
_______|_______|_______ _______|_______|_______ _______|_______|_______
| | | | | |
- | - | - - | - | - - | - | -6
| | | | | |
Testing
Testing can be done via pytest:
git clone https://github.com/elliottower/gobblet-rl.git
cd gobblet-rl
pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file gobblet-rl-1.2.3.tar.gz
.
File metadata
- Download URL: gobblet-rl-1.2.3.tar.gz
- Upload date:
- Size: 32.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8cf79a50256daea7c49088a08836ab52a6502e06900e2d82ef7b83f3e1eb841d |
|
MD5 | b2d77cfe184173eaf5ebb1d47d87386d |
|
BLAKE2b-256 | a9104a84d7b4a8cedc7a790f600f45666136bb85b5e1d745c8ed844c9674913d |
File details
Details for the file gobblet_rl-1.2.3-py3-none-any.whl
.
File metadata
- Download URL: gobblet_rl-1.2.3-py3-none-any.whl
- Upload date:
- Size: 46.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1804f4cc3a03210b4e93bbd73b3e8ec91c524f2be5c2f37714b5c343d7e42a1a |
|
MD5 | ced09f9665ed48d8f0a438909df2119c |
|
BLAKE2b-256 | f134ac2077e9c1b6a7973dfae6af7a4f453668739cb9d9b0e8e919155c118dd2 |