On this page and in our companion Checker Maven webzine article, we take a tour of checker apps for the popular Android platform. Our test device was a Motorola Droid X; due to budget limitations we didn't test any Android tablets or other Android devices.
We did a survey of available apps (as of April, 2012) and took a look at a number of them. While we'll give more complete results in just a moment, we'll jump to the bottom line and tell you that only Checkers Tutor, by Martin Fierz, and Checkers for Android, by Aart Bik, really made the cut. The rest of the apps were either also-rans or just what we'll call "toys"--- apps that treat checkers as a game for kids and no more.
We asked both Martin and Aart to do an email interview with us, and they were both very gracious with their time and expertise.
Interview with Martin Fierz
1. Why did you decide to write and publish CT (Checkers Tutor)? What did you expect the market to be?
I guess I just wanted to see whether I could write something for Android, and since I'm best at checkers programming that's what I did. I would have expected the market to be bigger than it turned out to be! Checkers Tutor has sold an underwhelming 52 copies in 14 months. Checkers Free by Optime (which at least on the iPhone is based on Simple Checkers) has over one million downloads. Of course it's free, but a lot seems to have to do with visibility in the Android marketplace, and somehow my app seems to be more or less invisible. Another thing that lowered my motivation considerably is that Google is churning out Android versions more or less every month. You are supposed to keep up with all the different OS versions, and all kinds of different screen resolutions. Ah, my kingdom for an iPhone!
2. Why do you think serious chess apps succeed and serious checker apps don't?
At least one of the reasons is likely that everyone playing chess knows the real rules, which strangely is not at all the case in checkers, so authors have to produce toy programs instead to get good reviews and ratings. This explains why most of the apps have the ability to turn off mandatory captures--- because the people using the apps have no clue about checkers, or because many kids learn to play without mandatory captures for some reason, and they are very unhappy when they must capture, then think the app cheats and proceed to give very bad ratings which hurt sales/downloads. So not only do the programmers have to make the programs very weak, they also have to let their apps play with the wrong rules just to avoid the bad ratings. For me that was one of the reasons to add those options of showing all legal moves in Checkers Tutor. I also went to some lengths to add levels where it should be easy to beat the machine--- I had to invent some new tricks for that, such as a level where the app always tries to play for a weak position. Sadly, people want checker apps to be toys.
3. What's the engine in CT? Is there an opening book, endgame database, etc.?
The engine is written in Java (standard on Android), and was written from scratch, but of course based heavily on Cake. However, it is definitely less complex, and less powerful--- there is also a Windows version here: http://www.fierz.ch/jCheckers.htm. It has no opening book and no endgame database. I was motivated to add at least an opening book, but with the absolutely abysmal sales, motivation has gone to subzero.
4. Given that there's Cake, KingsRow, Chinook, 10-piece databases, proof that checkers is a draw, etc., do you see any future in checker engine programming? (You and Ed have pretty much stopped any work on Anglo-American checkers and there is no other serious effort that we're aware of.) Do you think world-class engines might be brought to the quickly emerging tablet format?
I'm very much behind latest developments in hardware, so I don't quite know what would run on a tablet. My jCheckers thing should run everywhere, and at least as an engine (without talking about opening books and endgame databases). It is quite powerful. One of the reasons I stopped checkers programming is that I have no way of verifying any improvements any more--- playing matches against KingsRow was always my favorite way of testing, and with scores now around +15-15=258 in a match over all 3-move openings, I can't do that any more: KingsRow has a small randomization feature, so if you play the same match three times, you get three slightly different results, and because the scores are so narrow, there is no way for me to really find out whether whatever I changed led to an improvement. If I can't test that, I can't optimize further. As for anyone else trying his hand--- with checkers being officially solved, it probably doesn't attract much attention any more.
5. Assuming that the picture is bleak because of a lack of public interest in serious checkers, what might be the solution? Can this be turned around?
If only I knew! I thought that something like Checkers Tutor, which would teach people how to play the "real" game, might help, but I failed bigtime.
Interview with Aart Bik
1. Your Android app "Chess for Android" has won much recognition and user acceptance. How then did you become interested in checker programming?
Ever since I got a dedicated chess computer as a kid in 1981, I have been fascinated by game programming. It was not until 2007, however, that I implemented a simple, but fully functional C++ chess engine "BikJump." At the end of the same year, I participated in a pioneering program at Google to develop applications for Android with the objectives to test the SDK and to explore what kind of applications could be developed in a short time. Since I was new to GUI programming, I started with Reversi for Android, mainly to keep graphics simple, before developing Chess for Android with initially just a stripped down Java version of my chess engine but later extended with UCI and XBoard support for importing third party engines. When I posted these applications on the Android Market, I got a lot of user requests for a checkers program, which inspired me to write Checkers for Android. After reading an online tutorial on checkers programming, I wrote a Java bitboard 8x8 checkers engine from scratch which to my surprise already played a decent game of checkers. To avoid the engine's indecisiveness in the endgame, I added pre-computed endgame tablebases for P-P, P-K, K-K, and 2K-K which are queried during the search tree. Soon I became intrigued with checkers programming and ported the Java code to a C++ checkers engine "BikMove", which can be imported in Martin Fierz' excellent CheckerBoard application. I had a lot of fun playing tournaments, although my engine of course never reached the level of Martin's Cake or Ed Gilbert's KingsRow.
2. In "Checkers for Android" is your move evaluation based on Simple Checkers, Cake, or some other published model--- or is it an algorithm of your own?
I wrote all code, search, evaluation, and endgame tablebases from scratch, although I would like to acknowledge Jonathan Kreuzer's excellent online tutorial for teaching me the basics of checkers bitboards move generation. I also bought a few checkers books to get inspiration on improving the evaluation function, and I looked at some evaluation components used in Martin Fierz' Simple Checkers.
3. Your calculation of 'perft 'tables is, we gather, well-known in checker programming circles. Can you comment on that?
As you know, the perft/divide method originated in the chess programming community as a useful way to test the correctness of a move generator. After I wrote the first version of my 8x8 checkers engine, I compared numbers with Martin Fierz to get piece of mind on the implementation. Around that time, I was experimenting with a prototype distributed worker pool at work that needed some test input, and perft for 8x8 checkers was a suitable candidate. After publishing higher depths on the World Draughts Forum, I got in a good natured competition with kind people like Rein Halbersma. Eventually I computed perft/divide up to depth 24, at which point my project went beyond the prototype stage. I emailed Jonathan Schaeffer the results and was very honored with a reply. It will be interesting to see who computes depth 25 next!
4. We note that "popular demand" caused you to add a "non obligatory jump" option to your app, and that many comments state that the app plays too well! Can you comment? Does this say something about checker apps in the marketplace?
Indeed, many users requested optional captures. Even though in my opinion forced jumps only add to the beauty of the game, it was not hard to add that feature and I obliged. I was more surprised by complaints that the game plays too strong because, as a developer, I was interested in making the engine as strong as possible. But overall I think it is fair that users want to win every once in a while. A successful checkers application in the marketplace should probably offer a wide variety of levels, ranging from friendly mode to very strong levels. I also think users appreciate an actual animation of the moves, something that is not present in my simple GUI.
5. Where do you think checker programming is going (if anywhere)?
Hard to comment, since I am only an amateur this field. Top programs like Chinook, Cake, and KingsRow dominate 8x8 checkers, so the focus will probably shift to other checker variants, such as 10x10 international checkers.
6. Anything at all you care to add .... ?
I have had lots of fun developing my games for Android. I hope users keep enjoying the games, and see them in the right perspective: simple fun projects, developed in spare time, that I give away for free.
Android Apps Rundown
A look through the Android App Store (now called "Google Play") lists many, many checker apps. We took a brief look at a few of them and included some comments below. Some are listed just by name; it's safe to say that such apps have little to offer the serious player.
Checkers Free, Optime Software
defaults to 'forced jumps off'
set to highest level and played to a draw without the slightest thought
Checkers Premium, Optime Software $0.99
Checkers Free, AI Factory Limited
forced captures optional
plays simple strategy, not so bad, can win at the highest level if you don't pay attention, but still not a serious player
Checkers, Magma Mobile
Checkers for Android, Aart Bik (see below)
Checkers Pro, Mouse Games
Checkers, Vivian Aranha
Checkers-draughts, Wintrino mobile prime
Checkers Online, Cloudtroid
Checkers, Bluesky Studio
Checkers V, ZingMagic Limited
Variety of rule-sets, including 3-move
American & British checkers are listed, but are (correctly) the same game
Junior mode has no forced jumps
keeps proper notation
choice of time as difficulty, up to 20/sec move or alternatively 20/min game
might have a 1-move opening book
marks players moves but not computer's
obnoxious ad interrupts every few moves
seems to play OK but not great, maybe not as well as Checkers Free, easy to get a draw at the highest level
Checkers Online, Resonos
Checkerzzz Lite, eXelarz Interactive
Checkers Free with Mobage, Mobage
Checkers, Board Quick Software
Dr Checkers Light, Axel Ladilas
Checkers Online, keyja.com
Checkers, Gasp
Checkers for 2, kbSoftware, 1.99
Checkers Pro V, ZingMagic, $3.85
Checkers King Free, TallBearSoft
Santa Checkers, Vivian Arinha
Glow Checkers, Vivian Arinha
Checkers, PwrToyz
Checkers Deluxe 2011, Tequila Mobile
Dalmax Checkers, Dalmax.net
Zen Checkers, Portdusk, Inc.
"multi-jump support added for complete checkers experience" -- we guess implementing all the rules is a special feature in this one
claims to have "super-tough AI" but is far from it
red & black checkers, and plays from top down
cheats on forced jumps
Checkers Tutor, Martin Fierz, $1 (see below)
Let's Play Checkers--- Free, Mirror Match Games
Checkers for Dummies, Vivian Aranha
Checkers Draughts, Vivian Aranha
Checkers--- The Classic Game, Darren Gates 0.99
SmartBunny Checkers, OmniG Software Inc., 1.99
Toftwood Checkers, Biran O'Shaughnessy
Checkers Redux Free, eXelarz Interactive
Checkers Online, Colin Anderson
Checkerzzz Pro, eXelarz Interactive 0.99
Checkers Lounge 3D, Crudebyte 0.99
Christmas Checkers, Varlov (this is what we mean by "toy")
... and too many more to list.
Checkers Tutor
Our first contender is Martin Fierz' Checkers Tutor. The program has the following features, among others:
Excellent graphics and a choice of nice board displays.
Capability to play a random 3-move ballot.
Enforces the compulsory jump rule (it seems odd to list 'follows the rules' as a feature, but many programs are clueless about this).
Allows for move takeback and review ('tape recorder' controls).
Has a choice of strength levels, based on either search depth or time per move.
Above-average playing strength.
Certain things that we wish it had:
Move notation and move export.
A small opening book.
A small endgame tablebase.
Finer granularity in selection of playing strength.
Checkers for Android
Our other contender is Aart Bik's Checkers for Android. The program has the following features, among others.
Serviceable graphics with a choice of colors.
A choice of strength levels based on time per move.
A small endgame tablebase which at a minimum allows it to win a two kings vs. one ending.
It appears to have a 1-move (2-ply) opening book.
Playing strength is above average.
Things we might wish for:
Move takeback and game replay, and move notation and export.
Three-move ballot play.
Finer granularity in selection of playing strength.
The Showdown
We played two matches between Checkers Tutor and Checkers for Android. While we feel that Tutor came out ahead, there are enough variables in play that we can't claim to have definitive results.
We only played two games.
We weren't able to match time controls due to lack of granularity in the program options, so Tutor had more thinking time (15 secconds per move vs. 10 seconds per move).
The bottom line: Tutor drew the first game and won the second. However, in the first game, Checkers for Android achieved a won position but was unable to convert the endgame. So things were a little closer than the 1.5-0.5 results might indicate.
Both games are given in PDN for easy cut and paste into CheckerBoard in case you'd like to do your own review and analysis.
We played Checkers Tutor against Simple Checkers and Tutor won.
We played Checkers Free against Simple Checkers and Simple won. So much for Checkers Free. This surprised us, because we understood that Free was based on Simple.
Conclusions
As we noted in our Checker Maven article, there's really no reason for you not to have both Checkers Tutor and Checkers for Android. It will only cost a dollar, and you can try them both and make your own decision. We've decided to keep them both on our Droid X; we feel they're both worthy and a lot of fun.
We really urge you not to base your decision on the fact that Checkers for Android is free and Checkers Tutor costs a dollar! A dollar to support Martin's work is hardly too much to ask, and it will neither make you broke nor make him rich.
It's a shame that the marketplace won't support checker apps the way it supports chess apps. If you're a chess player, you can have engines like Shredder and Stockfish, with a whole host of features that appeal to the serious player. Some of these, like Droidfish (the Stockfish variant for Android) and Chess for Android (also by Aart Bik) are completely free. A lot of this has to do with the more robust nature of the international chess community, and some intrinsic advantages (chess is played by a single set of rules around the world, while checkers most definitely is not). But a major factor is the persistent public notion that checkers is "for kids." As long as that view prevails, we will have a ton of "toy" apps, while top-notch developers find little or no incentive to push their apps forward.
Last Words
Our sincere thanks to Martin Fierz and Aart Bik for generously giving their time to provide information for this article. Any errors contained herein are, of course, the sole responsibility of The Checker Maven.
This article is Copyright (C) 2012 The Checker Maven. All rights reserved. May not be reproduced in any form, in whole or in part, without the express written consent of the copyright owner. Permission is granted for web links to the original article only.