This project is for educational purposes: its current status should represent the student's starting point.
A python3 module that knows Hanabi:
- card deck and dealer,
- CLI (command line interface), lets you play and verifies that your moves are allowed (currently limited to 2 players),
- GUI (to do),
- AI (currently only one, and it is cheating).
There are many possible tasks:
-
read the current state of the module,
- complete its documentation when needed,
- share with everyone this improvement,
-
improve the CheaterAI -- answer the question (still an open question afaik) what is the best possible score, statistically speaking.
-
add AIs. Some suggestions:
- RandomAI (plays randomly)
- DirectAI (plays whatever is hinted)
- BGAAI (plays Board Game Arena's standard)
- HansimAI (see below)
- train a machine learning (I'm not sure if this will give anything interesting without powerful CPU/GPU resources)
- design your own, from scratch or by improving another
Keep track of scores for all these games/AI. We will want to compare: different AIs on a same deck, or a given AI over a 1000 decks. We will need to see why a certain AI fails on a certain game.
-
make it workable for up to 5 players.
-
make it workable from two separate screens (network?)
During the project:
- make sure you understand the "replay" mode
- add tests (UnitTest or whole tests)
- keep notes on your questions, decisions, discussions (github's wiki)
You may also design a GUI, but be warned that this is a very time-consuming task. I like PySide2. Tkinter is more portable but harder to learn imho.
git clone https://github.com/JDGaraudEnsta/hanabi
cd hanabi
make # pip installs it in the default directory ~/.local
hanabi
# and now you may play
If hanabi
doesn't start (bash: hanabi: command not found
), add this to your ~/.bashrc
:
export PATH=$HOME/.local/bin:$PATH
- A C++ bot: some strategies and success rates
- HanSim: the Hat guessing strategy
- HanSim: source code
- boardgame arena
- hanabi conventions (hanabi-live), and references therein.
- deepmind: Atari
- deepmind: SC2
- deepmind: Hanabi
- todo: find non-deepmind references?