Sashité for Developers
  1. Sashité for Developers
  2. Specifications
  3. GGN
  4. 1.0.0
  5. Examples

GGN Examples

Practical examples demonstrating General Gameplay Notation v1.0.0.


Basic Movement Patterns

Simple Move

{
  "C:R": {
    "a1": {
      "a4": [
        {
          "must": { "a2": "empty", "a3": "empty", "a4": "empty" }
        }
      ]
    }
  }
}

Rook at Square a1 has the movement capability to reach Square a4 when all intermediate Squares and the destination are empty.

Move or Capture

{
  "C:R": {
    "a1": {
      "a4": [
        {
          "must": { "a2": "empty", "a3": "empty", "a4": "empty" }
        },
        {
          "must": { "a2": "empty", "a3": "empty", "a4": "enemy" }
        }
      ]
    }
  }
}

Two distinct movement possibilities: rook can perform board-to-board Displacement to empty a4 OR board-to-hand Displacement (Capture) of an enemy Piece at a4.


Special Chess Moves

Castling

{
  "C:+K": {
    "e1": {
      "g1": [
        {
          "must": { "f1": "empty", "g1": "empty", "h1": "C:+R" }
        }
      ]
    }
  }
}

King in Enhanced State (+ modifier) has the movement capability to castle kingside if path Squares are empty and rook is in position.

En Passant

{
  "C:P": {
    "e5": {
      "f6": [
        {
          "must": { "f6": "empty", "f5": "c:-p" }
        }
      ]
    }
  }
}

White pawn has the movement capability to Capture en passant if f6 is empty and f5 contains a vulnerable black pawn in Diminished State (- modifier).

Pawn Promotion Zone

{
  "C:P": {
    "e7": {
      "e8": [
        {
          "must": { "e8": "empty" }
        }
      ],
      "d8": [
        {
          "must": { "d8": "enemy" }
        }
      ]
    }
  }
}

Pawn at e7 has movement capabilities to advance to e8 if empty or diagonally Capture to d8 if occupied by enemy Piece.


Drops and Reserves

Drop from Hand

{
  "S:P": {
    "*": {
      "e5": [
        {
          "must": { "e5": "empty" }
        }
      ]
    }
  }
}

Pawn in player’s Hand has the movement capability for hand-to-board Displacement (Placement) to e5 when the Square is empty.

Drop with File Restriction

{
  "S:P": {
    "*": {
      "e4": [
        {
          "must": { "e4": "empty" },
          "deny": {
            "e1": "S:P", "e2": "S:P", "e3": "S:P",
            "e5": "S:P", "e6": "S:P", "e7": "S:P",
            "e8": "S:P", "e9": "S:P"
          }
        }
      ]
    }
  }
}

Pawn Placement to e4 has the movement capability when Square is empty and no other unpromoted pawn (in Normal State) exists on the e-file.


Complex Constraints

Xiangqi Cannon Capture

{
  "x:c": {
    "b2": {
      "b8": [
        {
          "must": {
            "b3": "empty", "b4": "empty",
            "b5": "empty", "b6": "empty",
            "b8": "enemy"
          },
          "deny": { "b7": "empty" }
        }
      ]
    }
  }
}

Cannon has the movement capability to Capture by jumping over exactly one Piece: path Squares must be clear except for one platform Piece at b7.

Selective Capture Restriction

{
  "C:R": {
    "a1": {
      "a8": [
        {
          "must": {
            "a2": "empty", "a3": "empty", "a4": "empty",
            "a5": "empty", "a6": "empty", "a7": "empty",
            "a8": "enemy"
          },
          "deny": { "a8": "c:k" }
        }
      ]
    }
  }
}

Rook has the movement capability to Capture any enemy Piece at a8 except the black king (specific Name exclusion).

Knight Jump

{
  "C:N": {
    "b1": {
      "c3": [
        {}
      ]
    }
  }
}

Knight has unconditional movement capability to c3 with no environmental constraints required.


State-Aware Movements

Enhanced State Pieces

{
  "C:+R": {
    "a1": {
      "a4": [
        {
          "must": { "a2": "empty", "a3": "empty", "a4": "empty" }
        }
      ]
    }
  }
}

Rook in Enhanced State (+ modifier) has movement capability constrained by path requirements.

Diminished State Capture

{
  "c:p": {
    "d4": {
      "e3": [
        {
          "must": { "e3": "empty", "e4": "C:-P" }
        }
      ]
    }
  }
}

Black pawn has the movement capability to Capture en passant only when white pawn is in Diminished State (- modifier), indicating vulnerability.


Multiple Destinations

{
  "C:N": {
    "e4": {
      "c3": [
        {
          "must": { "c3": "empty" }
        }
      ],
      "c5": [
        {
          "must": { "c5": "empty" }
        },
        {
          "must": { "c5": "enemy" }
        }
      ],
      "d2": [
        {
          "must": { "d2": "empty" }
        }
      ]
    }
  }
}

Knight at e4 has movement capabilities to multiple destinations, each with their own environmental constraints and possibility variations.


Cross-Style Games

Mixed Piece Systems

{
  "C:Q": {
    "d4": {
      "h8": [
        {
          "must": {
            "e5": "empty", "f6": "empty",
            "g7": "empty"
          }
        }
      ]
    }
  },
  "x:m": {
    "b1": {
      "d2": [
        {
          "must": { "d2": "empty" },
          "deny": { "c1": "enemy" }
        }
      ]
    }
  }
}

Chess queen and Xiangqi horse coexisting with their respective Style-specific movement capabilities.


Advanced Patterns

Double Negation for Allied Piece

{
  "S:L": {
    "c3": {
      "c4": [
        {
          "deny": { "c4": "enemy", "c4": "empty" }
        }
      ]
    }
  }
}

Lance has movement capability to c4 only when it contains an allied Piece (neither empty nor enemy, evaluated from Active Player perspective).

Conditional Path

{
  "C:B": {
    "a1": {
      "h8": [
        {
          "must": {
            "b2": "empty", "c3": "empty", "d4": "empty",
            "e5": "empty", "f6": "empty", "g7": "empty",
            "h8": "empty"
          }
        },
        {
          "must": {
            "b2": "empty", "c3": "empty", "d4": "empty",
            "e5": "empty", "f6": "empty", "g7": "empty",
            "h8": "enemy"
          },
          "deny": { "h8": "c:k", "h8": "c:q" }
        }
      ]
    }
  }
}

Bishop has two distinct movement possibilities to h8: Displacement to empty Square, or Capture of any enemy Piece except king or queen.


Important Notes

Evaluation Context

All enemy evaluations in these examples are from the Active Player’s perspective - the player whose Turn it currently is, as defined by the protocol.

What GGN Represents

GGN encodes Mechanically Possible Moves (also called Pseudo-Legal Moves):

What GGN Does Not Represent

GGN deliberately excludes game-specific concerns that transform Mechanically Possible Moves into Legal Moves:

Move Hierarchy Position

As defined in the protocol and glossary:

Protocol-Valid Move
    ↓ (+ piece movement capabilities)
Mechanically Possible Move / Pseudo-Legal Move  ← GGN operates here
    ↓ (+ rule system constraints)
Legal Move

GGN operates at the Mechanically Possible Move level, encoding what Pieces can do geometrically based on their attributes, without incorporating game-specific legality rules.

Design Philosophy

GGN focuses exclusively on describing movement capabilities with environmental pre-conditions. Game engines and rule systems handle:

This separation enables GGN to remain rule-agnostic while providing a foundation for diverse rule systems.