The Chess Variant Pages

Check out Marseillais Chess, our featured variant for February, 2024.

Play-test applet for chess variants


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.

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.

Chess-variant play-test tool

Board format
Files: Ranks:
Promotion zone (ranks):
Specify more rules
satellite=playtool graphicsDir=/graphics.dir/alfaeriePNG35/ whitePrefix=w blackPrefix=b graphicsType=png squareSize=35 lightShade=#e8c080 darkShade=#a89060 symmetry=none promoZone=0 maxPromote=0 promoChoice= useMarkers=1 royal=11 enableAI=2 pawn:::::99 shatranj pawn:P:fmWfcF:pawn::99 omega pawn:P:fmWfceFifmW*:pawn::99 wildebeest pawn:P:fmW*fceF:pawn::99 berolina pawn:P:fmFfceWifnmA:berolinapawn::99 asian pawn:P:fW:chinesepawn::99 knight:N::::99 bishop:::::99 rook:::::99 queen:::::99 king::::e1,,e8:99 king (fast castle)::KispO6:king:e1,,e8:99 archbishop:A:BN:cardinal::99 chancellor:C:RN:::99 amazon:Z:QN:::99 wazir::W:::99 ferz:::::99 dababba::D:warmachine::99 elephant::A:::99 camel:::::99 zebra:::::99 giraffe::FX:::99 wildebeest:G:NC:wildebeest::99 hawk:H:ADGH:bird::99 unicorn::ympafsW:::99 squirrel::NAD:::99 snake:::::99 crocodile:::::99 frog::FH:::99 kangaroo:::::99 ram:::::99 ox:::::99 rhino::WyafsW:::99 tiger:T::::99 lion:L:KNADcaKmcabK:::99 gryphon:G:FyafsF:::99 dragon:::::99 grasshopper::gQ:::99 vao::mBcpB:::99 cannon:::::99 leo:L:mQcpQ:paovao::99 wide knight::sN:wideknight::99 narrow knight::vN:narrowknight::99 charging knight::fhNbFbsW:forwardknightbackwardsprince::99 charging rook::fsRbFbW:forwardrookbackwardsprince::99 half-duck (lion)::HFD:greatwarmachineferz::99 fad::FAD:elephantferzwarmachine::99 fibnif (lancer):L:FvN:narrowknightferz::99 bede::BD:bishopwarmachine::99 pegasus:::::99 nightrider::NN:::99 camelrider::CC:::99 dababbarider::DD:warmachinerider::99 elephantrider::AA:::99 amazonrider::QNN:::99 elephantrider ferz::FAA:elephantriderferz::99 elephantrider wazir::WAA:elephantriderwazir::99 elephant dabbabarider::ADD:elephantwarmachinerider::99 dabbabarider ferz::FDD:warmachineriderferz::99 dabbabarider wazir::WDD:warmachineriderwazir::99 wazirknight::WN:knightwazir::99 ferzknight::FN:knightferz::99 modern elephant::FA:elephantferz::99 phoenix::WA:elephantwazir::99 alibaba::AD:elephantwarmachine::99 kirin::FD:warmachineferz::99 woody rook::WD:warmachinewazir::99 camelwazir::WC:camelwazir::99 camelferz::FC:camelferz::99 camelguard::KC:camelguard::99 champion::WAD:::99 wizard::FC:moon::99 mage:::::99 fool::fI:::99 man::K:::99 guard::KAD:::99 archer:::::99 duke:::::99 minister:::::99 falcon::nCnZ:::99 halfbishop::B3:::99 halfrook::R4:::99 halfqueen::Q3:::99 flag:::banner::99 steward::mWcF:::99 lance::fR:::99 horse::ffN:::99 copper::vWfF:coppergeneral::99 silver::FfW:silvergeneral::99 gold::WfF:goldgeneral::99 tokin:+P:WfF:promotedshogipawn::99 promoted lance:+L:WfF:promotedlance::99 promoted knight:+N:WfF:promotedknight::99 promoted silver:+S:WfF:promotedsilver::99 dragon horse:H:BW:promotedbishop::99 dragon king:D:RF:promotedrook::99

Press after setting up:

Paste an existing diagram:


You can drag pieces from the table to the board.
Clicking on a piece name shows its moves

(Inaccessible board squares)

Click on the move of the piece you want to change,
in the table above, to give it the values below:

Betza move description:
New piece name:
New piece ID:
(Leave empty to keep old)

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

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

Automating Game Courier presets

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

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 the board diagram above. This would import the existin diagram, and you then have to just press the GAME-code button to generate the rule-enforcing GAME code for it.


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