You won’t need to check for program updates as these will be automatic unless you’ve turned off this Microsoft feature, in which case you will need to access the Microsoft Store and check for updates yourself.


  • Built-in playing engine
  • Options to include other engines
  • Endgame databases and adjustable opening book
  • Adjustable boards, pieces, piece size and fonts
  • Multiple board, piece and background styles
  • Adjustable piece movement
  • Game database management with drag/drop
  • Database filters
  • PDN validation
  • PDN multi-select
  • Game editor
  • Duplicate finder
  • Database global replace
  • User-editable opening classifications
  • User books
  • Game style – GAYP, 3-move, 11-man, 2-move
  • Game comments and move strength indicators
  • Search for tags, openings, positions, themes
  • Engine matches
  • Recover previous games
  • Printing games (with diagrams)
  • Exporting games to HTML and Video
  • Position setup
  • Copy/paste multiple games and FEN tags
  • Easy management of player names and events
  • Human vs computer mode
  • Two-player mode
  • Infinite Analysis mode
  • Autoplay
  • Automated game analysis
  • Game replay
  • Training levels
  • Time controls
  • Match adjudication settings
  • Sound effects
  • Sample game database

The built-in playing engine (“ZoeEngine”) includes these features:

  • Large opening book with strength options
  • Built-in 6-piece endgame database – Win/Loss/Draw and Distance-To-Win
  • Can use larger downloaded endgame databases, e.g. 8 or 10 pieces
  • Adjustable hash table and database settings


CheckerPlayer is heavily influenced by Martin Fierz‘s “Checkerboard” which for many years has been the go-to checkers program for amateurs and professionals alike.  It was Martin who designed the original engine API that allows GUIs to interface with checker-playing engines.  Martin has his own checker engine, Cake, which can be obtained from along with many fascinating articles on checker programming.

CheckerPlayer’s built-in “ZoeEngine” uses the endgame databases and access module developed by Ed Gilbert and my thanks to Ed for his patient explanations of how it works.  Ed has been at the forefront of checker programming for decades and his Kingsrow engine is currently considered the best around.  Kingsrow (plus Ed’s larger endgame databases) can be found at

Both Kingsrow and Cake can be downloaded from the above sites and used in CheckerPlayer.  It is recommended that you download the latest 64-bit versions of the engines, as 32-bit engines will not work in CheckerPlayer.

You can’t write about computer checkers without mentioning Jonathan Schaeffer and his Chinook program, which you can read all about in his book “One Jump Ahead”.  Jonathan and his team were the first to develop a truly world-class program and its exploits are legendary, not only for its playing achievements and use of ground-breaking techniques but for the inspiration it has provided to others.

David Levy’s “Computer Gamesmanship” was the book that sparked my practical interest in game-playing programs way back in 1983.  I’ve still got it.

The supplied sample game database is a selection of games from a game collection (the Open Checker Archive) originally compiled by Hans L’Hoest and Jim Loy.  The full-size collection of 20,000+ games can be found online in various places.

Finally, my father.  He and I enjoyed many happy games together, a tradition I now continue with my daughter.

The sections below explain some of the basics of CheckerPlayer followed by a more in-depth description of the menu options.

The Basics

How to Move and Play

The CheckerPlayer interface has four main areas: the Board Panel, the Game Score Panel, the Database Panel and the Engine Output Panel.

There are two ways to enter moves  –  click and drag, or just click.  In click and drag, you can play moves on the board by dragging pieces with the mouse.  The program tracks movement of the mouse so that you can move and jump similar to how you might on a real board.  For example, to move from square 8 to 11 above, just left-click and drag with the mouse.


For jumps, drag the piece over the same squares as you would on a real board.

In the example above, the jump is 4x11x20.  You can drag the red piece on square 4 over squares 8, 11, 16 and 20.  In most cases you don’t even need to do the full drag – you could drag from 4 to 11, and when you let go of the mouse button, CheckerPlayer has enough information to know that you meant 4x11x20 and it will play the move.

For more complex “branching” jumps, you might need to drag through the full path so that CheckerPlayer knows exactly which jump you want to play.


If you want to just click squares instead of dragging, you can do that too.  On the left image above, the piece on square 5 has only one possible move, which is to square 9.  You can just click on squares 5 or 9 and the move will be made.  The same applies to the piece on square 1  –  you can click on 1 or 6.  With the image on the right, the red piece on square 16 has two possible moves.  To move from 16 to square 19, you can’t just click on square 19 because CheckerPlayer will not know which piece you want to move there (the piece on square 15 can move there too).  But you can click on square 16 to highlight the piece and then click on square 19 to make the move.


You can use the click method for jumping too.  On the left you can see a simple double jump, starting with the piece on square 5 and jumping to 14 and 7.  Because there is only one jump, you can simply click once on any of the squares 5, 14 or 7 and the jump will be made with no need to click on anything else.

On the right is a branching jump, where the piece on square 3 can jump left 3x12x19 or right 3x10x19.  In this situation, just clicking on the final square 19 won’t work because CheckerPlayer won’t know which jump you want to play.  However, if you click on square 12 or square 10 then this would clarify your intention and the appropriate jump to the left or right will be made.  With more complex branching jumps, you will need to click the start square and then click multiple jumping squares to make it clear what you want.


To navigate through the game you have plenty of options. You can use keyboard controls:

W: Go to the start of the game

S: Go to the end of the game

A: Step back one move

D: Go forward one move

The simplest way to step back and forwards is to use the mouse wheel.  When the mouse is hovering over the board, roll the mouse wheel to quickly navigate through the game.

To navigate the game you can also use the Game menu and the orange icons above.

The "Move Now" icon (you can use the space bar too) will make the engine play a move immediately if it is already thinking, or alternatively it will start thinking and then play a move. The length of time taken for a move depends on the allocated time in the Levels menu.
You can start a new game by right-clicking on the board to see the context menu, or you can use the File menu or the icon shown here.
As you play through various games, you may wish to go back to a game you were looking at earlier. You can find these games by using the arrows above. A full list of these games can be found on the Game menu under "Recover Previous Games..."

The default mode is “Single Player” – when you play a move, the computer (actually the primary engine) will reply.  The time it takes to reply will depend on the time that is selected in the Levels menu.

In the Mode menu you can choose other modes too, for example Two Players which allows you to play moves manually for both sides with no computer interference.

There is also an Infinite Analysis mode which lets the primary engine think indefinitely and show its thoughts in the Engine Output Panel.  In this mode you can still make moves manually and also force moves to be made with the spacebar, the “Move Now” icon or the Game menu.

Single Player
Two Players
Infinite Analysis

The Game Score Panel

The Game Score Panel appears on the top right of the screen and shows the moves of the current game.  There is a game header showing the basic details of the game such as player names, event, result and so on.  A right-click here will allow you to change these details.

Immediately under the header is a small area where you can right-click and add an introductory text to the game, for example giving a biography of the players or the opening name.  This text appears in green.

Following this is the main game score with the moves of Black and White (in CheckerPlayer we take the convention of assuming “Black” can mean “Red”).  Moves can be clicked to navigate to that move in the game, or right-clicked for a context menu which allows you to add comments to the moves or strength indicators (!!, !? etc.)

You can also double-click on a move to add a comment.

If you left-click and hold the mouse down, you can drag the game to the Database Panel where it will be added to the database.

Using the View menu, you can switch from a horizontal game score layout to a vertical layout as below:

The Database Panel

On the middle-right of the screen you can see the on-screen database.  Initially the database will appear empty, so you will probably want to open a PDN file.  This will load the PDN into the database (with some basic validation to ensure it is readable).  The database is essentially a convenient in-memory copy of the PDN.


You can think of the database as a sandbox where you can edit/delete/insert/reorder games without doing any damage to your PDN files.  The Database Panel allows you to perform actions such as:

  • Searching for games, openings, positions, players, moves, comments and other data
  • Game validation
  • Finding duplicate games
  • Organising player names and events
  • Replacing data
  • Sorting and filtering
  • Editing games
  • Comment removal
  • Database statistics
  • Adding new games
  • Deleting games
  • Replacing games
  • Batch analysis of games
  • Renumbering
  • Drag and drop games

When you have finished your database edits, you can save it as a PDN, perhaps creating a new PDN or appending/overwriting an existing PDN if you like.  The games will be saved to the PDN in the same order as you see them on-screen, and if you have applied filters then you will be asked if you wish to save just the visible filtered games or the entire database.

For even more control, you can select database games using shift-click or ctrl-click and just save those particular games using the option on the File menu or the database context menu.  In this way you can generate custom PDNs that contain exactly the games you want and in the order you want.

Double-clicking on any game in the database will open it in the Game Score Panel for you to play through and edit.

The Database Panel has its own context menu which can be accessed by right-clicking.  The main menus, specifically Database and Search, have more comprehensive options.

Database Filtering

As you can see on the image below, there is a magnifying glass symbol on each column header.  Clicking this will give you access to the filters where you can enter text or select items to filter the database to your liking. 

For example, to select games with Tinsley playing Black, click the icon on the Black column and type tinsl (it’s case insensitive).  This will show you all such games (of course, if you have players called Tinslo or Stinsland it will show you those too, so you may wish to be more specific with your filters). 

Multiple filters can be applied, in our example below we’ve filtered by all games where Tinsley played Black and which he won.  You could also, for example, filter by games which include certain moves.  To show games with comments, enter a brace symbol { into the Score filter.  All PDN games encapsulate comments in braces, so this is a quick way of finding those.

On the right of the Database Panel you can see two numbers in red, this shows you the number of filtered games and the total number of games.  Saving the filtered database as a PDN will give you a PDN file containing only those games, which in our example would be a PDN file with 81 games.

To remove any filtering, click on the green X in the top-right corner.

The example shows that we’ve sorted the games by White player and date.  You can do this by clicking and shift-clicking the headers.  Sorted columns are shaded in light blue.  Again, if you save the database as a PDN, the games will be in the order that you see.

Database Drag and Drop

You can organise your database games in various ways as we’ve already discussed.  If you are compiling games for a collection and you need your games to be in a specific order, you can move them around using drag and drop.  Simply left-click and hold down the mouse button to drag the game to the required place.  You can also drag it to the Game Score Panel to play through it.

If your database games have been sorted or filtered, moving games around with drag and drop may not be very useful.  However if the games are unfiltered and sorted only by the ID column then it’s very easy to position games exactly where you want.  This is the recommended approach if you want to compile game collections, as you can not only move games to specific positions but also add games at specific positions too, e.g. by dragging from the Game Score Panel to a particular position in the database.

This can be made easier by using the Renumber facility on the Database or context menu.  If your games are sorted a certain way and you want to make the sorting permanent, you can renumber the games which will re-sequence them starting from 1.

A quick note about ID numbers:  these are not set in stone, and can change if games are deleted or added.  However, if you have x number of games, the ID numbers will always range from 1 to x with no gaps.

The Engine Output Panel

The Engine Output Panel displays the thoughts of the primary engine.  The default ZoeEngine (in contrast to other engines you may install) has an enhanced display with shaded boxes that show key information.  At the moment this enhancement can be provided only for ZoeEngine, this is due to the fact that engine output is not consistent, although this could change in the future.

  Clicking the plus symbol changes it to a minus symbol and displays the engine output as a list of possible moves with their scores and variations.  This is very useful for game analysis.  There is an analysis mode that makes good use of this and inserts the engine output in the game comments.  Displaying the output in this way has an impact on engine performance and I recommend you use this facility for analysis only.  Some other engines have this facility, however the way they display the scores and variations will be different to ZoeEngine.


The following notes only cover the nuances of ZoeEngine’s output.  Usually, 3rd party engines will have a help document to explain their own output.

The score box shows you the current score, this will be positive to show a Black advantage and negative for White.  The larger the score the larger the advantage.  Scores with an asterisk (*) indicate a result from the endgame database, for example score of 0* means that it’s a database draw.   A value such as -5235* means that White is winning and the database confirms that it’s a win.  A value of 80, with no asterisk, means that Black has a good advantage, perhaps even winning, but the database cannot confirm the win.  If the game can be seen to a win/loss conclusion you will see the # symbol appear, for example +#25 means that the engine can see a win for Black in 25 half-moves (ply).  A # score with an asterisk means that the engine has found the quickest win/loss using its DTW (Distance-To-Win) database.  So -#53* would mean that even with the best defence by Black, White can win in 53 moves.  The text “Book Move” shows that the position is in the opening book.

The next box is the current depth and the maximum depth searched.

Next is the number of nodes (positions) examined in the search.

The final box on the far right is the number of nodes per second being searched.

In the main engine output area you can see the score followed by a colon and the current best variation, together with the depth, the exact number of nodes searched, the number of database accesses and the time taken so far on this move.  Text such as “* : 4-8        {book…0/d9}”  shows that the position is in the opening book and the recommended move is 4-8, with a score of zero and this score was obtained from a search at a depth of nine ply.

The blue circle will flash when the engine is thinking.  Remember, you can always force a move by hitting the spacebar, the Move Now icon or by using the Game menu.

The green tick allows you to switch off the output, useful if you are playing engine matches or simply want to play without a distraction.  You can also slide the vertical bar to the right of the screen, allowing only the board to be visible.

The example below shows that the engine can see a guaranteed win for Black in 294 ply.  This position arises from [FEN “W:W20,K17,32,31:B4,K8,6,K13”] and was found using 8-piece Win-Loss-Draw and Distance-To-Win databases (WLD and DTW).  These databases can be obtained from Ed Gilbert’s site,

The diagram on the left shows the FEN position described above.  Note that there are eight pieces on the board, which means that the 8-piece databases we are using in this example can see the game to the end, a “Distance-to-Win” of 294 ply.

The default installation of CheckerPlayer contains 6-piece WLD and DTW databases and if you want to extend this to eight pieces to try out this position, or even ten (WLD only), you will need to download them from Ed Gilbert’s site.

In Depth: The Menus


New Game
Lets you start a new GAYP (go-as-you-please) game, the standard starting position of a normal game of checkers/draughts.

New 3-Move Game
Starts a new 3-move game, the format of which can be chosen from the Openings menu.  A 3-move game starts with three moves already played.  There are 144 standard openings for this format, which can be extended to 174 by using the Openings menu.

New 11-Man Ballot Game
In this type of game, a piece from each side is removed from the board and a move is played by each side.  There are 2500 variations that can appear, some of which are known to be losing.

New 2-Move Game
If you want to go old-school, you can play a 2-move game where a move is played by each side at the start.  There are 43 standard variations of this, and on the Openings menu you can include another four which are known as the “barred” openings.

Open PDN File…
Lets you open a PDN file and view it in the Database Panel, where you can navigate, sort, filter and edit the games.  Note that the original PDN is unchanged.  Basic validation is performed to ensure that the games are readable.  To keep it fast, move-by-move validation is not performed at this stage but will be invoked when viewing an individual game or when running the full validation from the Database menu.

You can open multiple PDN files in one go and they will all be loaded into the database.

When you install CheckerPlayer, the default folder is C:\ProgramData\CheckerPlayer\games and in this folder you can find sample games from the Open Checker Archive (see credits in a previous section).  ProgramData is a hidden folder so you may need to change your folder view options if you want to navigate to it using Windows File Explorer.

The default file type of a PDN file is *.pdn although CheckerPlayer gives you the option to open *.txt files and other file types.  Whichever file you open, it needs to be in the standard PDN format, in other words a simple text file (not *.rtf or *.doc files which might contain non-text characters).  When manually editing such files it is best to use Windows Notepad. 

Save Database as PDN File…
Your on-screen database can be saved with this option.  The entire database, including whatever ordering you may have performed on it, is saved to a PDN file and you can either create a new PDN or append/overwrite an existing PDN.

Save Current Game to PDN…
The current game shown in the Game Score Panel can be saved to a PDN file, creating a new PDN or appending/overwriting an existing one.

Save Selected Database games to PDN…
If you have highlighted some databases games (which you can do with a click, a ctrl-click or a shift-click) you can save these particular games to a PDN file, creating a new PDN or appending/overwriting an existing one.  This option is useful for compiling new game collections from existing collections.

Print Current Game…
Brings up the print preview dialog in preparation to print your current game (the one shown in the Game Score Panel).  If any of the comments in the game have the word “diagram”, a diagram will be inserted into the printout at that point.  You will have the option of printing diagrams with or without square numbering and with White or Black at the bottom.

You will also have the option of printing the game score horizontally, which saves space.

For example, the game score below would have the adjacent printout if square numbering was not selected, White was chosen to be on the bottom of diagrams and the vertical layout was chosen.

Print Current Position…
Brings up the print preview dialog with the game header and the current board position together with the move that was just played if any, and the FEN string for the position.  You will have the option of printing diagrams with or without square numbering and with White or Black at the bottom. 

For example, the position below is selected for printing with square numbering and with Black on the bottom.


Export game to HTML…

Creates an HTML file and an Images folder which you can open in a browser and play through.  The HTML has a navigable board (with numbered squares if you wish) and smooth-scrolling game score that keeps the board in view.  Clicking the moves in the score takes you to that position in the game and clicking an Auto button plays through the game automatically.  You can upload the HTML and Images folder to a website if you want to show games on your site.  If required, the piece and square images (which reside in the Images folder) can be altered in a photo editor.  When exporting to HTML, the contents of the Images folder will not be overwritten if they already exist.  If you are using your own images, or images from a previous version of CheckerPlayer, note that for the numbered board to work correctly, the pieces need to have transparent backgrounds.

The game below was created using the CheckerPlayer HTML export function and is displayed unaltered within an iFrame.  You should be able to click on the moves and scroll through the game.
(Some mobile browsers don’t scroll iFrames properly).


Export game to Video…
This will export a video of the current game as an mp4 file.  The video will contain the player names and event details, an animated board (with the same style and pieces that you are using currently) plus the moves and comments.  When generating the video, a speeded-up preview will be shown.

You can choose the size of the video, the font size, the delay between moves and an adjustment for commented moves.

The video is created with an aspect ratio of 9:16 which makes it ideal for viewing on smartphones.  It can also be embedded in websites.


If you have a database on-screen and you have made changes to it, you will get a reminder before you exit so that you can save it if you want.  The current game shown on the Game Score Panel will be retained for your next session.


Copy Current Game to Clipboard
Copies the current game to the clipboard as a PDN, you can also use Ctrl+C.   For example you could copy the game and paste it into an email, producing this kind of text:

[Black "Roberts, J."]
[White "Blakeley, W."]
[Date "1904.??.??"]
[Event "English Tourney 1904"]
[Round "?"]
[Site "?"]
[Result "0-1"]
1.12-16 24-20 2.8-12 28-24 3.9-14
24-19 4.3-8 22-18 5.11-15?? {Major mistake}
18x11 6.8x15x24 20x11 7.7x16 27x20x11 *

The above could also be pasted into another checker-playing program (and that includes CheckerPlayer).

Copy Selected Games to Clipboard
Copies any highlighted database games to the clipboard.

Copy FEN to Clipboard
Checker/Draughts games can identify a particular position using a FEN string, similar to chess.  You can copy the current position to the clipboard as a FEN string.  For example, here is the starting position as a FEN:


Copy Board Image to Clipboard
This copies the current board image to the clipboard.  You can choose various sizes for the image.  The image will be exactly as you have configured the board, with your selected board style, piece style and coordinates (if you have these turned on).

Copy Engine Output to Clipboard
This copies the current Engine Output Panel to the clipboard.

Append Engine Output to Comment
This appends the current Engine Output Panel to the current move comment.

Paste Games or FENs from Clipboard
If you have one or more games or FEN codes in the clipboard, they will be pasted to the Database Panel and you will be asked if you want to append or overwrite your existing database games.

A useful feature of CheckerPlayer is an enhanced game pasting algorithm which allows you to paste a variety of game data even if it doesn’t match exactly the usual PDN standard.  The algorithm is slower than the usual “load PDN from files” algorithm but it can help greatly when pasting games from web pages.  In many (but not all) cases you can simply copy the entire web page and paste into CheckerPlayer. 

Colour to Move
This switches the player to move.  For example, you can start a normal game but with White moving first.  Changing the colour to move will reset the game score.

Setup Position
Allows board setup.  Clicking this item shows some extra icons on the board display:

The red X will exit setup.

The green bin icon will clear the board.

The setup icon will set the board to the start position.

The piece icon is used to set the colour to move.  In the example here, Black is to move.

To put pieces on the board, use the mouse to right-click and left click multiple times, which will cycle between pieces, kings and empty squares for each colour.

If you find that you can’t place a piece, it will be because the resulting position would be illegal, for example a piece (not a king) on the crowning rank.  However, you are allowed to place more than 12 pieces of a colour; whilst not technically legal, some puzzles require this.


Edit Selected Database Game
You can edit a highlighted game in the database with this option.  A panel will appear with the game tags and the game score, all of which can be edited.  The game is validated when you click OK.  This option is useful for correcting invalid game scores.  In the example below, you can edit anything and the corresponding game in the database will be updated.

If you have just performed a database action such as deleting games, removing all comments, overwriting the database by loading another PDN etc. you can undo that action immediately by using Undo.  Undo only applies to the immediate previous action, so you can’t undo two or more actions.

Clear Flags and Deselect All Games
If you have performed an action such as search or validation there will be games that bubble to the top of the database and they will be flagged.  This option will deselect those, returning the database to its normal display and removing the flags.

Clear Filters
Clears any database filters you may have applied, you can also click on the green X.

Add Current Game
This will add the current game (in the Game Score Panel) to the database.  If you have a highlighted database game it will be added immediately after that position (going by ID number).  If no games are selected, it will be added to the end and allocated a new ID number.  You can also drag and drop the game to the Database Panel. 

Delete Selected Games
If you have highlighted database games (one or more) you can delete them with this menu item or alternatively hitting delete on the keyboard will do the same.  Ctrl-A will select all database games.

Replace Selected Game
If you have highlighted a game in the database, you can replace it with the current game (the one in the Game Score Panel) with this option.

Global Replace…
There may be text in your database that you wish to change, for example event names, misspelled player names. or even moves and comments.  Using the Replace tags option allows you to make changes to selected games or to the entire database.

In this example we are replacing “Tourney” with “Tournament” in the Event tag.  We have chosen to perform our search/replace on any Event tag that has “Tourney” as part of the text (as opposed to searching/replacing the entire field) and we are applying it to all games in the database.

Improve Player Names…

It’s quite common to find misspellings in databases, or minor differences in the spelling of a player name.  For example,

oldbury, de
Oldbury, D.E.
Oldbury, Derek

…and so on.  The “Improve Player Names” menu item gives you a convenient method of consolidating these names.  In the example below we have opened a PDN of a few thousand games into the on-screen database and we’ve clicked “Improve Player Names”.

What we get is a sorted list of all the players in the database.  The list can be edited to consolidate the names where required.

Here we can see:

Oldbury D
Oldbury, D.E.
oldbury, de
Oldbury, Derek

If we think these are all the same person and we simply want  Oldbury, D.E.” then we can just edit the names.

Once done, click Refresh List to update the names.  Clicking OK will exit and apply the changes to the database.

This is a lot easier than going through the database game by game, or searching and replacing tags.

Improve Event Names…

The same consolidation can be done on Events, though this is less useful because Events often have game numbers in the title and you may wish to leave these as they are.

Remove Comments…
If you have annotated games you may sometimes wish to remove the comments.  With this menu item you can do this for selected database games or all games.  You will have the choice of removing any kind of comment, or just the introductory comment (which appears as green text on the game score).

Clean and Validate…
Not all PDN files follow the rules.  This menu item will perform minor formatting on the database games, for example adding move numbers where none exist, removing spurious spaces in move text and adding an opening classification.  But the real benefit is finding the games which have invalid moves.  These will be highlighted in red and the invalid games can be double-clicked to investigate the errors.

Here we’ve opened a PDN into the on-screen database.  We’ve run the Clean and Validate and it shows one game with errors:


If we double-click the game we get a description of the error:


CheckerPlayer has been able to validate the moves up until move 19.  The image below shows the game after White’s move 18.  Black now has two possible jumps:  19. 10x19x26 (which you can see on the Game Score Panel) and 19. 10x17x26.

If we right-click on the invalid database game (which was highlighted in red) and click “Edit Selected Database Game…” we get to the panel below and we can edit the moves.   

Looking at the panel we can see the original game score that was in the database.  We can see what the problem is: the score has this “shorthand” move:

19. 10x26

…which CheckerPlayer interpreted as 10x19x26   –  there were two ways that it could have captured:

10x17x26 or 10x19x26

The move after 10x19x26 according to the original database score is 18-14, which is possible if 10x17x26 was played but not if 10x19x26 was played.

So what we need to do to correct the problem is explicitly state the move as 10x17x26 rather than the short ambiguous version 10×26 that was in the PDN.

The easiest way to do this is simply to use the editing panel and change the moves:

Click OK to validate the game and the job is done.  If you were to now double-click the amended database game it will load correctly into the Game Score Panel.

There are other ways of editing the game.  You could also play it on the board, or physically amend the original PDN file in Windows Notepad, or use the Database menu option “Global Replace…” to replace the move text of the selected game, but a direct edit is the easiest.

Find Duplicates…

Duplicates are quite common in Checkers/Draughts games because of the nature of the game.  Duplicate games can be played by different players, even in the same tournament.  However, with large databases it is common to see invalid duplicate entries which are the same game and same players in the same tournament in the same round.  This menu item will help in finding duplicates of any kind.

Taking the option brings up a panel of parameters where you can find duplicates based on the game score alone (useful for the results of engine matches where you want to see how expansive the opening books are).  You can also perform fuzzy matching on player names and events which will be better at finding database duplicates that should not be there.

The results will be a list of flagged items.  In the image below you can see green ticked items and orange question-marked items.  CheckerPlayer thinks that the green items could be kept and the orange items (directly above the green) are likely to be duplicates and can possibly be deleted.  Obviously, some care should be taken.  Note a slight difference in the names (WF Ryan and Ryan, W.F.)  This is a result of the fuzzy matching which thinks that they are the same player.  The same matching is applied to the Events.

You can use ctrl-click to select multiple games and then delete with the delete key, the context menu or the Database menu.

Renumber Database

When you view the Database Panel you can sort the columns by clicking on them.  To sort by multiple columns, e.g. Date/Black/White etc. you can shift-click on the columns.  The ID column will then appear to be out of order but your Date/Black/White columns will be in the order you chose.

If you then save the database as a PDN file, the visible ordering is retained in the file so that it matches what you see on-screen.

If you are compiling a collection of games in a certain order (which may not be in any particular column order) you may wish to renumber the games so that they are all in number sequence, starting at 1. This cements the current ordering and allows you to conveniently add or move new games to specific positions in the list.

You can see the columns were logically ordered by Date/Black/White by shift-clicking.  Because of this, the ID column is now unordered.  If you added (or dragged) a game onto ID#143, it would be inserted as game #144 and might not be immediately visible because of the sorting that is applied.

After a database Renumbering, the games are permanently sorted by Date/Black/White and the ID column is now 1,2,3 etc.  If you added (or dragged) a game onto ID#2, it would be inserted as game #3 and would be visible between the Hay and Anderson games.

Database Stats

This provides some basic statistics in the status bar just under the engine output: the number of games, win/draw/loss percentages, average number of moves per game etc.  Filters are taken into account.

Session Database Log…
This shows the changes that have been made to the database (and/or any file activity) in this session.


Search Database…
This function lets you search for games, positions and openings.  You can search for players of any colour, events, dates, rounds etc.  You can also search in the game score itself for moves, comments or move strength indicators.  You can restrict the search still further by choosing only games that were won or drawn or lost by the player.  If you also have a position on the board you wish to search for, you can select the “Exact Position Search” to restrict the search to games with that exact position.  In addition you can perform a thematic position search, where you can find games that have a partial board position.  More on this in the sections below.
Any games found will be sorted to the top of the Database Panel and flagged.

Search Database for Current Position

If you have a position on the board and you would like to see if it appears in any games, you can search for it here.  Any games found will be sorted to the top of the Database Panel and flagged.

Search for Positional Theme
You can use Setup Position to create the key elements of a position, for example a strategic motif, and search for this in the database.  Any games which contain that partial position will be found and flagged. 

A restriction is placed on the minimum number of times in the game the theme should appear, this is to avoid situations where the position might appear fleetingly.  For a theme (e.g. a cramp) to be useful you may want it to exist in the game for a certain number of moves.  The appearance of the theme needs to be in an unbroken sequence and the default value is four times.  You can change this value in the next menu item.

The position on the left is a “cramp”, a strategic motif that appears in many games.  If Black moves any piece he loses material.

The game below has this theme 44 times!

Early on in the game it has little effect, but from move 25 onwards the cramp lives up to its name and in fact is still there at the end of the game.

To find this game, the theme parameter was set to 35 (the cramp appears in 35 continuous ply from move 25 to the end of the game).  We could have left the value at the default (four) but this would result in a lot of games being found.

Positional Theme Parameter…

As mentioned in the last section you can adjust this value to set the number of times a partial position should appear in a game (in an unbroken sequence) for it to count as a theme.

Allow Searches with Reversed Colours
There may be some occasions where you want to search for positions or themes where the colours are reversed and this menu item will allow you to do that.

Retrieve Last Searched Position
You can retrieve the previous search here.  It will appear on the board and you can edit the position or search again.


Move Now (Spacebar)
If the engine is thinking this will force it to make a move immediately.  If the engine is not already thinking, this will request it to start thinking and make a move.  The length of time it takes on a move is defined in the Levels menu.

Goto Start (W)
Takes you to the start of the game.

Goto End (S)
Takes you to the end of the game.

Forward (D)
Steps forward through the game.  You can also use the mouse wheel to navigate forward and backward.  Make sure the mouse is hovering over the board.

Takeback (A)
Steps backward through the game.  You can also use the mouse wheel to navigate forward and backward.  Make sure the mouse is hovering over the board.

Edit This Game…
Allows you to manually edit the tags and moves of the current game.  You can edit the players, the date, the event, the site, round, result, FEN and the game score itself.  Right-clicking on the Game Score Panel will provide this option too.  After editing the game, click OK to have it validated.

!! ?? !? …
Gives you the chance to select a move strength annotation, which is a combination of ! and ?.  For example, !! is great move, ! is good move, !? is interesting move, ? is bad move and ?? is blunder.  Right-clicking on the game score shows this option too.

Pre-defined Comments
Moves can be annotated quickly using this.  You can select from comment annotations such as “Black is winning” and so on.  Right-clicking on the game score also gives this option.

Edit Move Comment…
You can enter text manually to annotate a move.  Right-clicking on the game score also gives this option.

Edit Intro Comment…
In a PDN it is acceptable to place a comment before the first move of a game.  CheckerPlayer takes this as an introductory comment, where you can enter player biographies, opening names or whatever you like.  The comment appears in green at the top of the game score.

Clear All Comments…
This will remove comments and move strength indicators from the current game.

Recover Previous Games…
As you play through various games, you may wish to go back to a game you were looking at earlier.  Using this option, a full list of these games will appear with the most recent at the top.  Double-clicking a game will put it into the Game Score Panel.  You can also navigate through earlier games by using the “Previous” and “Next Game” buttons on the toolbar.  When you double-click on a game to retrieve it, the game you already had on the Game Score Panel is stored in the list (at the top, because it’s the most recent) for later retrieval.


Opening Book Strength
This will change the “opening strength” of the primary engine.  The available settings are Off, All Moves, Good Moves and Best.  These settings and their qualities are wholly dependent on the programmer of the engine.  Some engines do not have an opening book and this option will be disabled.  In general, All Moves should provide the widest range of openings whereas Best is usually limited to a smaller number of openings that are considered the highest quality.

Build User Book from this Database
There may be times when you want to play against a particular set of openings and you would like the engine to play those opening lines against you.  Although most engines have their own opening books, there is no way to do this with just the engines themselves.  This is where our User Book comes in.

A User Book can be set up to play lines that are in the on-screen database.  Lets say you want to play openings that start with the moves 9-13  22-17  13×22  26×17.  You can start by searching a database for the position after 26×17 or perhaps manually entering some games yourself if you know the lines.  You can even just filter by the required openings, for example clicking on the Score filter and entering 1.9-13 22-17 2.13×22 26×17

You can edit the games so that they have only the lines you want.  The lines can be any length, perhaps even full games.  Eventually you have an on-screen database of games that have the lines you want to practise with.  In my example below I have five full games by various players from various years, which I obtained using the Score filter:

We can now take the menu option, “Build User Book from this Database”.  This will generate a User Book from those games and activate it.  The User Book will take precedence over the normal engine opening book, so if you play 9-13 it will always reply with 22-17.  If you then play 13×22 the User Book is invoked again and the engine reply will be 26×17.  If you then play, say, 11-15, the reply will be a random choice from the User Book, i.e. 17-14 or 25-22.  The more lines you have in the User Book, the more variety of play you will have.

If you play a move that steps out of the User Book, the normal engine opening book will take over, and if the engine book doesn’t have a suitable move the engine will start computing a move.  

In this way you can play against a variety of openings with User Books that you generate yourself.  If you want to add/delete/amend lines in the User Book you would simply make those changes to the database and then click “Build User Book from this Database” again.

If you are happy with the lines in the User Book. you can save the on-screen database as a PDN file so that you can open it in your next session and set it as the User Book again.  If you don’t do this, you will lose the User Book when you close the program.  If you want to use a favourite User Book you must open its PDN file and build the User Book from the resulting on-screen database.

When the option “Build User Book from this Database” is selected, the User Book is generated from the on-screen database and saved in memory.  You could then open another PDN file and overwrite your on-screen database and it would not affect the User Book you have in memory (unless you decide to replace it using “Build User Book from this Database”).

Deactivate/Activate User Book
This gives you the facility to activate or deactivate the User Book that you generated.  The User Book stays in memory until the end of the session so you can do this as often as you like.

2-Move Deck
The 2-Move Deck defines the kind of game you will get when you choose to play a 2-move game from the File menu.  Two-move openings were once commonly played until they were overtaken in popularity by 3-move openings.

3-Move Deck
The 3-Move Deck defines the kind of game you will get when you choose to play a 3-move game from the File menu.

There are 174 positions in the full 3-move deck.  18 of these are considered losing openings and are not often used and there are 12 “drawable” starting positions.  The default setting for CheckerPlayer is the 144 standard openings.  You can mix these options as you wish.


Enable Opening Classification
When you play a game or load a game, if this option is ticked then you will see that the green introductory comment classifies the opening for you.  If the game already has an intro comment (and it wasn’t generated by the built-in opening classifier), it is left as it is.

Opening Classification List…
This will show you the active list of openings which can appear in the introductory comments.  Here you will see names such as “White Doctor”, “Switcher” and so on.

Navigate to Opening Classification Folder…
The file defaultopenings.pdn provides opening names and moves, for example “Twilight Zone” and “Alma”.  This is the CheckerPlayer default.  It is a normal PDN file and editing or deleting the file will have no effect on the function of CheckerPlayer.

If you want to add new openings or change the existing ones, you can make a copy of the file and call it:


The next time you start the program, useropenings.pdn will be used as the source of the opening names and moves.  You can edit this file as desired, adding/deleting/amending openings.  It is recommended that you make a backup of your file (to a different folder) in case you lose it or it is deleted.


Single Player
This is the normal mode of operation for CheckerPlayer  –  when you play a move, the primary engine will reply with its own move.

Two Players
This allows you to enter a series of moves for both sides with no engine interaction.

Infinite Analysis
Lets the computer analyse the position and output its thoughts in the Engine Output Panel.  You can navigate through a game and the engine will continue analysing.

Problem Solving Mode
This option is only visible when an engine that supports it (for example the recent versions of Kingsrow) is set as the primary engine.  Problem solving mode is useful for solving “pitch” (sacrifice) problems for which normal playing modes may not be designed.  When selected, Infinite Analysis is started, the Engine Output Panel turns blue and the Infinite Analysis icon displays an “S”.  Selection of other modes, or other engines, will switch off this mode.

Autoplay (Primary Engine Only)
Lets the primary engine play a game against itself.  The duration of each move is defined by the Levels menu.

Autoplay (Primary vs Secondary)
Lets the primary engine play a game against the secondary engine.  The duration of each move is defined by the Levels menu.

Replay Game
You can use this option to replay the current game automatically, with a defined number of seconds between each move.

Replay Selected Database Games
You can use this option to replay any highlighted database games automatically, with a defined number of seconds between each move.

Analyse Current Game…
If you have a current game in the Game Score Panel, you can use the primary engine to analyse each move and save the analysis in the move comments.  You will be asked if you want “best move” analysis or “all moves” analysis.  The latter is quite insightful as you can see every score of every move and (in the case of ZoeEngine) the principal variation of every move.  Not every engine has this facility.

Please be aware that not every engine works the same way, so the results of analysis (and the presentation of it) may differ.

Analyse Database Games…
Performs the same analysis as above but will be applied to any selected database games.  With this option you can analyse multiple games in a batch and each game will be replaced automatically in the database with its new annotations.


Training Levels
(Works best with ZoeEngine).  There are a variety of training levels, some easy to beat and some less so.  All of them play quite quickly.

Average Time per Move
Engines can play in two time modes, average and exact.  Average means that the engine will attempt to maintain the selected time per move as an average over a game and will sometimes exceed it.  Not all engines adhere perfectly to this rule so your mileage may vary.

Exact Time per Move
Exact means that the engine will attempt to maintain the selected time per move as a maximum and in theory should not exceed this time for any particular move.  Some engines may not adhere to this rule.

0.01s  –  20m
This is the time to be allocated per move for the engine.  The time may be exceeded if the “average” setting is chosen.

This allows the setting of time limits for these kinds of games.  Blitz and Rapid are fast time controls where all moves have to be played within the set time.  An increment can be set per move to add extra time on.  A panel will appear to explain the options:  the time limit is entered with the initial time (in seconds) followed by the increment (again in seconds), for example “20 1” would be 20 seconds for all moves plus one extra second for every played move.  Alerts are not generated if the time is overrun.

This allows the setting of your own preferred time limit.


As well as the view options below, bear in mind that you can adjust the panel dividers to your own preference.  For example, you can get a “full screen” effect by moving the vertical divider to the far right of the screen which will show just the board in the centre of your monitor.

Flip Board
Turns the board upside-down.

Hides the pieces from view, the same effect as clicking the green tick on the board.  Useful for engine matches where you don’t need to see the moves and want a little extra GUI performance, or if you really want to play blindfold of course.

Show Engine Output
Hides/shows the engine output, useful if you don’t want distractions when playing or if you are running an engine match and want extra GUI performance.  Green tick does the same.

Show All Scores
The same as clicking the plus symbol on the Engine Output Panel, this displays the engine output as a list of all possible moves with their scores and variations.  In ZoeEngine this also works for book moves if the moves are in the book.

This is very useful for game analysis.  There is an analysis mode that uses this functionality and inserts the engine output in the game comments.  Displaying the output in this way has an impact on engine performance and I recommend you use this facility for analysis only.  In engine matches and some other game modes it is disabled.  Not all engines have this “all scores” facility so in some cases the option is disabled.

Show Game Score
Hides/shows the game score, useful if you don’t want distractions when playing or if you are running an engine match and want extra GUI performance.  Green tick does the same.

Game Score Layout
Allows you to select a horizontal or vertical game score layout.  The horizontal layout takes up less space on screen, but the vertical layout is arguably easier to read.

Show Coordinates
Hides/shows the board coordinates.

Coordinate System
You can switch between the classic board coordinates for Checkers/Draughts or you can use chess coordinates (of the kind that appear in the book “One Jump Ahead”).  ZoeEngine will output moves in the engine output window in that format too, but other engines do not have this facility (unsurprising since it’s not in the official API).  The Database Panel will always show moves in the classic format.

Sound Effects
These can be switched on and off.  Yes, those are real pieces you can hear  –  no expense spared.

Movement Speed
The speed of the pieces when moving can be adjusted here, from Instant to Very Slow.

Board Backgrounds
A variety of board backgrounds, such as simple colours and textures, can be chosen here.

Board Styles
Board styles are available here, including standard green and buff, wooden boards and the red and black one you had as a kid.

Piece Styles
A choice of pieces is provided here, ranging from red, white, natural wood, black and plastic.

Piece Size
Change the size of the pieces here to suit your preferences.  Use the slider to go big or small.

Set Red/Black Naming Convention
A regulation Draughts/Checkers set uses red and white pieces.  Sometimes, you will see black pieces used instead of red, particularly on websites or the printed page.   This can be a little annoying since you can have both “Black Wins” and “Red Wins” depending on the author.  The default in CheckerPlayer (as of version 1.5.0) is “Red”, but if your preference is for “Black” you can set this on the View menu.  If you open a PDN game and it has comments such as “Black is winning”, these will remain untouched. 

Font Size
Use the slider to change the font size on the main panels, including the board coordinates.  You can also use ctrl+mousewheel to do the same.

Some example configurations below, showing a selection of boards, pieces and sizes:


For instructions on how to import 3rd party engines such as Kingsrow and Cake into CheckerPlayer, look below for the menu item “Navigate to Engine Folder”.

There are two engines, Primary and Secondary.  The primary engine is the one you play against and analyse with in the main interface.  The secondary engine can be used for Autoplay games or for engine matches to test one engine against another.  In the sections below you can learn how to install engines into CheckerPlayer.  For suggestions of engines you can use, see the Additional Info at the end of this help page.

The engine parameters will normally be retained from session to session (depending on the quality of the engine) and in the case of ZoeEngine the primary and secondary values can be changed independently of each other.  3rd party engines tend to retain their data in the registry which means that if both primary and secondary point to the same engine then the parameters will end up being the same and this may not be obvious at first glance.  Another effect of the registry is that if you switch to/from another program like Checkerboard, the settings you used in that program (such as the location of endgame databases or opening books) will be retained.  There are a few minor issues regarding compatibility between CheckerPlayer and Checkerboard.  For example, CheckerPlayer likes to have a full path specified for things like database folders, whereas Checkerboard is happy with a relative path (relative to Checkerboard that is).  CheckerPlayer tries to smooth things over somewhat when it spots this, but if you frequently switch from one program to the other, be prepared to tweak the engine settings sometimes.

Please bear in mind that engines are not always consistent.  Some have disabled options, or options that might work in a different way to other engines.  Some engines may have bugs and these can even cause crashes.  I’d be interested to hear about any of these and of course any problems you have encountered with CheckerPlayer or suggestions for improvements.  I’ve put some extra notes about this in the Additional Info section at the end of this document.

Engine Parameters
If you are familiar with Martin Fierz’s Checkerboard then you will know many of the options on this dialog.  Since the secondary engine options are the same as the primary, I’ll just cover the primary.  In contrast to Checkerboard, the “Show all Scores” facility has been removed as it is available to select on the main interface and only really applies to the primary engine anyway.  The same goes for the “Solve Mode”.

Primary Engine

This is a drop-down of the engines that exist in the engine folder.  Anything with a DLL suffix will appear in this list.  ZoeEngine always appears at the top  –  it’s the default engine built-in to CheckerPlayer and if problems are detected with other engines the interface will default to ZoeEngine.

Usually the engine folder will contain engine DLLs, opening book binary files and sometimes help documents too.  The engine folder is:

This ProgramData folder is a Windows hidden folder.  More on this below, but you can navigate to it more easily if you set the “view hidden folders” option in Windows.

After installing CheckerPlayer, this folder has no 3rd party engines installed but you can add them yourself by depositing them in the folder (there is a handy option on the main Engine menu that navigates to this folder, described later).

Engine Name
This is the name that the engine has given itself.

Hash Table Allocation (MB)
Most engines will maintain an internal hash table to speed up processing.  You can adjust the size of this.  Larger hash tables don’t usually add much benefit since they can’t be filled adequately in the available time, but it is recommended not to go below 256MB.  The hash table size you choose may not be fully utilised, this is due to the way the engines work.  You can see the actual hash size if you click on the “OK (with info)” button.  Normally, the hash size used by the engine can be increased only by doubling it.

Endgame DB Allocation (MB)
Some engines such as ZoeEngine can use an endgame database to play perfect moves at or near the endgame.  ZoeEngine comes with the de facto standard checkers endgame databases, namely Ed Gilbert’s which he developed over many years and are used in ZoeEngine with kind permission.  The supplied databases are 6-pieces and for these the default 64MB is more than enough.  For larger databases, which you can download from Ed’s site, you will need more memory allocated to improve performance.  For 8-piece databases, 4GB or more is recommended.  For 10-piece databases, which are about 100GB on storage media, you need as much memory as possible to get the best performance.  The supplied AUX database  –  Distance-To-Win (DTW)  –  has memory allocated by ZoeEngine automatically and so the value you enter here applies to WLD databases only.

Opening Book
As noted in previous sections, this can be set to Off, All Moves, Good Moves and Best.  All Moves gives the widest variety of openings but the behaviour of this is dependent on the engine.

Win/Loss/Draw Database
Some engines such as ZoeEngine can use WLD databases.

    • Limit Max Pieces: If you are using a large WLD database, say 8 pieces and you want to limit it to 6, you can do that here.  The default is unlimited.
    • Directory: This is the location of the WLD database.  The default installation of CheckerPlayer creates a folder:  C:\ProgramData\CheckerPlayer\db\WLD  which holds a 6-piece Win-Loss-Draw database.  This can be replaced with a larger database if desired, or if you already have one on your machine you can change the Directory to point to it.
    • Browse: You can browse to the location of your WLD database.  Be aware that some engines have a limitation in that they can’t handle full paths.
    • Check: Click this to check the contents of the path and see if it’s a valid WLD database.
    • Enable: Lets you switch the WLD database off and on.

AUX Database

Some engines can use auxiliary databases such as Distance-To-Win (DTW) or Distance-To-Conversion (DTC).  ZoeEngine can use DTW and is supplied with a 6-piece DTW database.

    • Directory: This is the location of the auxiliary database.  The default installation of CheckerPlayer creates a folder:  C:\ProgramData\CheckerPlayer\db\DTW  which holds a 6-piece Distance-To-Win database.  This can be replaced with a larger database if desired, or if you already have one on your machine you can change the Directory to point to it.
    • Browse: You can browse to the location of your auxiliary databases.  Be aware that some engines have a limitation in that they can’t handle full paths.
    • Check: Click this to check the contents of the path and see if it’s a valid database.
    • Enable: Lets you switch the auxiliary database off and on.  ZoeEngine allows the use of DTW databases, but some other engines can use DTC databases too, which can be placed in C:\ProgramData\CheckerPlayer\db\DTC

Opening Book File
Some engines use an opening book and ZoeEngine is no exception.  Books are not generally interchangeable, so it’s unlikely you’ll be able to use one engine’s book with another engine.  ZoeEngine’s book is built-in and contains data for Go-As-You-Please games (which by definition includes 3-move and 2-move openings).  Other engines, e.g. Kingsrow, allow the selection of different books.  Most books reside in the engine folder.  Some engines may use a built-in book which is not visible to the interface.

A few engines can use parallelism to increase the playing strength.  It is recommended to use fewer threads than there are available cores, since using the maximum could impact the CheckerPlayer interface (and probably anything else you are running).  The results of parallelism can be variable depending on how it is being used.  If you are trying to play very fast engine matches, using more than one thread may actually impact engine results due to the overhead of thread management.

Navigate to Engine Folder…

This will open the engine folder.  Any engines you place in here, e.g. Kingsrow64.dll will be available on the Engine Parameters dialog and therefore able to be used in CheckerPlayer.  Usually the engine folder will contain engine DLLs, opening book binary files and sometimes help documents too.  The engine folder is:

Probably the simplest way to migrate your Checkerboard engines into CheckerPlayer is to open your Checkerboard engine folder, which probably looks something like this:
C:\Program Files\CheckerBoard64\engines 

…and copy the contents into the CheckerPlayer folder: 

Start Engine Match…
Engine matches are great for testing one engine against another.  The primary engine is pitted against the secondary engine with whatever attributes you selected for them on the Engine Parameters dialog.

After selecting an engine match, you will be asked the type of games you wish to play in the match. The engines will use the opening settings as detailed on the Engine Parameters dialog (Best, Good, All Moves or Off).  Note that the User Book will not be invoked in engine matches.

GAYP (go as you please) starts each game at the normal starting position.  You may find that this gives limited scope for opening variation, since if engines are using opening books, they may play the “best move” each time.

3-Move games can be configured to use a combination of the 144 original openings, the 12 drawn openings and the 18 losing openings. Each opening will be played by both sides.

11-Man Ballot games consist of 2500 possible starting positions. Each opening will be played by both sides.

2-Move games have 43 standard starting positions and four “barred” positions. Each opening will be played by both sides.

PDN games lets you choose a PDN file and will use the games from that. Each game will be played by both sides.

You will then be asked the number of games in the match.  If you chose something other than GAYP, you will be asked how many cycles you want to play.  So if for example you chose the 3-move format with the original 144 openings plus 12 drawn openings, you will be asked how many 312-game cycles you wish to play.

Next is the time allocated per move.  As engines are quite variable there is no absolute guarantee that the engine will match this figure, although you will be able to see the average time spent on each move as the games progress which should give some indication as to the quality of the engines’ timekeeping.  If you choose a very fast time control, such as milliseconds, it may be difficult for the engines to limit themselves to that time.

You will then be asked about Exact or Average time controls.  As discussed before, this affects how the engines approach the time control.  Exact should mean that the time you specified is the maximum time that can be spent on any move.  Average means that this can be exceeded for individual moves but the average time spent on moves in the whole game should not exceed this value.  In general, engines that use opening books and endgame databases will benefit from the Average setting because they can save time on those moves and use that to increase the time spent on calculation where necessary.  Arguably the Exact setting provides more fairness, but it does mean that the thinking time per move would be truncated and therefore affect engine strength.

You will then be asked if you wish to add an advantage or handicap to the primary engine.  The value you enter will be added to the primary engine’s time per move allocation that you selected earlier.  This is useful when you notice that the time management of a particular engine does not match that of its opponent.  If you know that an engine will be faster/slower per move than expected, you can adjust the primary engine to even things out.  The default value of zero will have no effect.  A positive value will give more time to the primary engine, a negative value will make it play faster.

Next question is where you want the games in the match to be stored and for this you can choose a PDN file or the on-screen database.  If you choose a PDN file you will have a copy of the games even if you suffer a power outage.

Finally, click on OK when you see the Ready to Start message.  During the games you will see a statistics bar on the bottom right.  The usual panels will be turned off for performance reasons, but you can turn these on if you want to see the games being played.  You can exit the match at any time with the red X and during the game you can still change some of the view settings.

At the end of the match (or if you quit early) you will see a summary of the match results and it will be copied to the clipboard.

Matchplay Engine Claims
Part of the API designed by Martin Fierz allows for the engines to provide a value if they think the game is won, drawn or lost.  This is usually based on a built-in score threshold or the endgame database result.  If this option is selected (it is on by default) then Autoplay or engine matches will be decided by this method.  Essentially it means that match games will end sooner rather than later as the engines (rather than CheckerPlayer) can call a stop to a game.

Matchplay Material Adjudication
Oddly, there are no official rules in checkers/draughts about position repetition or lack of progress, these are generally left to the wisdom of the players or an arbiter.  CheckerPlayer can detect if there is a repetition of position or lack of progress and these are configurable in the options below.  In engine matches or Autoplay, you may find situations where one engine is ahead on material and yet the game ends in a draw by repetition or lack of progress (this can happen even if “Matchplay Engine Claims” is switched on).  You may want to decide such games by material advantage which is where this option can be useful.  It applies only to draws by repetition/progress when triggered by the rules in the two sections below.  The default for the value is 300, meaning a player must be ahead at least two kings (or three checkers) to have the draw overruled.  If the value is set high (e.g. 1800) then the rule is ineffective and draws by repetition/progress will be upheld if they occur.

Matchplay Repetition Rule…
The Matchplay Repetition Rule will allow you set the maximum number of repetitions of a position (with the same side to move each time) before the game is decided as a draw.  The default is three.  If you set a high value, such as 1000, this makes the rule ineffective.  A draw resulting from this rule can be overridden by the material rule above.  If you have “Matchplay Engine Claims” switched on and endgame databases are active, mostly this rule will not be invoked because the engines will claim a draw themselves, but it can still occur.

Matchplay Progress Rule…
This allows you to set a rule where if no promotion or capture occurs for this number of moves then a draw is decided due to lack of progress.  As with the repetition rule, this result can be overridden by the material rule above.  “Number of moves” in this context is full moves not ply, i.e. a full move being a move by both sides such as  1. 12-15 22-18

The default is set to 40 moves which is suitable for most match games, especially if “Matchplay Engine Claims” is switched on with endgame databases active as this will likely result in an adjudication before the progress rule is invoked.  The rule can be effectively switched off by setting a high value such as 1000.  Setting a low value is inadvisable since draws could be called prematurely.

Switch Engines
Switches the primary and secondary engines.

Primary Engine Details
The primary engine gives you some details about its current status.  Note that this is wholly dependent on the programmer of the engine.

Secondary Engine Details
The secondary engine gives you some details about its current status.  Note that this is wholly dependent on the programmer of the engine.

Engine Command (Primary)…
(Only visible with API engines).  Allows you to send API command to the primary engine, such as “about”, “set hashsize”, “set dbmbytes” and so on.  A list of commands can be found on Martin Fierz’s website.  ZoeEngine is not an API engine and so these commands cannot be used with it.

Engine Command (Secondary)…
(Only visible with API engines).  Allows you to send API command to the secondary engine, similar to the above.

Memory Stats

  • Total Physical Memory
  • Free Physical Memory
  • CheckerPlayer Memory Usage


Brings you here!

An email address is provided for support and feedback, if you have any.

Quick Tutorial – How to Move and Jump
Some info on how to move pieces in CheckerPlayer.

A short note about CheckerPlayer and shows the current version.

Reset to Default Settings
This will not affect your installed 3rd party engines or endgame databases, but it will set the primary and secondary engines to “ZoeEngine” and will reinstate any “don’t show again” messages and any menu settings you may have changed.  The current game you are playing will not be retained in the next session.  You will need to close and open CheckerPlayer to complete the process.

Additional Info about CheckerPlayer

3rd Party Engines
Some engines and other materials can be downloaded from these websites (Make sure you obtain the 64-bit versions of the engines):

Ed Gilbert (Kingsrow and Endgame Databases)

Martin Fierz (Cake & Checkerboard)

Jonathan Kreuzer (GuiNN Checkers)

You may get the occasional crash when using 3rd party engines.  Microsoft’s .NET architecture is quite unforgiving when it comes to unruly engine behaviour.  Native C++ applications, such as 3rd party engines, may be able to survive issues such as access violations but .NET will exit if it detects that a 3rd party DLL is trying something it shouldn’t.

Some engines may not always play legal moves (if you’re developing your own engine in C++ then hopefully you will eradicate issues like that).  CheckerPlayer detects illegal moves and will issue a message.  In the Engine Match and Autoplay modes it will force the forfeiture of games if necessary.

Some 3rd party engines, even well-known ones, can crash when presented with some positions.  These positions won’t occur in normal play but are technically legal.  A crash by a 3rd party engine will result in CheckerPlayer closing immediately.

Removing CheckerPlayer
To remove CheckerPlayer from your machine, you can (just like any other Microsoft Store product) right-click on CheckerPlayer in the Start Menu and select Uninstall.  If you are not planning on reinstalling, it is recommended that you delete the folder:
…which the program uses for 3rd party engines and databases.  ProgramData is a hidden folder so you may need to change your folder view options.  

Capacity and Limitations
CheckerPlayer was written with scalability in mind which means that mostly you are limited only by the memory in your machine. 

On a machine with 32GB memory it is possible to load and save a PDN of more than 18 million games in CheckerPlayer and scroll through it in the database.  Of course, database actions such as validation or text replacement are likely to take a long time on very large databases and you need extra memory for the Undo option and so on.  With checkers we are lucky because game databases are generally of a small size.

Any User Book that you generate can contain over 8 million positions which is equivalent to the book you could generate from about 160,000 full games.

Games can be 999 moves long (the average checker game is about 25 moves) and a comment can hold the text of Hamlet without slowing down too much.

Unlike most engines, ZoeEngine (and indeed CheckerPlayer itself) was written in C# instead of C++ and the engine is built into CheckerPlayer.  This gives the engine some limitations regarding performance and we wouldn’t expect it to be anywhere near the level of Kingsrow, Cake etc.  But as a default engine it works very well  –  it integrates neatly with CheckerPlayer, has the reliability of .NET and you can install other engines if you like.

ZoeEngine uses a simple weighted evaluation function and makes use of these techniques:

Alpha-Beta algorithm
Lazy-SMP parallel processing
Iterative deepening
Lockless transposition table
Zobrist hashing
Endgame databases
Quiescence search
Killer heuristic
Internal iterative deepening
Futility pruning

I originally wanted to make a draughts/checkers engine that would use a similar API to the one that Chessbase uses (the UCI: Universal Chess Interface) together with a GUI that would sport some database management utilities.  In fact, if you’ve used Chessbase or its compatible chess engines then you will see some similarities, particularly with the database functionality and the engine output.  As I progressed with the engine I found myself spending more and more time on the GUI and discovered that there was already a GUI with an established API (Martin Fierz’s Checkerboard).  My interface wasn’t configured to use Checkerboard engines but after a time I became drawn to the idea of making that happen and perhaps releasing it as a user-friendly interface for draughts players.  The original ideas are still evident; ZoeEngine is written in C# and is not a Checkerboard type of engine, which gave me a bit of licence here and there to do my own thing.  But you can use any engine you like in CheckerPlayer and I’m pleased to make it available to everyone.

Steve Williams, August 2022.

Privacy Policy

Version History

The default naming convention for the first player is now set to “Red”, this can be changed to “Black” on the View menu.
Support email address on Help menu.
Minor interface improvements.
Engine switch improvement.

Enhanced wooden pieces.
Minor interface improvements.
Smoother video output.

Enhanced export to HTML.
Improved “All Scores” timekeeping.

Minor improvements to interface and text.

Use the View menu to switch between vertical and horizontal game score.
Convenient selections for move strength (!! etc.) and pre-defined comments.
Improved printing output.
Can print columns or horizontal.
Export to HTML now has auto-replay options.
Can copy engine output to move comment.
Opening classification of databases.
Removal of 12-piece limit.

Ability to search for named openings, e.g. “White Doctor”.
Improved and user-editable opening classifications and moves.
New “Quick Help” buttons.
Session database log.

Improved settings handling.

Additional opening variation.
Corrected layout.

Click-to-move is now available.
Video export facility with adjustable size and font.
Improved opening book for ZoeEngine.
Opening classifications.
Improved memory footprint.
Improved time control management.
Additional board and piece styles.
Choice of board backgrounds.
2-move “barred” openings.
Improved DTW performance.
Minor text and display improvements.
Engine matches now default to blindfold mode.
Opening book default set to Best.
Sound effects default to off.
Ctrl+mousewheel adjusts the font size.

Printing options now include board orientation and numbering.
Changed HTML export aesthetics.
Save game icon now offers choice of saving the current game or the database.
Board orientation retained between sessions.
Games can be saved/loaded as *.txt or *.* as well as the default *.pdn file type.

Improved mouse tracking.
Jump notifications.
Piece geometry improved.

Enhancements to FEN parsing (allows ranges).
Database filter counts are now red when in effect.
Dialog panels are no longer topmost on other applications.

More improvements to pasting, can handle more non-standard text such as “OFF 9,24”.
Can now copy board image to clipboard at a specific size.
Board coordinates resize with fontsize slider.
Position setup has new button for “Start position”.
For consistency, a single pasted game now goes to the Database Panel.
Some game tag lengths (e.g. Event) now increased to 500 characters maximum.

Game editor for easy corrections to game scores.
Ability to open multiple PDN files at once.
Enhanced pasting of games from web pages.
Recover previous games.
No waiting for piece animations to finish.
How to Move and Jump help panel.
Minor improvements to interface.
Database performance improvement.

Problem solving mode for engines that support it, e.g. Kingsrow.  The option will appear on the Mode menu when a suitable engine is active.
Fixed issue in database replay mode where invalid games were sometimes wrongly indicated.

Improved FEN pasting.

Fix to mouse capture issue in the Database Panel.

Database filters.
Adjustable font size.
Drag and drop games.
Copy and paste multiple games.
Replay selected database games in sequence.
PDNs are now saved in database order.
Save the entire database or filtered games.
Replace text in database game scores.
Enhanced search menu.

Game score click zones improved.
Issue with hanging on simultaneous game score scrolling and move animation resolved.

Game score now scrolls accurately to current move after application start.
Sliding the vertical divider during move animation now works successfully.
Improved timekeeping on Blitz/Rapid/Incremental.

Main panel sizes retained between sessions.

Minor text, menu and error handling improvements.
New board and piece styles: “Newspaper”.
Future program updates will no longer cause CheckerPlayer to revert to default settings.
Improved diagrams when printing games.

Initial release.


CheckerPlayer Licence

CheckerPlayer and other applications downloaded from the Microsoft Store are subject to Microsoft’s Standard Application Licence Terms.

CheckerPlayer uses Per Cederberg’s Grammatica parser, reproduced under licence:

Grammatica Licence

Copyright (c) 2003-2016 Per Cederberg. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Names of persons or organizations contributing to this software may NOT be used to endorse or promote products derived from this software without specific prior written permission.