- Sashité for Developers
- Specifications
- GGN
- 1.0.0
- 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-board Displacement capturing an enemy Piece at a4. Both are Board→Board movements; what happens to the captured Piece (removed, sent to Hand, etc.) is defined by the Rule System, not GGN.
Special Chess Moves
Castling
{
"C:+K": {
"e1": {
"g1": [
{
"must": { "f1": "empty", "g1": "empty", "h1": "C:+R" }
}
]
}
}
}
King in Enhanced State (+ modifier, encoding castling eligibility in this convention) has the movement capability to castle kingside if path Squares are empty and the 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, encoding en passant vulnerability in this convention).
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 an enemy Piece.
Drops and Reserves
Drop from Hand
{
"S:P": {
"*": {
"e5": [
{
"must": { "e5": "empty" }
}
]
}
}
}
Pawn in the 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 is possible when the Square is empty and no other unpromoted Pawn (in Normal State) already exists on the e-file. The deny OR logic prevents the drop if any one of those Squares already holds a friendly Pawn.
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 (which must not be empty).
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 (Terminal Piece). To additionally exclude the black Queen or other specific Pieces from the same Location, the Rule System must apply further filtering — GGN cannot express multiple distinct denied values for a single Location within one deny object.
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 the white Pawn is in Diminished State (- modifier), encoding its 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 its 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
Deny OR Logic Across Distinct Locations
{
"x:c": {
"b2": {
"b5": [
{
"must": {
"b3": "empty", "b4": "empty",
"b5": "enemy"
},
"deny": { "b6": "empty", "b7": "empty", "b8": "empty" }
}
]
}
}
}
Cannon has the movement capability to Capture at b5 if the path is clear and b5 contains an enemy Piece, but only when no additional pieces exist further along the file — preventing the move if b6, b7, or b8 are occupied (the deny OR logic fires if any one of them is not empty).
Note — allied piece constraint: GGN cannot express “Location must contain an allied Piece” as a positive condition, because it requires simultaneously denying both
"empty"and"enemy"for the same Location in a singledenyobject — which JSON does not support (one value per key). This constraint MUST be delegated to the Rule System.
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^" }
}
]
}
}
}
Bishop has two distinct movement possibilities to h8: Displacement to an empty Square, or Capture of any enemy Piece except the black King (Terminal Piece). To additionally exclude the black Queen or any other specific Piece at h8, the Rule System must apply further filtering — GGN cannot express multiple distinct denied values for a single Location within one deny object.
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):
- Movement capabilities: Nominal abilities of Pieces based on Piece Name, Piece Side, Piece State, and Piece Style attributes
- Environmental constraints: Board conditions that must (or must not) exist for movement capabilities to be realized
- Movement possibilities: Distinct combinations of capabilities and constraints for reaching the same destination
What GGN Does Not Represent
GGN deliberately excludes game-specific concerns that transform Mechanically Possible Moves into Legal Moves:
- Check State restrictions and Terminal Piece protections
- Historical conditions (castling rights timing, en passant temporal requirements)
- Turn-specific constraints beyond basic alternation
- Victory/defeat conditions and Terminal States
- Move execution mechanics and Action sequencing
- State transition consequences and cascading effects
- Competitive interpretations and rule-specific legality
- Constraints requiring multiple distinct denied values for the same Location
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:
- Filtering Mechanically Possible Moves to determine Legal Moves
- Move validation against complete rule sets
- Move execution and state transitions
- Consequence evaluation and competitive interpretations
- Constraints that require multiple denied values for the same Location
This separation enables GGN to remain rule-agnostic while providing a foundation for diverse Rule Systems.
