# commoner (non-royal king)
# king
-### Rule options
-# variantTemplate
-# pocketSize
-# maxRank: maximum rank (e.g., 8)
-# maxFile: maximum file (e.g., 8 or h)
-# chess960: allow chess960 castling (true/false)
-# startFen: FEN of starting position
-# promotionRank: relative rank required to reach for promotion (e.g., 8)
-# promotionPieceTypes: pieces letters of promotion options (e.g., nbrq)
-# sittuyinPromotion: (true/false)
-# promotionLimit
-# promotedPieceType
-# piecePromotionOnCapture: (true/false)
-# mandatoryPawnPromotion: (true/false)
-# mandatoryPiecePromotion: (true/false)
-# pieceDemotion: (true/false)
-# endgameEval: (true/false)
-# doubleStep: (true/false)
-# doubleStepRank
-# firstRankDoubleSteps: (true/false)
-# castling: (true/false)
-# castlingDroppedPiece: (true/false)
-# castlingKingsideFile: e.g., g
-# castlingQueensideFile: e.g., c
-# castlingRank: relative rank of castling, e.g., 1
-# checking: (true/false)
-# mustCapture: (true/false)
-# mustDrop: (true/false)
-# pieceDrops: (true/false)
-# dropLoop: (true/false)
-# capturesToHand: (true/false)
-# firstRankDrops: (true/false)
-# dropOnTop: (true/false)
-# whiteDropRegion
-# blackDropRegion
-# sittuyinRookDrop: (true/false)
-# dropOppositeColoredBishop: (true/false)
-# dropPromoted: (true/false)
-# shogiDoubledPawn: (true/false)
-# immobilityIllegal: (true/false)
-# gating: (true/false)
-# nMoveRule: e.g., 50
-# nFoldRule: e.g., 3
-# nFoldValue: (win/draw/loss)
-# nFoldValueAbsolute: (true/false)
-# perpetualCheckIllegal: (true/false)
+### Option types
+# [bool]: boolean flag to enable/disable a feature [true, false]
+# [Rank]: denotes a rank of the board [1-10]
+# [File]: denotes a file of the board [1-12, a-i]
+# [int]: any natural number [0, 1, ...]
+# [PieceType]: a piece type [letters defined for pieces, e.g., p]
+# [Bitboard]: list of squares [e.g., d4 e4 d5 e5]
+# [Value]: game result [win, loss, draw]
+# [CountingRule]: makruk or ASEAN counting rules [makruk, asean, none]
+
+### Rule definition options
+# variantTemplate: only relevant for XBoard/WinBoard [values: fairy, shogi] (default: fairy)
+# pocketSize: number of pockets shown by XBoard/WinBoard for drop variants (default: 0)
+# maxRank: maximum rank [Rank] (default: 8)
+# maxFile: maximum file [File] (default: 8)
+# chess960: allow chess960 castling [bool] (default: false)
+# startFen: FEN of starting position (default: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1)
+# promotionRank: relative rank required to reach for promotion [Rank] (default: 8)
+# promotionPieceTypes: letters of promotion piece options (default: nbrq)
+# sittuyinPromotion: [bool] (default: false)
+# promotionLimit:
+# promotedPieceType:
+# piecePromotionOnCapture: [bool] (default: false)
+# mandatoryPawnPromotion: [bool] (default: true)
+# mandatoryPiecePromotion: [bool] (default: false)
+# pieceDemotion: [bool] (default: false)
+# endgameEval: [bool] (default: false)
+# doubleStep: enable pawn double step [bool] (default: true)
+# doubleStepRank: [Rank] (default: <none>)
+# firstRankDoubleSteps: [bool] (default: false)
+# castling: enable castling [bool] (default: true)
+# castlingDroppedPiece: [bool] (default: false)
+# castlingKingsideFile: [File] (default: g)
+# castlingQueensideFile: [File] (default: c)
+# castlingRank: relative rank of castling [Rank] (default: 1)
+# checking: allow checks [bool] (default: true)
+# mustCapture: [bool] (default: false)
+# mustDrop: [bool] (default: false)
+# pieceDrops: [bool] (default: false)
+# dropLoop: [bool] (default: false)
+# capturesToHand: [bool] (default: false)
+# firstRankDrops: [bool] (default: false)
+# dropOnTop: [bool] (default: false)
+# whiteDropRegion: [Bitboard]
+# blackDropRegion: [Bitboard]
+# sittuyinRookDrop: [bool] (default: false)
+# dropOppositeColoredBishop: [bool] (default: false)
+# dropPromoted: [bool] (default: false)
+# shogiDoubledPawn: allow shogi pawns to be doubled [bool] (default: true)
+# immobilityIllegal: [bool] (default: false)
+# gating: [bool] (default: false)
+# nMoveRule: [int] (default: 50)
+# nFoldRule: [int] (default: 3)
+# nFoldValue: [Value] (default: draw)
+# nFoldValueAbsolute: [bool] (default: false)
+# perpetualCheckIllegal: [bool] (default: false)
# stalemateValue: (win/draw/loss)
# checkmateValue: (win/draw/loss)
-# shogiPawnDropMateIllegal: (true/false)
-# shatarMateRule: (true/false)
-# bareKingValue: (win/draw/loss)
-# extinctionValue: (win/draw/loss)
-# bareKingMove: (true/false)
-# extinctionPieceTypes
-# flagPiece
-# whiteFlag
-# blackFlag
-# flagMove: (true/false)
-# checkCounting: (true/false)
-# connectN: number of aligned pieces for win (e.g., 4)
-# countingRule: (makruk/asean)
+# shogiPawnDropMateIllegal: [bool] (default: false)
+# shatarMateRule: [bool] (default: false)
+# bareKingValue: [Value] (default: <none>)
+# extinctionValue: [Value] (default: <none>)
+# bareKingMove: [bool] (default: false)
+# extinctionPieceTypes:
+# flagPiece: [PieceType] (default: <none>)
+# whiteFlag: [Bitboard] (default: <none>)
+# blackFlag: [Bitboard] (default: <none>)
+# flagMove: [bool] (default: false)
+# checkCounting: [bool] (default: false)
+# connectN: number of aligned pieces for win [int] (default: 0)
+# countingRule: enable counting rules [CountingRule] (default: <none>)
################################################
### Example for minishogi configuration that would be equivalent to the built-in variant: