Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/benzyx/DomRL
DomRL is a simulation environment for the card game Dominion, created by Donald X Vaccarino, meant to simplify the development and testing of various AI strategies, specifically Reinforcement Learning algorithms.
https://github.com/benzyx/DomRL
Last synced: 7 days ago
JSON representation
DomRL is a simulation environment for the card game Dominion, created by Donald X Vaccarino, meant to simplify the development and testing of various AI strategies, specifically Reinforcement Learning algorithms.
- Host: GitHub
- URL: https://github.com/benzyx/DomRL
- Owner: benzyx
- License: mit
- Created: 2020-07-28T19:01:51.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-03-25T05:56:11.000Z (over 3 years ago)
- Last Synced: 2024-08-02T15:36:46.702Z (3 months ago)
- Language: Python
- Homepage:
- Size: 150 KB
- Stars: 17
- Watchers: 4
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DomRL
DomRL is a simulation environment for the card game Dominion, created by Donald X Vaccarino, meant to simplify the development and testing of various AI strategies, specifically Reinforcement Learning algorithms.
The goal is to make an engine that stores a serializable state of the game and exposes a comprehensive state object to agents, which contain all the information that human players would have. This improved state management will be helpful for building more complex AI agents, beyond simple priority logic supported by most agents.
The engine currently supports all cards in Base Dominion.
## Usage
If you want to play from the command line, simply run:
```
python main.py
```Currently, this runs two `StdinAgent` instances against each other, so you can choose all the moves from command line.
If you want to run a game from a Jupyter notebook, between two separate agents, the following should suffice:
```
import engine.game.GameGame(YourAgent(...), YourAgent(...)).run()
```## Writing a Bot
Implement an agent, which is a class derived from `engine.agent.Agent` that implements
```
policy(self, state_view, decision) -> List
```where the output is the list of indices corresponding to the moves taken in this decision object.
## Upcoming Features
The following features are necessary before this project can reach an acceptable state for proper RL agent development.
- Testing for correctness.
- Baseline bots (such as big money)
- Undo feature (mostly for human convenience)
- Vector encoding interface for decisions.
- Improved logging (currently do not log draws), and unambiguous events (topdecking from hand vs topdecking from supply pile).