11.7 A technical description of the Match ID
This section describes how the match ID is calculated. The match
ID can be used for easy exchange of positions for gnubg users in
conjunction with the position ID. The match key is a 9 byte
representation of the match score, match length, value of cube, owner
of cube, Crawford game flag, player on roll, player to make a
decision, doubled flag, resigned flag, and the dice rolled. The match
ID is the 12 character Base64 encoding of the match key. Match key
The match key is a bit string of length 66:
1-4 | 5-6 | 7 | 8 | 9-11 | 12 | 13 | 14-1516-1819-2122-3637-5152
|
Cube | CubeOwner | DiceOwner | Crawford | GameState | TurnOwner | Double | ResignDice1Dice2MatchLen x 15 Score1 x 15Score2 x 15
|
- Bit 1-4 contains the 2-logarithm of the cube value. For
example, a 8-cube is encoded as 0011 binary (or 3), since 2 to the
power of 3 is 8. The maximum value of the cube in with this
encoding is 2 to the power of 15, i.e., a 32768-cube.
- Bit 5-6 contains the cube owner. 00 if player 0 owns the cube,
01 if player 1 owns the cube, or 11 for a centered cube.
- Bit 7 is the player on roll or the player who did roll (0 and
1 for player 0 and 1, respectively).
- Bit 8 is the Crawford flag: 1 if this game is the Crawford
game, 0 otherwise.
- Bit 9-11 is the game state: 000 for no game started, 001 for
playing a game, 010 if the game is over, 011 if the game was
resigned, or 100 if the game was ended by dropping a cube.
- Bit 12 indicates whose turn it is. For example, suppose player
0 is on roll then bit 7 above will be 0. Player 0 now decides to
double, this will make bit 12 equal to 1, since it is now player
1's turn to decide whether she takes or passes the cube.
- Bit 13 indicates whether an doubled is being offered. 0 if no
double is being offered and 1 if a double is being offered.
- Bit 14-15 indicates whether an resignation was offered. 00 for
no resignation, 01 for resign of a single game, 10 for resign of a
gammon, or 11 for resign of a backgammon. The player offering the
resignation is the inverse of bit 12, e.g., if player 0 resigns a
gammon then bit 12 will be 1 (as it is now player 1 now has to
decide whether to accept or reject the resignation) and bit 13-14
will be 10 for resign of a gammon.
- Bit 16-18 and bit 19-21 is the first and second die,
respectively. 0 if the dice has not yet be rolled, otherwise the
binary encoding of the dice, e.g., if 5-2 was rolled bit 16-21
will be 101-010.
- Bit 22 to 36 is the match length. The maximum value for the
match length is 32767. A match score of zero indicates that the
game is a money game.
- Bit 37-51 and bit 52-66 is the score for player 0 and player 1
respectively. The maximum value of the match score is 32767.
For example, assume the score is 2-4 in a 9 point match with
player 0 holding a 2-cube, and player 1 has just rolled 52. The match
key for this will be (note that the bit order is reversed below for
readability)
1000 00 1 0 100 1 0 00 101 010 100100000000000 010000000000000
001000000000000
In little endian the bytes looks like:
01000001 10001001 00101010 00000001 00100000 00000000 00100000
00000000 00
0x41 0x89 0x2A 0x01 0x20 0x00 0x20 0x00 0x00
Analogous to the position ID from the previous section the match
ID format is simply the Base64 encoding of the key.
To continue the example above, the 9 8-bit bytes are grouped into
12 6-bits groups:
010000 011000 100100 101010 000000 010010 000000 000000 001000
000000 000000 000000
In Base64 encoding, the groups are represented as:
Q Y k q A S A A I A A A
So, the match id is simply:
QYkqASAAIAAA
If someone post a match ID you can set up the position in gnubg by
writing or pasting it into the Match ID text input field on the main
window, or by executing the command
set matchid QYkqASAAIAAA.