User Tools

Site Tools


chess:programming:polyglot_book_format:extensions_for_other_forms_of_chess:extension_to_other_variants

Chess - Programming - Polyglot Book Format - Extensions for other forms of Chess - Extension to other variants

Polyglot does not support any Chess variants other than Mad Queen and Chess960.

  • XBoard, however, does, and has extended the definition of the Polyglot book format to cover such variants.
  • To generalize to various board formats, it also numbers the board square in raster-scan fashion.
  • So in Xiangqi, which has a 9×10 board, the square number equals 9*row+file, and can run up to 90.
  • The piece numbering is also extended beyond King, keeping the alternation of white and black pieces of the same type, to accommodate unorthodox piece types.
  • How unorthodox pieces should be mapped on numbers is not yet subject to an official standard.
  • But variants that only the orthodox pieces (e.g. Suicide, Atomic) do not suffer from that.

To map a (piece, square) combination to a hash key, however, only the square number modulo 64 and the piece number modulo 12 is used as index in the key table.

  • The square number divided by 64 and piece number divided by 12 is then used to decide how the retrieved key should be (bit-wise) rotated to get the actual key.
  • Square numbers in the range 64-127 rotate the key left by 8 bits, while piece values in the ranges 12-23, 24-35 and 36-47 rotate left by an additional 16, 32 or 48 bits, respectively.
  • This is sufficient to handle boards of up to 128 squares, and up to 24 piece types.

A number derived from the variant can be XORed to the overall key, to prevent positions from variants with equal board and piece types (e.g. suicide, losers or atomic) to map to the same key, and invalidates books made for one of those for accidental use by any of the others.

  • The table below defines the number that should be used for some common variants.
  • Note that some variants that are mutually compatible use the same number, so that they can use the same opening book.
0Standard Chess (aka Mad Queen), WildCastle, NoCastle, Fischer Random Chess (aka Chess960)
0Xiangqi (Chinese Chess)
6Crazyhouse
7Losers Chess
8Suicide Chess, Giveaway Chess
10TwoKings
12Atomic Chess
133Check
14Shatranj
23Shogi (Japanese Chess)
25Courier Chess
26Gothic Chess, Capablanca Chess, Capablanca Random Chess
28Knightmate
30Cylinder Chess
31Falcon Chess
33Berolina Chess
34Janus Chess
35Superchess
36Great Shatranj
38Makruk (Thai Chess)
39S-Chess (aka Seirawan Chess)
40Grand Chess
41Spartan Chess

For variants with holdings from which pieces can be brought (back) in play (e.g. Crazyhouse, Shogi, S-Chess), the holdings are also part of the game state, and must be encoded in the key.

  • To do this, the holdings are considered as a single off-board square with the next available number (so square number 64 in Crazyhouse).
  • The (piece type, square number) pair is than mapped onto a key in the same way as for on-board pieces.
  • A complication here is that multiple pieces, possibly of the same type, can be on this 'holdings square', so that XORing the corresponding key into the total will not work.
    • (Having two pieces of a certain type would then be indistinguishable from having none, as A XOR A equals 0 for any A!)
    • Therefore the holdings keys are not XORed but added to the total key, after all other key terms have been taken into account through XOR.

The move encoding on large boards is fromSquare*boardSize + toSquare + boardSize*boardSize*promotionType.

  • For large boards this might leave a shortage of promotion types, but fortunately promotions are not very common in opening theory.
  • The meaning of the promotionType code can be variant-dependent.
  • Especially if there is a shortage of codes, the most common promotions should receive the lowest codes. (E.g. in Grand Chess the board is 10×10, so the promotion-type multiplier is 10,000, while the 16-bit move encoding only runs up to 65,535.
  • So there is only room for 6 promotion types, while 7 would be needed for the 6 possible piece types and non-promotion.)
  • In asymmetric variants (e.g. Spartan Chess) the same code need not indicate the same piece type for both sides.
chess/programming/polyglot_book_format/extensions_for_other_forms_of_chess/extension_to_other_variants.txt · Last modified: 2022/01/11 14:33 by peter

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki