HOME XML-SCHEMA XML-EXAMPLES CHESS VARIANTS FBR MBN ANCP FAQ RESOURCES ABOUT

CIF - Game Info - Game Flags


<xs:complexType name="GameFlags"> <xs:choice maxOccurs="unbounded"> <!-- Information flags --> <xs:element name="annotated" type="Empty" minOccurs="0"/> <xs:element name="handicapCastling" type="Empty" minOccurs="0"/> <xs:element name="illegalMove" type="Empty" minOccurs="0"/> <xs:element name="invalidMove" type="Empty" minOccurs="0"/> <xs:element name="mirroredCastling" type="Empty" minOccurs="0"/> <xs:element name="nullMove" type="Empty" minOccurs="0"/> <xs:element name="recursive" type="Empty" minOccurs="0"/> <!-- Custom flag (Scid/Aquarium) --> <xs:element name="custom" type="xs:string" minOccurs="0"/> <!-- A = Aquarium --> <!-- B = Scidb --> <!-- C = ChessBase --> <!-- S = Scid/Scid vs PC --> <xs:element name="annotatedBookGame" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="bestGame" type="Empty" minOccurs="0"/> <!-- B/C --> <xs:element name="blackOpening" type="Empty" minOccurs="0"/> <!-- B/S --> <xs:element name="blunder" type="Empty" minOccurs="0"/> <!-- A/B/S --> <xs:element name="brilliancy" type="Empty" minOccurs="0"/> <!-- B/S --> <xs:element name="computer" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="computerAnalysis" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="counterAttack" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="decidedTournament" type="Empty" minOccurs="0"/> <!-- B/C --> <xs:element name="defense" type="Empty" minOccurs="0"/> <!-- A/B/C --> <xs:element name="deleted" type="Empty" minOccurs="0"/> <!-- B/C/S --> <xs:element name="drawingMethods" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="endGame" type="Empty" minOccurs="0"/> <!-- A/B/C/S --> <xs:element name="endGameTransition" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="historicGame" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="kingSide" type="Empty" minOccurs="0"/> <!-- B/S --> <xs:element name="kingSideAttack" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="material" type="Empty" minOccurs="0"/> <!-- A/B/C --> <xs:element name="middleGame" type="Empty" minOccurs="0"/> <!-- A/B/S --> <xs:element name="miscellaneous" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="modelGame" type="Empty" minOccurs="0"/> <!-- A/B/C --> <xs:element name="myAnalysis" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="myGame" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="novelty" type="Empty" minOccurs="0"/> <!-- B/C/S --> <xs:element name="openingTheory" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="oppositeColoredBishops" type="Empty" minOccurs="0"/><!-- A --> <xs:element name="pawnStructure" type="Empty" minOccurs="0"/> <!-- A/B/C/S --> <xs:element name="piecePlay" type="Empty" minOccurs="0"/> <!-- A/B/C --> <xs:element name="positionalSacrifice" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="promotions" type="Empty" minOccurs="0"/> <!-- B/S --> <xs:element name="prophylaxis" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="psychology" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="queenSide" type="Empty" minOccurs="0"/> <!-- Q/B/S --> <xs:element name="queenSideAttack" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="sacrifice" type="Empty" minOccurs="0"/> <!-- B/C --> <xs:element name="space" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="strategicalBlunder" type="Empty" minOccurs="0"/> <!-- C --> <xs:element name="strategy" type="Empty" minOccurs="0"/> <!-- A/B/C --> <xs:element name="tablebaseAnalysis" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="tacticalBlunder" type="Empty" minOccurs="0"/> <!-- C --> <xs:element name="tactics" type="Empty" minOccurs="0"/> <!-- A/B/S --> <xs:element name="test" type="Empty" minOccurs="0"/> <!-- A --> <xs:element name="underPromotions" type="Empty" minOccurs="0"/> <!-- B/S --> <xs:element name="user" type="Empty" minOccurs="0"/> <!-- B/C/S --> <xs:element name="whiteOpening" type="Empty" minOccurs="0"/> <!-- B/S --> <xs:element name="withAttack" type="Empty" minOccurs="0"/> <!-- B/C --> </xs:choice> </xs:complexType>

An element nullMove, invalidMove, illegalMove, handicapCastling, or mirroredCastling exists if and only if the main line of the move section contains a move which is null, invalid, illegal, a handicap castling, or a mirrored casting, respectively. About the meaning of these attributes:

The game flag annotated should be set if and only if the game contains any annotation.

The game flag recursive should be set if and only if the game contains any sub-variation.

  • nullMove: A null move acts as a placeholder for an expected move that is not played. Only the color of the side to move is switching. Note that a null move is also tagged as an illegal move if the king of the side to move is in check.

  • invalidMove: A move is invalid if it does not fit the standard chess rules, but only if not one of the following conditions holds:

    • It is counted as an illegal move.
    • It is counted as a handicap castling (see handicapCastling)
    • It is counted as a mirrored castling (see mirroredCastling)

    Example: Moving a knight from b1 to b3 is an invalid move. (This may happen in children's chess games. Database application Scidb is supporting children's chess.).

  • illegalMove: A move is illegal if:

    1. After the move the king of the side not to move is in check.
    2. The castling is illegal because the king is in check, or is moving over an attacked square, or does not have this castling right.

    Note that an illegal move will not be tagged as invalid.

  • handicapCastling: A handicap castling is a castling without an associated rook, and this can only happen in handicap games.

    Example: White has given the rook on a1 as a handicap, but the opponents agreed that the castling on the queenside is still allowed even without the rook on a1.

    Note that a handicap castling will not be tagged as invalid or illegal.

  • mirroredCastling: A mirrored castling can happen in wild/0 and wild/1 variants (FICS). A castling is mirrored, if the king is on the d file, and is castling by moving two steps towards the rook.

    Note that a mirrored castling will not be tagged as invalid or illegal.

  • custom: This will be especially used by application Scid for the storage of user defined flags.



Google translation

Share this page

C/CIF at Sourceforge

C/CIF at Sourceforge

C/CIF at Launchpad

C/CIF at Launchpad