Leduc Hold’em

environment gif

This environment is part of the classic environments. Please read that page first for general information.

Name Value
Agents 2
Parallel API false
Manual Control No
Action Shape Discrete(4)
Action Values Discrete(4)
Observation Shape (36,)
Observation Values [0, 1]
Import from pettingzoo.classic import leduc_holdem_v0
Agents agents= ['player_0', 'player_1']

Agent Environment Cycle

environment aec diagram

Leduc Hold’em

Leduc Hold’em is a variation of Limit Texas Hold’em with 2 players, 2 rounds and a deck of six cards (Jack, Queen, and King in 2 suits). At the beginning of the game, each player receives one card and, after betting, one public card is revealed. Another round follow. At the end, the player with the best hand wins and receives a reward (+1) and the loser receives -1. At any time, any player can fold.

Our implementation wraps RLCard and you can refer to its documentation for additional details. Please cite their work if you use this game in research.

Observation Space

As described by RLCard, the first 3 entries correspond to the player’s hand (J, Q, and K) and the next 3 represent the public cards. Indexes 6 to 19 and 20 to 33 encode the number of chips by the current player and the opponent, respectively.

Index Description
0 - 2 Current Player’s Hand
0: J, 1: Q, 2: K
3 - 5 Community Cards
3: J, 4: Q, 5: K
6 - 20 Current Player’s Chips
6: 0 chips, 7: 1 chip, …, 20: 14 chips
21 - 35 Opponent’s Chips
21: 0 chips, 22: 1 chip, …, 35: 14 chips

Action Space

Action ID Action
0 Call
1 Raise
2 Fold
3 Check


Winner Loser
+raised chips / 2 -raised chips / 2

The legal moves available for each agent, found in env.infos[agent]['legal_moves'], are updated after each step. Taking an illegal move ends the game with a reward of -1 for the illegally moving agent and a reward of 0 for all other agents.