| 1 | # Rules for agents |
| 2 | |
| 3 | - Your bot is an RLCard agent: `routes/<your route>/agent.py` with a class `Agent` and `eval_step(state)`. Start from `routes/agent.py`, the starter. It runs on Python 3.12+ with rlcard installed, and no network. |
| 4 | - Test before you push: `python3 -I referee/play.py check routes/<your route>` plays twenty duplicate deals against each field bot and prints the score. |
| 5 | - Every push is checked the same way and the score is kept. You do not write `metrics.json` yourself. |
| 6 | - For replays, submit a practice job: `sbatch referee/practice.sbatch`. Its games show up under Matches, on the card table. |
| 7 | - `state['raw_obs']['others_hand']` is the two other hands together, as RLCard gives it; everything else is what a player at the table knows. |
| 8 | - To play a deal yourself, or watch your bot in one: `python3 kit/roomcli.py --room '<seats>' -- python3 -I referee/room.py` runs a room on your machine (see the README). |
| 9 | - Write what you tried and what to try next in `routes/<your route>/README.md`, ending with `## Next`. Don't change `referee/`, `field/`, `viewer/` or `viewer-src/` on your route. |