- Sashité for Developers
- Specifications
- GGN
- 1.0.0
- Examples
GGN Examples
Practical examples demonstrating Geometry Gameplay Notation v1.0.0.
Basic Movement Patterns
Simple Move
{
"W: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
{
"W: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
{
"W:K^": {
"e1": {
"g1": [
{
"must": { "f1": "empty", "g1": "empty", "h1": "W:+R" }
}
]
}
}
}
The royal King has the movement capability to castle kingside if the path Squares are empty and the Rook at h1 carries the castling-eligible State (+R, a Rule System convention that GGN merely reads).
En Passant
{
"W:P": {
"e5": {
"f6": [
{
"must": { "f6": "empty", "f5": "w:-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
{
"W: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
{
"J: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
{
"J:P": {
"*": {
"e4": [
{
"must": { "e4": "empty" },
"deny": {
"e1": "J:P", "e2": "J:P", "e3": "J:P",
"e5": "J:P", "e6": "J:P", "e7": "J:P",
"e8": "J:P", "e9": "J: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
{
"c: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
{
"W:R": {
"a1": {
"a8": [
{
"must": {
"a2": "empty", "a3": "empty", "a4": "empty",
"a5": "empty", "a6": "empty", "a7": "empty",
"a8": "enemy"
},
"deny": { "a8": "w: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
{
"W:N": {
"b1": {
"c3": [
{}
]
}
}
}
Knight has unconditional movement capability to c3 with no environmental constraints required.
State-Aware Movements
Enhanced State Pieces
{
"W:+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
{
"w:p": {
"d4": {
"e3": [
{
"must": { "e3": "empty", "e4": "W:-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
{
"W: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
{
"W:Q": {
"d4": {
"h8": [
{
"must": {
"e5": "empty", "f6": "empty",
"g7": "empty"
}
}
]
}
},
"c: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
{
"c: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
{
"W: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": "w: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 are relative to the Piece Side of the entry (GGN §7.2): a Location is "enemy" when it holds a Piece of the other Side than the QPI under which the possibility is listed. No Active Player context is involved.
What GGN Represents
GGN encodes Pseudo-Legal Moves — the movements that are mechanically possible for a Piece:
- 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’s horizon is the Position (GGN §4.2). It does not represent:
- the evaluation of anything not visible in the Position — attacked Squares, check, history (castling rights, en passant timing, repetition), whose Turn it is;
- how a Move transforms the Position — captures, relocations, transformations, transient markers;
- victory/defeat conditions and Terminal States;
- constraints requiring multiple distinct denied values for the same Location.
A Rule System may project check, castling eligibility or en passant vulnerability into Piece State; GGN then reads the marker (as in the castling and en passant examples above) but never computes it.
Move Hierarchy Position
As defined in the protocol and glossary:
Protocol-Valid Move
↓ (+ piece movement capabilities)
Pseudo-Legal Move ← GGN operates here
↓ (+ rule system constraints)
Legal Move
GGN operates at the Pseudo-Legal Move level, encoding what Pieces can do geometrically on the sole basis of what the Position shows.
Design Philosophy
GGN focuses exclusively on describing movement capabilities with environmental pre-conditions. Game engines and Rule Systems handle:
- Filtering Pseudo-Legal 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.
