__
_____/ /_ ____ ____ _____ ___ __
/ ___/ __ \/ __ \/ __ `/ __ `/ / / /
(__ ) / / / /_/ / /_/ / /_/ / /_/ /
/____/_/ /_/\____/\__, /\__, /\__, /
/____//____//____/
shoggy is a 6x6 board, fairy chess variant with spell cards, written in Emacs Lisp.
shoggy was developed during the Spring Lisp Game Jam 2024.
- GNU Emacs 29.3 with SVG support (probably runs on older versions too)
- There are no third-party packages required.
;; Manual install
;; clone this repo:
;; git clone https://github.com/bcardoso/shoggy
(add-to-list 'load-path "/path/to/shoggy")
(require 'shoggy)
;; With use-package + straight.el
(use-package shoggy
:straight (shoggy :host github :repo "bcardoso/shoggy"
:files (:defaults "images" "sounds")
:build (:not compile))) ;; compiler won't be happyM-x shoggy RET
You can adjust and toggle some game options in the main screen.
- No checks, no castling: when the
Sageis captured, the game ends! - No en passant: pawns can move one or two squares in their first move (you can toggle this behavior), and that’s it.
- When a player is out of moves, it’s game over.
- In each turn, you can either move a piece or cast a spell: you are given a spell card after every capture.
- You can’t hold more than 3 cards at a time: cards are randomly discarded if your hand is full.
- All else is pretty much chess.
shoggy has standard and non-standard pieces:
| Name | Atom | Range | Value | Description |
|---|---|---|---|---|
| Pawn | P | 1 or 2 | 1 | A pawn |
| Ferz | F | 1 | 2 | Advisor, like a 1 square bishop |
| Wazir | W | 1 | 2 | Like a Rook, also moves 1 square |
| Knight | N | 2,1 | 3 | 2,1 Leaper |
| Rook | R | board | 5 | Same as a Rook |
| Sage | S | 1 | 99 | Like a King, but wiser |
After each capture of an enemy’s piece, you earn a spell card. In your turn, you can either move a piece or cast a spell.
There are three types of spells (for now):
| Spell | Description |
|---|---|
| BOOST | Boost a piece’s range (applies to Ferz or Wazir) |
| PROMOTE | Promote a piece (Pawn -> Ferz/Wazir -> Knight -> Rook) |
| DEMOTE | Demote an enemy piece (Rook -> Knight -> Ferz/Wazir -> Pawn) |
shoggy has two engines to play against: dumbfish and sanefish.
- dumbfish
- tries to capture pieces or makes random moves
- sanefish
- tries to be a more reasonable fish (the default)
shoggy was loosely inspired by Shogi, a Japanese chess variant (which you can play online at https://lishogi.org/).
At first I was planning to make a Minichess/Los Alamos chess variant, but I soon started to deviate into other directions.
I also had this idea a long time ago about adding playing cards into the game of chess. Perhaps in the future I’ll add some more spell cards to shoggy. Also, check out Knightmare Chess, which I discovered during my research of the Game Jam.
So there are hundreds of chess variants and fairy chess pieces out there. This is my own :)
- List of chess variants
- Shogi variants
- Fairy chess piece
- List of fairy chess pieces
- Chess Programming Wiki
I’m thankful to the creators mentioned below for sharing their work under free and open-source licences.
- Piece art: Pixel Chess Pieces by Lucas312 (CC3.0)
- Splash screen: button select.wav by MakoFox (CC3.0)
- Board start: Board Start.mp3 by el_boss (CC0)
- Piece move: chess_move_on_alabaster.wav by mh2o (CC0)
- Piece capture: Piece Placement.mp3 by el_boss (CC0)
- Boost spell: Dialogue box.wav by MakoFox (CC3.0)
- Promote/Demote: Puzzle piece placed on board by el_boss (CC0)
- Card vanish: Shuffle cards by Breviceps (CC0)
- Game end: chess-piece-bounce.ogg by pbimal (CC0)

