game: liars_dice

GameType.chance_mode = ChanceMode.EXPLICIT_STOCHASTIC
GameType.dynamics = Dynamics.SEQUENTIAL
GameType.information = Information.IMPERFECT_INFORMATION
GameType.long_name = "Liars Dice"
GameType.max_num_players = 2
GameType.min_num_players = 2
GameType.parameter_specification = ["bidding_rule", "dice_sides", "numdice", "players"]
GameType.provides_information_state_string = True
GameType.provides_information_state_tensor = True
GameType.provides_observation_string = False
GameType.provides_observation_tensor = True
GameType.provides_factored_observation_string = False
GameType.reward_model = RewardModel.TERMINAL
GameType.short_name = "liars_dice"
GameType.utility = Utility.ZERO_SUM

NumDistinctActions() = 13
PolicyTensorShape() = [13]
MaxChanceOutcomes() = 6
GetParameters() = {bidding_rule=reset-face,dice_sides=6,numdice=1,players=2}
NumPlayers() = 2
MinUtility() = -1.0
MaxUtility() = 1.0
UtilitySum() = 0.0
InformationStateTensorShape() = [21]
InformationStateTensorLayout() = TensorLayout.CHW
InformationStateTensorSize() = 21
ObservationTensorShape() = [21]
ObservationTensorLayout() = TensorLayout.CHW
ObservationTensorSize() = 21
MaxGameLength() = 13
ToString() = "liars_dice()"

# State 0
# -1 -1 - chance node, current roller is player 0
IsTerminal() = False
History() = []
HistoryString() = ""
IsChanceNode() = True
IsSimultaneousNode() = False
CurrentPlayer() = -1
InformationStateString(0) = "-1"
InformationStateString(1) = "-1"
InformationStateTensor(0): ◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯
InformationStateTensor(1): ◯◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯
ObservationTensor(0): ◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯
ObservationTensor(1): ◯◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯
ChanceOutcomes() = [{0, 0.166666666667}, {1, 0.166666666667}, {2, 0.166666666667}, {3, 0.166666666667}, {4, 0.166666666667}, {5, 0.166666666667}]
LegalActions() = [0, 1, 2, 3, 4, 5]
StringLegalActions() = ["Roll 1", "Roll 2", "Roll 3", "Roll 4", "Roll 5", "Roll 6"]

# Apply action "Roll 2"
action: 1

# State 1
# 2 -1 - chance node, current roller is player 1
IsTerminal() = False
History() = [1]
HistoryString() = "1"
IsChanceNode() = True
IsSimultaneousNode() = False
CurrentPlayer() = -1
InformationStateString(0) = "2"
InformationStateString(1) = "-1"
InformationStateTensor(0): ◉◯◯◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯
InformationStateTensor(1): ◯◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯
ObservationTensor(0): ◉◯◯◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯
ObservationTensor(1): ◯◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯
ChanceOutcomes() = [{0, 0.166666666667}, {1, 0.166666666667}, {2, 0.166666666667}, {3, 0.166666666667}, {4, 0.166666666667}, {5, 0.166666666667}]
LegalActions() = [0, 1, 2, 3, 4, 5]
StringLegalActions() = ["Roll 1", "Roll 2", "Roll 3", "Roll 4", "Roll 5", "Roll 6"]

# Apply action "Roll 5"
action: 4

# State 2
# 2 5
IsTerminal() = False
History() = [1, 4]
HistoryString() = "1, 4"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "2"
InformationStateString(1) = "5"
InformationStateTensor(0): ◉◯◯◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯
InformationStateTensor(1): ◯◉◯◯◯◯◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯
ObservationTensor(0): ◉◯◯◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯◯
ObservationTensor(1): ◯◉◯◯◯◯◉◯◯◯◯◯◯◯◯◯◯◯◯◯◯
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
StringLegalActions() = ["1-1", "1-2", "1-3", "1-4", "1-5", "1-6", "2-1", "2-2", "2-3", "2-4", "2-5", "2-6"]

# Apply action "1-2"
action: 1

# State 3
# 2 5 1-2
IsTerminal() = False
History() = [1, 4, 1]
HistoryString() = "1, 4, 1"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "2 1-2"
InformationStateString(1) = "5 1-2"
InformationStateTensor(0): ◉◯◯◉◯◯◯◯◯◉◯◯◯◯◯◯◯◯◯◯◯
InformationStateTensor(1): ◯◉◯◯◯◯◉◯◯◉◯◯◯◯◯◯◯◯◯◯◯
ObservationTensor(0): ◉◯◯◉◯◯◯◯◯◉◯◯◯◯◯◯◯◯◯◯◯
ObservationTensor(1): ◯◉◯◯◯◯◉◯◯◉◯◯◯◯◯◯◯◯◯◯◯
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
StringLegalActions() = ["1-3", "1-4", "1-5", "1-6", "2-1", "2-2", "2-3", "2-4", "2-5", "2-6", "Liar"]

# Apply action "1-5"
action: 4

# State 4
# 2 5 1-2 1-5
IsTerminal() = False
History() = [1, 4, 1, 4]
HistoryString() = "1, 4, 1, 4"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 0
InformationStateString(0) = "2 1-2 1-5"
InformationStateString(1) = "5 1-2 1-5"
InformationStateTensor(0): ◉◯◯◉◯◯◯◯◯◉◯◯◉◯◯◯◯◯◯◯◯
InformationStateTensor(1): ◯◉◯◯◯◯◉◯◯◉◯◯◉◯◯◯◯◯◯◯◯
ObservationTensor(0): ◉◯◯◉◯◯◯◯◯◉◯◯◉◯◯◯◯◯◯◯◯
ObservationTensor(1): ◯◉◯◯◯◯◉◯◯◉◯◯◉◯◯◯◯◯◯◯◯
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [5, 6, 7, 8, 9, 10, 11, 12]
StringLegalActions() = ["1-6", "2-1", "2-2", "2-3", "2-4", "2-5", "2-6", "Liar"]

# Apply action "2-3"
action: 8

# State 5
# 2 5 1-2 1-5 2-3
IsTerminal() = False
History() = [1, 4, 1, 4, 8]
HistoryString() = "1, 4, 1, 4, 8"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = 1
InformationStateString(0) = "2 1-2 1-5 2-3"
InformationStateString(1) = "5 1-2 1-5 2-3"
InformationStateTensor(0): ◉◯◯◉◯◯◯◯◯◉◯◯◉◯◯◯◉◯◯◯◯
InformationStateTensor(1): ◯◉◯◯◯◯◉◯◯◉◯◯◉◯◯◯◉◯◯◯◯
ObservationTensor(0): ◉◯◯◉◯◯◯◯◯◯◯◯◉◯◯◯◉◯◯◯◯
ObservationTensor(1): ◯◉◯◯◯◯◉◯◯◯◯◯◉◯◯◯◉◯◯◯◯
Rewards() = [0.0, 0.0]
Returns() = [0.0, 0.0]
LegalActions() = [9, 10, 11, 12]
StringLegalActions() = ["2-4", "2-5", "2-6", "Liar"]

# Apply action "Liar"
action: 12

# State 6
# 2 5 1-2 1-5 2-3 Liar
IsTerminal() = True
History() = [1, 4, 1, 4, 8, 12]
HistoryString() = "1, 4, 1, 4, 8, 12"
IsChanceNode() = False
IsSimultaneousNode() = False
CurrentPlayer() = -4
InformationStateString(0) = "2 1-2 1-5 2-3 Liar"
InformationStateString(1) = "5 1-2 1-5 2-3 Liar"
InformationStateTensor(0): ◉◯◯◉◯◯◯◯◯◉◯◯◉◯◯◯◉◯◯◯◉
InformationStateTensor(1): ◯◉◯◯◯◯◉◯◯◉◯◯◉◯◯◯◉◯◯◯◉
ObservationTensor(0): ◉◯◯◉◯◯◯◯◯◯◯◯◯◯◯◯◉◯◯◯◉
ObservationTensor(1): ◯◉◯◯◯◯◉◯◯◯◯◯◯◯◯◯◉◯◯◯◉
Rewards() = [-1.0, 1.0]
Returns() = [-1.0, 1.0]
