- Sashité for Developers
- Rules
- Xiongqi
Xiongqi
Rule System for Xiongqi (熊棋, “Panda Chess”) built on the Game Protocol.
1. Board
8×8 grid encoded in CELL.
Valid coordinates: a1–h8
FEEN serialization: rank 8 → rank 1, file a → file h, / between ranks.
River: conceptual boundary between ranks 4 and 5.
| Side | Before river | After river |
|---|---|---|
| First (South) | ranks 1–4 | ranks 5–8 |
| Second (North) | ranks 5–8 | ranks 1–4 |
2. Style
| SNN | SIN | Side |
|---|---|---|
Xiongqi |
X |
first (South) |
Xiongqi |
x |
second (North) |
3. Pieces
All pieces encoded in PIN.
| PIN | Name | Notes |
|---|---|---|
G^ |
General | Terminal (initial) |
D^ |
Dragon | Terminal (after face-to-face transformation) |
A |
Advisor | |
B |
Bear | |
C |
Cannon | Screen capture |
E |
Empress | From Soldier promotion |
H |
Horse | Blockable |
R |
Chariot | |
S |
Soldier | Before river |
+S |
Soldier | After river |
g^ |
General | Terminal (initial) |
d^ |
Dragon | Terminal (after face-to-face transformation) |
a |
Advisor | |
b |
Bear | |
c |
Cannon | |
e |
Empress | |
h |
Horse | |
r |
Chariot | |
s |
Soldier | Before river |
+s |
Soldier | After river |
4. Initial Position
Encoded in FEEN:
rhbag^bhr/2c2c2/ssssssss/8/8/SSSSSSSS/2C2C2/RHBAG^BHR / X/x
5. Movements
All pseudo-legal moves encoded in GGN. Patterns shown are representative.
5.1 General
{
"X:G^": {
"e4": {
"d4": [{ "must": { "d4": "empty" } }, { "must": { "d4": "enemy" } }],
"e3": [{ "must": { "e3": "empty" } }, { "must": { "e3": "enemy" } }],
"e5": [{ "must": { "e5": "empty" } }, { "must": { "e5": "enemy" } }],
"f4": [{ "must": { "f4": "empty" } }, { "must": { "f4": "enemy" } }]
}
}
}
One square orthogonally. No palace restriction.
5.2 Dragon
{
"X:D^": {
"e4": {
"d4": [{ "must": { "d4": "empty" } }],
"e3": [{ "must": { "e3": "empty" } }],
"e5": [{ "must": { "e5": "empty" } }],
"f4": [{ "must": { "f4": "empty" } }],
"a4": [{ "must": { "b4": "empty", "c4": "empty", "d4": "empty", "a4": "enemy" } }],
"e1": [{ "must": { "e2": "empty", "e3": "empty", "e1": "enemy" } }]
}
}
}
- Non-capturing: one square orthogonally.
- Capturing: any distance orthogonally (like Chariot). Path must be clear.
5.3 Advisor
{
"X:A": {
"e4": {
"d3": [{ "must": { "d3": "empty" } }, { "must": { "d3": "enemy" } }],
"d5": [{ "must": { "d5": "empty" } }, { "must": { "d5": "enemy" } }],
"f3": [{ "must": { "f3": "empty" } }, { "must": { "f3": "enemy" } }],
"f5": [{ "must": { "f5": "empty" } }, { "must": { "f5": "enemy" } }]
}
}
}
One square diagonally. No palace restriction.
5.4 Bear
{
"X:B": {
"c1": {
"f4": [
{ "must": { "d2": "empty", "e3": "empty", "f4": "empty" } },
{ "must": { "d2": "empty", "e3": "empty", "f4": "enemy" } }
]
}
}
}
Any number of squares diagonally (like Chess Bishop). Path must be clear.
5.5 Cannon
{
"X:C": {
"c2": {
"c5": [{ "must": { "c3": "empty", "c4": "empty", "c5": "empty" } }],
"c8": [
{ "must": { "c3": "empty", "c4": "empty", "c5": "empty", "c6": "empty", "c8": "enemy" }, "deny": { "c7": "empty" } }
]
}
}
}
- Non-capturing: any distance orthogonally. Path must be clear.
- Capturing: jumps exactly one piece (screen), then captures. Path before screen must be clear; path after screen must be clear.
5.6 Empress
{
"X:E": {
"d4": {
"d8": [{ "must": { "d5": "empty", "d6": "empty", "d7": "empty", "d8": "empty" } }, { "must": { "d5": "empty", "d6": "empty", "d7": "empty", "d8": "enemy" } }],
"c2": [{ "must": { "c2": "empty" } }, { "must": { "c2": "enemy" } }],
"e2": [{ "must": { "e2": "empty" } }, { "must": { "e2": "enemy" } }],
"b3": [{ "must": { "b3": "empty" } }, { "must": { "b3": "enemy" } }],
"f3": [{ "must": { "f3": "empty" } }, { "must": { "f3": "enemy" } }],
"b5": [{ "must": { "b5": "empty" } }, { "must": { "b5": "enemy" } }],
"f5": [{ "must": { "f5": "empty" } }, { "must": { "f5": "enemy" } }],
"c6": [{ "must": { "c6": "empty" } }, { "must": { "c6": "enemy" } }],
"e6": [{ "must": { "e6": "empty" } }, { "must": { "e6": "enemy" } }]
}
}
}
- Chariot mode: any distance orthogonally. Path must be clear.
- Knight mode: L-shape (all 8 directions). Jumps freely.
5.7 Horse
{
"X:H": {
"b1": {
"a3": [{ "must": { "b2": "empty", "a3": "empty" } }, { "must": { "b2": "empty", "a3": "enemy" } }],
"c3": [{ "must": { "b2": "empty", "c3": "empty" } }, { "must": { "b2": "empty", "c3": "enemy" } }],
"d2": [{ "must": { "c1": "empty", "d2": "empty" } }, { "must": { "c1": "empty", "d2": "enemy" } }]
}
}
}
L-shape via orthogonal step then diagonal step. Blockable: leg square must be empty.
| First step | Leg | Destinations |
|---|---|---|
| North | (file, rank+1) |
(file-1, rank+2), (file+1, rank+2) |
| South | (file, rank-1) |
(file-1, rank-2), (file+1, rank-2) |
| East | (file+1, rank) |
(file+2, rank+1), (file+2, rank-1) |
| West | (file-1, rank) |
(file-2, rank+1), (file-2, rank-1) |
5.8 Chariot
{
"X:R": {
"a1": {
"a4": [
{ "must": { "a2": "empty", "a3": "empty", "a4": "empty" } },
{ "must": { "a2": "empty", "a3": "empty", "a4": "enemy" } }
]
}
}
}
Any number of squares orthogonally (like Chess Rook). Path must be clear.
5.9 Soldier (before river)
{
"X:S": {
"e3": {
"e4": [{ "must": { "e4": "empty" } }, { "must": { "e4": "enemy" } }]
}
}
}
One square forward only. Crossing river mutates S → +S.
5.10 Soldier (after river)
{
"X:+S": {
"e5": {
"d5": [{ "must": { "d5": "empty" } }, { "must": { "d5": "enemy" } }],
"e6": [{ "must": { "e6": "empty" } }, { "must": { "e6": "enemy" } }],
"f5": [{ "must": { "f5": "empty" } }, { "must": { "f5": "enemy" } }]
}
}
}
One square forward or sideways. Cannot move backward.
6. Special Move Notation
Encoded in PMN.
| Move | PMN | Description |
|---|---|---|
| River crossing | e4-e5 |
Soldier crosses river, mutates S → +S |
| Soldier promotion | e8-e8/E |
Soldier on last rank promotes to Empress |
| Face-to-face | e4~e4 |
Both Generals transform to Dragons |
6.1 Face-to-face transformation
When both Generals occupy the same file with no pieces between them, both immediately transform to Dragons:
G^→D^g^→d^
This is triggered by any move creating the alignment (General move or intervening piece removal).
6.2 Soldier promotion
When a Soldier ends a move on the last rank (rank 8 for South, rank 1 for North), promotion is optional. Choices:
| Promotion | Result |
|---|---|
| Empress | E / e |
| Advisor | A / a |
| Cannon | C / c |
| Chariot | R / r |
| Bear | B / b |
| Horse | H / h |
Promotion to General or Dragon is forbidden.
7. Termination
Status values from CGSN with game-specific interpretation.
7.1 Decisive
| CGSN Status | Result |
|---|---|
mareking |
Terminal Piece (General or Dragon) captured → capturing player wins |
stalemate |
No legal move → active player loses |
resignation |
Resigning player loses |
repetition |
Player causing repetition loses |
7.2 Draw
| CGSN Status | Condition |
|---|---|
insufficient |
Both sides have only their Terminal Piece remaining |
movelimit |
50 moves without capture or Soldier move |
8. Constraints
Rules transforming pseudo-legal moves (GGN) into legal moves.
8.1 No check constraint
Responding to check is not mandatory. A player may leave their Terminal Piece (General or Dragon) in check. If the Terminal Piece is captured, the game ends immediately.
8.2 Stalemate is loss
Unlike Chess, having no legal move results in a loss for the active player.
8.3 Repetition
A move is illegal if it:
- Uses the same piece
- From the same origin
- To the same destination
- With the same promotion choice (if applicable)
- AND produces an identical position to one that occurred previously
Position identity includes:
- All piece positions
- Active player
The player committing such repetition loses immediately.
8.4 No drops
Captured pieces are stored in Hand but cannot be dropped back onto the Board.
9. Reference
10. License
Open Web Foundation Agreement 1.0 (OWFa 1.0) — OWFa 1.0
