Check out Makruk (Thai Chess), our featured variant for March, 2025.

Play-test applet for chess variants

Introduction

This page contains a tool that can help you play testing your chess-variant designs, by playing those against the generic AI of the Interactive Diagram. You just have to set up the initial position by specifying a board format (and pressing 'Apply'), and moving the pieces you want to participate from the table to the board. (You can drag them one by one, but as long as you are still in setup mode you can make multiple clicks on empty squares to place a bunch of them, and the opponent will automatically be placed as mirror image.) When the setup is as you want it, you can press 'Start Position' to let the computer know you are done. You can then press the 'Play it!' link below the board to start playing your variant against the AI.

You should primarily select the pieces by the desired image; When you are not happy about the move, name or ID that comes with it you can all change these: Just specify what you would like to have instead for a certain piece, and then click the move of that piece in the table. This should immediately display all new values for that piece. If you want to use the same image for two different pieces, you can use the 'Duplicate' button after selecting the piece.

The replacement move has to be entered in Betza notation (the XBetza extensions are understood). For people not familiar with that notation there is an aid for creating it near the bottom of the page; It doesn't handle really complex cases, such as bent sliders or locusts; for those you would really have to type the move. But the chances that you need any of those (that are not already in the table) are quite slim.

When changing the properties of a piece you can (optionally) also associate automatic promotions with it, i.e. type changes that are mandatory and do not involve any choice by the player. Such promotions can be a consequence of reaching a certain square, or of capturing a piece of a certain type (or even of moving without capture). For the first case have to define a 'morph board', where each square contains the piece you should promote to when reaching it. After clicking on the 'morphing & confining' link the board diagram will be temporarily cleared to set this up. For the other case a table with possible (black) occupants of a destination square is shown, and below each of those you can specify what should appear on that square when a (white) piece of the given type captures the shown piece. (This can even be a black piece!) You can also indicate the corresponding move is not allowed, by specifying a hole as promotion piece. This can be used to confine pieces to board zones, or set up a capture hierarchy. When you assign the specified board and capture table to a piece in the piece table, (by clicking the move of the latter), the morphing & confining section will close again, and the position that was on the board before will re-appear.

Board format
Files: Ranks:
Promotion zone (ranks):
Specify more rules

Board

    This diagram plays chess! Play it!

  After setting up:

Chess-variant play-test tool    

You can drag pieces from the table to the board, or place several of the same type by clicking multiple squares. Press the absentee button for participating pieces not in the setup.

(Inaccessible board squares)     

Click on piece name to see its move diagram.
IDwhitenrblacknrnamemove
P9999pawnifmnDfmWfceF
P9999shatranj pawnfmWfcF
P9999omega pawnfmWfceFifmW*
P9999wildebeest pawnfmW*fceF
P9999berolina pawnfmFfceWifnmA
P9999asian pawnfW
N9999knightN
B9999bishopB
R9999rookR
Q9999queenQ
K9999kingKisO2
K9999(fast-castling) kingKispO9
A9999archbishopBN
C9999chancellorRN
Z9999amazonQN
W9999wazirW
F9999ferzF
D9999dababbaD
E9999elephantA
C9999camelC
Z9999zebraZ
G9999giraffeFX
F9999frogFH
G9999wildebeestNC
H9999hawkADGH
S9999squirrelNAD
L9999lionKNAD
T9999tiger-
C9999crocodile-
K9999kangaroo-
R9999ram-
O9999ox-
S9999snake[vW?B]
O9999osprey[D?B]
R9999rhino[W?B]
U9999unicorn[N?B]
G9999gryphon[F?R]
D9999dragon-
G9999grasshoppergQ
V9999vaomBcpB
C9999cannonmRcpR
L9999leomQcpQ
W9999wide knightsN
N9999narrow knightvN
C9999charging knightfhNbFbsW
C9999charging rookfsRbFbW
H9999half-duck (lion)HFD
F9999fadFAD
L9999fibnif (lancer)FvN
B9999bedeBD
P9999pegasus-
N9999nightriderNN
C9999camelriderCC
D9999dababbariderDD
E9999elephantriderAA
A9999amazonriderQNN
E9999elephantrider ferzFAA
E9999elephantrider wazirWAA
E9999elephant dabbabariderADD
D9999dabbabarider ferzFDD
D9999dabbabarider wazirWDD
W9999wazirknightWN
F9999ferzknightFN
M9999modern elephantFA
P9999phoenixWA
A9999alibabaAD
K9999kirinFD
W9999woody rookWD
C9999camelwazirWC
C9999camelferzFC
C9999camelguardKC
C9999championWAD
W9999wizardFC
M9999mage-
F9999foolfI
M9999manK
G9999guardKAD
A9999archer-
D9999duke-
M9999minister-
F9999falconnCnZ
H9999halfbishopB3
H9999halfrookR4
H9999halfqueenQ3
F9999flag-
S9999stewardmWcF
L9999lancefR
H9999horseffN
C9999coppervWfF
S9999silverFfW
G9999goldWfF
+P9999tokinWfF
+L9999promoted lanceWfF
+N9999promoted knightWfF
+S9999promoted silverWfF
H9999dragon horseBW
D9999dragon kingRF
B9999badger-
B9999ballista-
B9999bat-
B9999bentferzhero-
B9999benthero-
B9999bentshaman-
B9999bentwazirshaman-
B9999bird2-
B9999bishopinv-
B9999bishoppawn-
B9999blindmonkey-
B9999blindtiger-
B9999butterfly-
C9999camelbishop-
C9999camelrook-
C9999cannonpawn-
C9999cardinal1-
C9999cardinal2-
C9999cardinalinv-
C9999cardinalrider-
C9999chameleon-
C9999chancellor1-
C9999chancellor2-
C9999chancellorinv-
C9999chancellorrider-
C9999checker-
C9999checkerking-
C9999chinesecock-
C9999coiledserpent-
C9999condor-
C9999coordinator-
C9999coordinator2-
C9999crookedbishop-
D9999desertferz-
D9999desertwazir-
D9999diplomat-
D9999drunkelephant-
E9999edgehog-
E9999elephantferzshaman-
E9999elephantknight-
E9999elephantwazirshaman-
E9999equesrex-
E9999evilwolf-
F9999ferociousleopard-
F9999flexibleknight-
F9999flyingbishop-
F9999flyingqueen-
F9999flyingrook-
F9999fortyeight-
F9999forwardchancellorprince-
G9999general-
G9999giant-
G9999gnu-
G9999goldpashtun-
G9999goldrider-
H9999halflingbishop-
H9999halflingrook-
H9999hare-
H9999highpriestess-
H9999horseferz-
H9999horsegeneral-
H9999horsewazir-
I9999immobilizer-
I9999irongeneral-
J9999javelin-
J9999jumpinggeneral-
K9999kingbishop-
K9999kinginv-
K9999kingrook-
K9999knightdabbabah-
K9999knightferzdabbabah-
K9999knightgeneral-
K9999knightguard-
K9999knightinv-
K9999knightpawn-
K9999knightwazirdabbabah-
L9999letter-
L9999letterpawn-
L9999longleaper-
M9999mammoth-
N9999nespearman-
N9999nspearman-
N9999nwspearman-
O9999oldmonkey-
O9999ostrich-
O9999owl-
P9999pawninv-
P9999pawnknight-
P9999pegacorn-
P9999plane-
Q9999queeninv-
Q9999quickpawn-
R9999recliningdragon-
R9999rookinv-
R9999rookpawn-
R9999rose-
S9999sabretooth-
S9999scorpion-
S9999scout-
S9999sergeant-
S9999ship-
S9999sidemover-
S9999sidemovergeneral-
S9999silverpashtun-
S9999silverrider-
S9999sissa-
S9999skibishop-
S9999skiqueen-
S9999skirook-
S9999skiskibishop-
S9999skiskiqueen-
S9999skiskirook-
S9999slidinggeneral-
S9999spider-
S9999squirrelgeneral-
S9999star-
S9999stone-
S9999stonegeneral-
S9999sun-
T9999templar-
T9999templarpawn-
T9999thief-
T9999tilegeneral-
T9999tripleelephant-
T9999tripleelephantwarmachine-
T9999triplewarmachine-
T9999twistedknight-
V9999verticalmover-
V9999verticalmovergeneral-
W9999warmachineferzhero-
W9999warmachinewazirhero-
W9999wheel4-
W9999wheel6-
W9999wheel8-
W9999wildebeestferz-
W9999wildebeestgeneral-
W9999wildebeestwazir-
W9999withdrawer-
W9999wolf-
Z9999zebrabishop-
Z9999zebraferz-
Z9999zebrawazir-
Z9999zigzaggeneral-

Betza move description: (aid below)
New piece name:
New piece ID:
(Leave empty to keep old) Morphing & Confining For defining
automatic
promotions

First specify the desired new values above, then click on
the move of the piece in the table that should get those.

Move definition aid

In the pane below you can define moves of a piece by clicking the squares it should be allowed to move to. First click defines a leaper move to the square. A second click would convert this to a slider/rider move that repeats that step/leap. A third click would remove the move again.

To limit the range of a slider you can click the first square along its path that it should not be able to reach. Clicking on the piece takes away all its moves, and thus clears the entire pane.


Add moves in panel to Betza description as:








(Tick, then click!)

Once you are happy with the move diagram you created in the entry panel, press one of the buttons to the right of it to add the move to the Betza description text entry. (Don't forget to clear that first, by pressing 'Clear All'!) You have a choice to add it as move-only, capture-only or both.

Before you click one of these buttons you can specify a few other properties of the move through tick boxes: whether it is to be used as initial move (i.e. on pieces that have not moved before), whether it should hop over one other piece (only sensible with rider moves), or whether it should be non-jumping (not sensible with leaps to adjacent squares). You would only rarely need any of those, so by default the checkboxes are unticked.

Note that you can always edit the move description that you created this way before you actually assign it to a piece in the table. E.g. when you needed a range limitation on a slider too large to fit into the panel; you would just specify a smaller range, and change the number in the resulting definition by typing.

As an example: to specify a FIDE Pawn you would click the square before the piece (forward is up!) and enter it by pressing 'Move-only'. Then you would click the squares diagonally in front, tick 'Also as en-passant capture', and press 'Capture-only'. Finally you would click the square two steps in front of the piece, tick the 'Initial move' and 'Non-jumping' checkboxes, and again press 'Move-only'. That should have filled the Betza move-description text entry with the Betza notation for the move of the FIDE Pawn.

Make your own Interactive Diagram

Tired of setting up the position for your variant every time you return here? You can post a version of the play-test tool that is pre-configured for your variant by putting an Interactive Diagram on a page of your own. The HTML code you would need to insert into such a page can be generated by pressing the button below.

Automating Game Courier presets

This applet can now also generate GAME code that can be copy-pasted into a Game Courier preset to make that rule enforcing. More details on how to do that will appear when you press the GAME-code button. There also is a tutorial on how to use this Applet for automating presets.

A table of pieces with verbal move description

The applet can also assist you in submitting an article to this website, by creating a table describing the pieces, which you could paste in the Pieces section of an article (in HTML mode). This table will show image, name and a verbal description of the move for each piece that occurs in the Diagram. This is not always perfect, in particular not for pieces with complex moves, but at least it would save you the work of describing the ordinary leapers, sliders and their compounds. Usually that leaves only few pieces where you have to correct the auto-generated description by hand.

Converting an existing Diagram

When there already exists an Interactive Diagram for the chess variant, you can use this facility without the need to recreate the Diagram from scratch, by pasting the description (the text normally within the HTML <div> tags) in the text entry below. This would import the existing diagram, and you then only have to press the GAME-code button to generate the rule-enforcing GAME code for it.

Paste Diagram description here:

  


      


This 'user submitted' page is a collaboration between the posting user and the Chess Variant Pages. Registered contributors to the Chess Variant Pages have the ability to post their own works, subject to review and editing by the Chess Variant Pages Editorial Staff.


By H. G. Muller.

Last revised by H. G. Muller.


Web page created: 2020-06-16. Web page last updated: 2020-06-16