Sashité for Developers
  1. Sashité for Developers
  2. Specifications
  3. PCN
  4. 1.0.0
  5. Examples
  6. Cross-Variant Games

Cross-Variant Games (PCN v1.0.0)

This page demonstrates cross-variant games where players use different rule systems within a single PCN document.

All examples are shown in both TOML and JSON formats.


Quick Reference

How Cross-Variant Works

Variant Examples

Variant Description
Chess Western/International Chess
Shogi Japanese Chess
Xiangqi Chinese Chess
Makruk Thai Chess

1. Chess vs Makruk — Basic

Different variants per player, no time control.

TOML

[meta]
name = "East Meets West"
comment = "Cross-variant exhibition"

[sides.first]
name = "Western Champion"
variant = "Chess"

[sides.second]
name = "Thai Champion"
variant = "Makruk"

[setup]
feen = "rnsmk^snr/8/pppppppp/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / C/m"

[[plies]]
pmn = "e2-e4"

[[plies]]
pmn = "d6-d5"

[[plies]]
pmn = "e4+d5"

[[plies]]
pmn = "e6+d5"

JSON

{
  "meta": {
    "name": "East Meets West",
    "comment": "Cross-variant exhibition"
  },
  "sides": {
    "first": {
      "name": "Western Champion",
      "variant": "Chess"
    },
    "second": {
      "name": "Thai Champion",
      "variant": "Makruk"
    }
  },
  "setup": {
    "feen": "rnsmk^snr/8/pppppppp/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / C/m"
  },
  "plies": [
    { "pmn": "e2-e4" },
    { "pmn": "d6-d5" },
    { "pmn": "e4+d5" },
    { "pmn": "e6+d5" }
  ]
}

Note: The FEEN style-turn C/m indicates first player uses Chess (C), second uses Makruk (m).


2. Chess vs Shōgi — With Drops

Chess player vs Shōgi player, demonstrating shōgi drops.

TOML

[meta]
name = "Hybrid Match"
event = "Cross-Variant Championship"

[sides.first]
name = "Chess Master"
variant = "Chess"

[sides.second]
name = "Shogi Master"
variant = "Shogi"

[setup]
feen = "-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R P/ C/s"

[[plies]]
pmn = "e2-e4"
elapsed_ms = 5000

[[plies]]
pmn = "P*e5"
elapsed_ms = 3000
comment = "Shogi player drops a pawn"

[[plies]]
pmn = "d2-d4"
elapsed_ms = 8000

[[plies]]
pmn = "e5+d4/p"
elapsed_ms = 4000
comment = "Shogi pawn captures Chess pawn — captured pawn changes side (P → p)"

JSON

{
  "meta": {
    "name": "Hybrid Match",
    "event": "Cross-Variant Championship"
  },
  "sides": {
    "first": {
      "name": "Chess Master",
      "variant": "Chess"
    },
    "second": {
      "name": "Shogi Master",
      "variant": "Shogi"
    }
  },
  "setup": {
    "feen": "-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R P/ C/s"
  },
  "plies": [
    { "pmn": "e2-e4", "elapsed_ms": 5000 },
    { "pmn": "P*e5", "elapsed_ms": 3000, "comment": "Shogi player drops a pawn" },
    { "pmn": "d2-d4", "elapsed_ms": 8000 },
    { "pmn": "e5+d4/p", "elapsed_ms": 4000, "comment": "Shogi pawn captures Chess pawn — captured pawn changes side (P → p)" }
  ]
}

Note: The drop notation (P*e5) is valid for the Shōgi player but would be illegal for the Chess player.


3. Chess vs Xiangqi

Chess player vs Xiangqi player.

TOML

[sides.first]
name = "Western Player"
variant = "Chess"

[sides.second]
name = "Chinese Player"
variant = "Xiangqi"

[setup]
feen = "-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / C/x"

[[plies]]
pmn = "e2-e4"

[[plies]]
pmn = "c7-c6"

[[plies]]
pmn = "d2-d4"

[[plies]]
pmn = "d7-d5"

JSON

{
  "sides": {
    "first": {
      "name": "Western Player",
      "variant": "Chess"
    },
    "second": {
      "name": "Chinese Player",
      "variant": "Xiangqi"
    }
  },
  "setup": {
    "feen": "-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / C/x"
  },
  "plies": [
    { "pmn": "e2-e4" },
    { "pmn": "c7-c6" },
    { "pmn": "d2-d4" },
    { "pmn": "d7-d5" }
  ]
}

4. Cross-Variant with Time Control

A cross-variant game with Fischer time control. Both players share the same time budget.

TOML

[meta]
event = "Exhibition Match"
started_at = 2025-01-27T15:00:00Z

[[periods]]
duration_ms = 600000
increment_ms = 5000

[sides.first]
name = "Grandmaster"
variant = "Chess"
elo = 2650

[sides.second]
name = "Professional"
variant = "Shogi"
elo = 2500

[setup]
feen = "-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / C/s"

[[plies]]
pmn = "e2-e4"
elapsed_ms = 5000

[[plies]]
pmn = "d7-d5"
elapsed_ms = 8000

[[plies]]
pmn = "e4+d5"
elapsed_ms = 3000
comment = "Chess captures Shogi pawn — piece enters Chess hand without mutation, permanently out of play (Chess has no drops)"

[[plies]]
pmn = "c7-c6"
elapsed_ms = 4000
comment = "Shogi player advances a pawn"

[outcome]
result = "1/2-1/2"

JSON

{
  "meta": {
    "event": "Exhibition Match",
    "started_at": "2025-01-27T15:00:00Z"
  },
  "periods": [
    { "duration_ms": 600000, "increment_ms": 5000 }
  ],
  "sides": {
    "first": {
      "name": "Grandmaster",
      "variant": "Chess",
      "elo": 2650
    },
    "second": {
      "name": "Professional",
      "variant": "Shogi",
      "elo": 2500
    }
  },
  "setup": {
    "feen": "-rnbqk^bn-r/+p+p+p+p+p+p+p+p/8/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / C/s"
  },
  "plies": [
    { "pmn": "e2-e4", "elapsed_ms": 5000 },
    { "pmn": "d7-d5", "elapsed_ms": 8000 },
    { "pmn": "e4+d5", "elapsed_ms": 3000, "comment": "Chess captures Shogi pawn — piece enters Chess hand without mutation, permanently out of play (Chess has no drops)" },
    { "pmn": "c7-c6", "elapsed_ms": 4000, "comment": "Shogi player advances a pawn" }
  ],
  "outcome": {
    "result": "1/2-1/2"
  }
}

5. Unrated Exhibition — No Time Control

A casual cross-variant exhibition with no time control and no ELO implications.

TOML

[meta]
name = "Casual Exhibition"
comment = "No time pressure, no ratings"

[sides.first]
name = "Expert"
variant = "Chess"

[sides.second]
name = "Beginner"
variant = "Makruk"

[setup]
feen = "rnsmk^snr/8/pppppppp/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / C/m"

[[plies]]
pmn = "e2-e4"

[[plies]]
pmn = "d6-d5"

[[plies]]
pmn = "e4+d5"

[outcome]
result = "1-0"

JSON

{
  "meta": {
    "name": "Casual Exhibition",
    "comment": "No time pressure, no ratings"
  },
  "sides": {
    "first": {
      "name": "Expert",
      "variant": "Chess"
    },
    "second": {
      "name": "Beginner",
      "variant": "Makruk"
    }
  },
  "setup": {
    "feen": "rnsmk^snr/8/pppppppp/8/8/8/+P+P+P+P+P+P+P+P/-RNBQK^BN-R / C/m"
  },
  "plies": [
    { "pmn": "e2-e4" },
    { "pmn": "d6-d5" },
    { "pmn": "e4+d5" }
  ],
  "outcome": {
    "result": "1-0"
  }
}

6. Shōgi vs Makruk

Two Asian chess variants facing each other.

TOML

[meta]
name = "Asian Chess Battle"

[sides.first]
name = "Japanese Player"
variant = "Shogi"

[sides.second]
name = "Thai Player"
variant = "Makruk"

[setup]
feen = "lnsgk^gsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGK^GSNL / S/m"

[[plies]]
pmn = "7g-7f"

[[plies]]
pmn = "d6-d5"

[[plies]]
pmn = "2g-2f"

[[plies]]
pmn = "c6-c5"

JSON

{
  "meta": {
    "name": "Asian Chess Battle"
  },
  "sides": {
    "first": {
      "name": "Japanese Player",
      "variant": "Shogi"
    },
    "second": {
      "name": "Thai Player",
      "variant": "Makruk"
    }
  },
  "setup": {
    "feen": "lnsgk^gsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGK^GSNL / S/m"
  },
  "plies": [
    { "pmn": "7g-7f" },
    { "pmn": "d6-d5" },
    { "pmn": "2g-2f" },
    { "pmn": "c6-c5" }
  ]
}

Validation Rules

In cross-variant games:

  1. Each ply is validated against the acting player’s variant
    • Drops (*) are valid for Shōgi but not for Chess
    • Piece movements follow each variant’s rules
  2. The FEEN style-turn encodes both variants
    • First letter (uppercase): first player’s variant
    • Second letter (lowercase): second player’s variant
  3. PMN notation is consistent
    • The same operators (-, +, *, ~, =) work across all variants
    • Coordinate systems follow CELL specification
  4. Time control is Match-wide and symmetric
    • Both players share the same periods configuration
    • PCN does not model per-player time budgets

See Also