game: kuhn_poker(players=2)

GameType.chance_mode = ChanceMode.EXPLICIT_STOCHASTIC
GameType.dynamics = Dynamics.SEQUENTIAL
GameType.information = Information.IMPERFECT_INFORMATION
GameType.long_name = "Kuhn Poker"
GameType.max_num_players = 10
GameType.min_num_players = 2
GameType.parameter_specification = ["players"]
GameType.provides_information_state_string = True
GameType.provides_information_state_tensor = True
GameType.provides_observation_string = True
GameType.provides_observation_tensor = True
GameType.provides_factored_observation_string = True
GameType.reward_model = RewardModel.TERMINAL
GameType.short_name = "kuhn_poker"
GameType.utility = Utility.ZERO_SUM

NumDistinctActions() = 2
PolicyTensorShape() = [2]
MaxChanceOutcomes() = 3
GetParameters() = {players=2}
NumPlayers() = 2
MinUtility() = -2.0
MaxUtility() = 2.0
UtilitySum() = 0.0
InformationStateTensorShape() = player: [2], private_card: [3], betting: [3, 2]
InformationStateTensorLayout() = TensorLayout.CHW
InformationStateTensorSize() = 11
ObservationTensorShape() = player: [2], private_card: [3], pot_contribution: [2]
ObservationTensorLayout() = TensorLayout.CHW
ObservationTensorSize() = 7
MaxGameLength() = 3
ToString() = "kuhn_poker(players=2)"

# State 0
IsTerminal() = False
History() = []
HistoryString() = ""
IsChanceNode() = True
IsSimultaneousNode() = False
CurrentPlayer() = -1
InformationStateString(0) = ""
InformationStateString(1) = ""
InformationStateTensor(0).player: ◉◯
InformationStateTensor(0).private_card: ◯◯◯
InformationStateTensor(0).betting: ◯◯
                                   ◯◯
                                   ◯◯
InformationStateTensor(1).player: ◯◉
InformationStateTensor(1).private_card: ◯◯◯
InformationStateTensor(1).betting: ◯◯
                                   ◯◯
                                   ◯◯
ObservationString(0) = ""
ObservationString(1) = ""
PublicObservationString() = "start game"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0).player: ◉◯
ObservationTensor(0).private_card: ◯◯◯
ObservationTensor(0).pot_contribution: ◉◉
ObservationTensor(1).player: ◯◉
ObservationTensor(1).private_card: ◯◯◯
ObservationTensor(1).pot_contribution: ◉◉
ChanceOutcomes() = [{0, 0.333333333333}, {1, 0.333333333333}, {2, 0.333333333333}]
LegalActions() = [0, 1, 2]
StringLegalActions() = ["Deal:0", "Deal:1", "Deal:2"]

# Apply action "Deal:1"
action: 1

# State 1
# 1
IsTerminal() = False
History() = [1]
HistoryString() = "1"
IsChanceNode() = True
IsSimultaneousNode() = False
CurrentPlayer() = -1
InformationStateString(0) = "1"
InformationStateString(1) = ""
InformationStateTensor(0).player: ◉◯
InformationStateTensor(0).private_card: ◯◉◯
InformationStateTensor(0).betting: ◯◯
                                   ◯◯
                                   ◯◯
InformationStateTensor(1).player: ◯◉
InformationStateTensor(1).private_card: ◯◯◯
InformationStateTensor(1).betting: ◯◯
                                   ◯◯
                                   ◯◯
ObservationString(0) = "111"
ObservationString(1) = ""
PublicObservationString() = "Deal to player 0"
PrivateObservationString(0) = "Received card 1"
PrivateObservationString(1) = ""
ObservationTensor(0).player: ◉◯
ObservationTensor(0).private_card: ◯◉◯
ObservationTensor(0).pot_contribution: ◉◉
ObservationTensor(1).player: ◯◉
ObservationTensor(1).private_card: ◯◯◯
ObservationTensor(1).pot_contribution: ◉◉
ChanceOutcomes() = [{0, 0.500000000000}, {2, 0.500000000000}]
LegalActions() = [0, 2]
StringLegalActions() = ["Deal:0", "Deal:2"]

# Apply action "Deal:2"
action: 2

# State 2
# 1 2
IsTerminal() = False
History() = [1, 2]
HistoryString() = "1, 2"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "1"
InformationStateString(1) = "2"
InformationStateTensor(0).player: ◉◯
InformationStateTensor(0).private_card: ◯◉◯
InformationStateTensor(0).betting: ◯◯
                                   ◯◯
                                   ◯◯
InformationStateTensor(1).player: ◯◉
InformationStateTensor(1).private_card: ◯◯◉
InformationStateTensor(1).betting: ◯◯
                                   ◯◯
                                   ◯◯
ObservationString(0) = "111"
ObservationString(1) = "211"
PublicObservationString() = "Deal to player 1"
PrivateObservationString(0) = ""
PrivateObservationString(1) = "Received card 2"
ObservationTensor(0).player: ◉◯
ObservationTensor(0).private_card: ◯◉◯
ObservationTensor(0).pot_contribution: ◉◉
ObservationTensor(1).player: ◯◉
ObservationTensor(1).private_card: ◯◯◉
ObservationTensor(1).pot_contribution: ◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1]
StringLegalActions() = ["Pass", "Bet"]

# Apply action "Pass"
action: 0

# State 3
# 1 2 p
IsTerminal() = False
History() = [1, 2, 0]
HistoryString() = "1, 2, 0"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "1p"
InformationStateString(1) = "2p"
InformationStateTensor(0).player: ◉◯
InformationStateTensor(0).private_card: ◯◉◯
InformationStateTensor(0).betting: ◉◯
                                   ◯◯
                                   ◯◯
InformationStateTensor(1).player: ◯◉
InformationStateTensor(1).private_card: ◯◯◉
InformationStateTensor(1).betting: ◉◯
                                   ◯◯
                                   ◯◯
ObservationString(0) = "111"
ObservationString(1) = "211"
PublicObservationString() = "Pass"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0).player: ◉◯
ObservationTensor(0).private_card: ◯◉◯
ObservationTensor(0).pot_contribution: ◉◉
ObservationTensor(1).player: ◯◉
ObservationTensor(1).private_card: ◯◯◉
ObservationTensor(1).pot_contribution: ◉◉
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1]
StringLegalActions() = ["Pass", "Bet"]

# Apply action "Pass"
action: 0

# State 4
# 1 2 pp
IsTerminal() = True
History() = [1, 2, 0, 0]
HistoryString() = "1, 2, 0, 0"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = -4
InformationStateString(0) = "1pp"
InformationStateString(1) = "2pp"
InformationStateTensor(0).player: ◉◯
InformationStateTensor(0).private_card: ◯◉◯
InformationStateTensor(0).betting: ◉◯
                                   ◉◯
                                   ◯◯
InformationStateTensor(1).player: ◯◉
InformationStateTensor(1).private_card: ◯◯◉
InformationStateTensor(1).betting: ◉◯
                                   ◉◯
                                   ◯◯
ObservationString(0) = "111"
ObservationString(1) = "211"
PublicObservationString() = "Pass"
PrivateObservationString(0) = ""
PrivateObservationString(1) = ""
ObservationTensor(0).player: ◉◯
ObservationTensor(0).private_card: ◯◉◯
ObservationTensor(0).pot_contribution: ◉◉
ObservationTensor(1).player: ◯◉
ObservationTensor(1).private_card: ◯◯◉
ObservationTensor(1).pot_contribution: ◉◉
Rewards() = [-1.0, 1.0]
Returns() = [-1.0, 1.0]
