Friday, March 25, 2011
Checkers for the Amazon Kindle
A couple of weeks ago, I received emails from two American programmers called Matt and Mike who planned to write a checkers program for the Amazon Kindle. I contributed my Java checkers engine (which also powers Checkers Tutor), and those two did all the rest in record time - and now Checkers is available from Amazon. For more information, check out the A gamz website or look at a video on YouTube!. I haven't ever seen the game live, but judging from what I can see, Matt and Mike have done a great job with it!
Monday, February 14, 2011
Checkers Tutor 2.1
I just posted Checkers Tutor 2.1 for Android on the Android market. It has a lot of improvements over the previous version:
To me, it looks as if it should be the best/nicest checkers app for the Android platform, but obviously I'm rather biased! Now all I need is some customers and some good ratings :-)
- Nicer graphics (see previous post)and new nicer launcher icon
- A new pushover level where you should be able to win even when moving at random
- A smoother transition of playing strength when moving up from beginner levels to depth-controlled levels to timed levels. This is done by disabling parts of the evaluation on the lower depth-controlled levels
- The entire last game is restored now on startup, not only the last position
- Two small bugs fixed
- Behind the scenes, a lot of the code was cleaned up
To me, it looks as if it should be the best/nicest checkers app for the Android platform, but obviously I'm rather biased! Now all I need is some customers and some good ratings :-)
Sunday, February 13, 2011
Playing with graphics for Android checkers
Over the weekend, my wife went on a short hike with our kid and his godmother, giving me a bit of time to play around with the checkers tutor graphics. Here's my current preview, and I think I will leave it at that - I like the looks of it!

I increased the size of the pieces a bit, and used Inkscape to produce pieces with gradients and highlights. Obviously I'm not a graphic artist, but I think they are much nicer than the plain circles I used to have.

I increased the size of the pieces a bit, and used Inkscape to produce pieces with gradients and highlights. Obviously I'm not a graphic artist, but I think they are much nicer than the plain circles I used to have.
Thursday, February 10, 2011
Android checkers reloaded
During my x-mas holidays, disappointed with the measly 5000 downloads I got over one year of my free Android Checkers Tutor App, I came up with a great plan: make it a paid app instead of free - like that, all the people who know nothing at all about checkers won't download it and won't complain about the must-capture-rule, and won't give it bad ratings. Great plan, but with 6 sales in 40 days, it didn't really work out... Not one to give up easily, I have decided to revamp it a bit. I've started making the code cleaner behind the scenes, and also tried to improve the looks of the app. Not too sure about whether it's an improvement - what do you think?
Wednesday, August 11, 2010
Moving to Visual C Express 2010
After using the great free Java IDE's Eclipse and Netbeans for a while, and also because I bought a nice new Core i5 laptop recently, I thought it might be worthwhile installing something more modern than my slightly antiquated Visual Studio 2005 on it. I love those new features like code completion and refactoring, the fact that you can just hover your mouse over variables in the code during debugging and it shows you what they are and all the other nice bells and whistles in the Java IDEs. Having also gotten used to not having to pay for a nice programming environment, I decided to install Visual C 2010 Express. Upgrading my old projects (such as CheckerBoard, Cake, book and endgame database generators, Connect 4 and my chess engine Muse) turned out to be quite a bit of a hassle - the upgrade wizard failed to convert about half of my projects, and I had to restart them from scratch, and had some more trouble because some libraries that used to be added automatically are not added any more, causing linker errors. I had another smallish disappointment when I noticed that there is practically no refactoring support in the express edition, and a bit a larger disappointment when I noticed that there is no 64-bit support either. While I do appreciate that M$ is giving away a free more or less modern IDE, I still would wish for more. So here's my question to the C programmers out there: is there anything else that you would recommend for the Windows platform - something that would also allow me to import my Visual Studio projects with as little trouble as possible?
Thursday, April 15, 2010
Suicide checkers is a draw - probably
During this winter, I let my suicide checkers book generator run for quite some time, expanding the size of my suicide checkers opening database from about 60'000 to over 180'000 positions. With the generator running on a machine that was twice as fast as for the 60'000 first nodes, the overall quality of the book must have improved massively. It now predicts draws for all 7 opening moves, from which I draw the conclusion in the title of this post.
With the beginning of spring I turned the generator off again - my green conscience would at least like to scavenge some waste heat for my house from book building... Furthermore, I am slightly ashamed to have a PC with a quad-core processor running on a single core only - it could be building the book at nearly 4 times the speed it is doing now, using only a little more energy if I programmed it to use all cores. With PCs nowaday having 4 or even 8 cores, I really should learn how to program a multithreaded search...
With the beginning of spring I turned the generator off again - my green conscience would at least like to scavenge some waste heat for my house from book building... Furthermore, I am slightly ashamed to have a PC with a quad-core processor running on a single core only - it could be building the book at nearly 4 times the speed it is doing now, using only a little more energy if I programmed it to use all cores. With PCs nowaday having 4 or even 8 cores, I really should learn how to program a multithreaded search...
Wednesday, April 14, 2010
common Java codebase
I worked a bit on my Java checkers engine so that I can now use the same code for both my Android checkers tutor and my Java PC program - I'm glad I managed to combine the two! The only difference (and one I will probably forget to change from time to time...) is the size of the hashtable, which is obviously much smaller on the phone.
I also improved playing strength a bit, and will probably release new versions of both my Java checkers programs soon.
I also improved playing strength a bit, and will probably release new versions of both my Java checkers programs soon.
Monday, March 29, 2010
jCheckers web start
I had some trouble to get jCheckers running on my own office PC... so I thought I better try something easier and played around with Java web start and produced the following test page - now that is much cooler!
Sunday, March 28, 2010
jCheckers!
After a rainy Sunday afternoon in front of my PC, jCheckers is now available! For some reason, I had to rewrite the entire GUI because NetBeans wasn't creating a proper distribution output for my jCheckers project. At least I also learned how to write callback functions in Java (with Interfaces), and implemented one for communication between the JCheckerBoardPanel and the main window. I should also implement one for the communication between the checkers engine and the JCheckerBoardPanel - but since my Java checkers engine is shared between Android and the full Java program, I was a bit reluctant to touch it. In fact, the engine isn't properly shared between the two because of some differences between Android and standard Java. My programmer friends tell me I should use dependency injection, but that will have to wait!
In the meantime, you can enjoy jCheckers on Linux and Mac, where CheckerBoard isn't available. jCheckers has a powerful Java checkers engine, multiple levels of play, PDN support, and unlimited takeback through the game.
Since I don't own either Mac or Linux computers, I'd be glad to get feedback on whether it runs on these systems as it should.
In the meantime, you can enjoy jCheckers on Linux and Mac, where CheckerBoard isn't available. jCheckers has a powerful Java checkers engine, multiple levels of play, PDN support, and unlimited takeback through the game.
Since I don't own either Mac or Linux computers, I'd be glad to get feedback on whether it runs on these systems as it should.
Saturday, March 20, 2010
Java Checkers on the finish line
It's been a while since I worked on my java checkers program (the general one, not the one for Android). It's something like a simple version of CheckerBoard, but it should run on all platforms if java lives up to its "write once run anywhere" promise. I just programmed the PDN save and load features which were the last features missing for an initial release. It will still need some finishing touches, but since I have about 16 hours of train-rides coming up in the next 48 hours and my laptop with me I hope to be able to apply these very soon and finally publish jCheckers!
Sunday, January 17, 2010
Checkers Tutor reaches 1000 downloads
Today, following another download-increasing update to version 1.06, Checkers Tutor has reached over 1000 total downloads. For reasons unclear to me (and from reading on the internet, everybody else too), Google does not offer a PC interface to the Android market, and therefore there are 3rd party websites that do offer such an interface. I use AndroLib, where I can see how many ratings and comments I got, and how the ratings develop over time. Apparently, Checkers Tutor has a rating of 3.33 out of 5, after 9 ratings. Unfortunately, not a single comment on what could be improved...
Androlib also has some download statistics. According to these, of currently 23'477 apps, 61.6% have been downloaded less than 1000 times. So CT is in the top 38.4% of all apps; and only 19.9% of all apps (or 4672) are in the category above with more than 5000 downloads. So CT isn't doing too bad, then again the other checkers programs out there are doing better or much better - and when I run out of upgrade ideas, my downloads will slow down to a trickle once again. I have two upgrade ideas left, but then it will be time to leave CT to its own devices on Android market.
Androlib also has some download statistics. According to these, of currently 23'477 apps, 61.6% have been downloaded less than 1000 times. So CT is in the top 38.4% of all apps; and only 19.9% of all apps (or 4672) are in the category above with more than 5000 downloads. So CT isn't doing too bad, then again the other checkers programs out there are doing better or much better - and when I run out of upgrade ideas, my downloads will slow down to a trickle once again. I have two upgrade ideas left, but then it will be time to leave CT to its own devices on Android market.
Sunday, January 10, 2010
Checkers Tutor 1.04, 1.05 etc.
The Android market has a developer console which tells developers how often their application has been downloaded, how many active installations of it there are, and how the application is rated by the users. These stats are interesting, but not really up to Google standards - for example, you have no clue about how your downloads are distributed over time, and I have been logging in to my dev console every night to see how my Checkers Tutor is doing (it would be so much nicer if daily/weekly/monthly stats were available...). I have noticed that whenever I publish an update of Checkers Tutor, the number of downloads increases massively. I can also see that the number of active installs increases too, so I guess that my app is more visible on the Android market for perhaps a day after an update (but this is pure speculation). Anyway, seeing that my download stats are disappointing, I will be making some incremental updates to Checkers Tutor in the hope of attracting more users (1.04 released, 1.05 going up tonight, and 1.06 already planned), and perhaps gaining visibility in the Android Market (which is probably a combination of downloads and rating, but again this is guesswork). One problem which all checkers apps seem to have in common is that many people don't know that you must capture if you can in checkers. Aart Bik's Checkers for Android is by far the most downloaded checkers app, and it seems that about half of it's comments are "stupid - computer cheats" or "don't install - can't make moves I want to". And the ratings are correspondingly low. Unfortunately, Aart put in an option to make captures optional in his program, which is a bit of a shame because these people should learn how to play checkers for real...
Thursday, December 31, 2009
Checkers Tutor 1.03
I just published version 1.03 of Checkers Tutor on the Android Market. It has improved move input, displays the current level in the title bar, displays the last move with a blue arrow instead of not-so-nice highlighted squares, and fixes a bug in the arrow rendering for capture moves when the board is flipped. Behind the scenes, I cleaned up a bit again, but my board class is still a God Object which isn't nice. The screenshot below shows how it looks (still quite similar to version 1.0!).

Checkers Tutor has some features that are better than what I have in CheckerBoard

Checkers Tutor has some features that are better than what I have in CheckerBoard
- The move input is smarter: clicking on a piece that only has one legal move immediately executes that move (like in CheckerBoard), but also clicking on a square that can only be reached by one piece executes that move (unlike in CheckerBoard). This is nice because on those tiny mobile phone screens it's probably not easy to input moves, and every click you can save helps.
- All legal moves can be displayed with yellow arrows to teach the rules.
- The last move played can be shown with a blue arrow.
- The beginner level attempts to reach a bad (but not immediately losing) position at all times. This should avoid frustration for beginners, who are usually not happy with my PC programs because they lose too often.
- The checkers engine is not as strong as I would like it to be. A large part of this is the low speed of the hardware, but I must admit that I haven't worked too hard on improving my Java checkers engine. It will most probably be more than good enough for 99% of the users. Nevertheless, a small opening book and perhaps endgame databases up to 4 pieces would greatly enhance its play, as would some more work on the evaluation function.
- The game is not saved when you quit and return (or when you switch the display from portrait to landscape mode or vice versa), only the current position. You cannot undo any moves made in the last session.
- There is not much advice to help a novice what to do with the game after installation. I would like to add something like Tips on Startup to improve this.
- Move input is limited to touch, but perhaps on phones with small screens this is not practical, and adding keyboard support would be nice.
- And probably many other things that I forget...
Sunday, December 27, 2009
Checkers Tutor 1.02
In the 5 days since the publication of Checkers Tutor for Android, I fiddled around with it a bit. I added a feature to display all legal moves in the current position (it claims to be a tutor after all...), and I fixed some minor bugs: v1.02 now also displays properly in the landscape mode and the board numbers scale better (also on hi-res devices). Behind the scenes, I cleaned up the user interface code a bit to make it more readable, maintainable and less bug-prone. As usual with this cleaning business, it never actually ends. My board class has more than 700 lines of code, and after reading Robert C. Martin's nice book titled Clean Code, I must assume that that is too much, and besides I find a couple of the code smells he lists in my code...
These things aside, I'm afraid that my Checkers Tutor has missed the boat anyway - it got 228 downloads in its first 5 days, which means nearly none compared to Aart Bik's Checkers for Android, which apparently got over 250'000 downloads in one year (see Aart's blog for more information). This is the usual punishment for coming late to the party - I could have published Checkers Tutor in August, but somehow felt I should still add zillions of features to make it better than Aart's app - in the end I never added these features, and the early bird has caught the worm - the attention of the Android Market, where often-downloaded programs are more visible, and thus go in a positive feedback loop.
These things aside, I'm afraid that my Checkers Tutor has missed the boat anyway - it got 228 downloads in its first 5 days, which means nearly none compared to Aart Bik's Checkers for Android, which apparently got over 250'000 downloads in one year (see Aart's blog for more information). This is the usual punishment for coming late to the party - I could have published Checkers Tutor in August, but somehow felt I should still add zillions of features to make it better than Aart's app - in the end I never added these features, and the early bird has caught the worm - the attention of the Android Market, where often-downloaded programs are more visible, and thus go in a positive feedback loop.
Saturday, December 26, 2009
Blog labels
I added labels to nearly all posts on this blog, so that it is now much easier to find specific information. I have no idea whether anyone might be looking for anything here, but if so, it will be much easier to find things now! I am a bit surprised that suicide checkers takes the top spot in the labels list to the right...
Wednesday, December 23, 2009
Checkers Tutor for Android published!
Monday, December 21, 2009
CheckerBoard 1.7 & co.
I just published a new version of CheckerBoard on my website. CB 1.7 has some minor bugs fixed, and doesn't write to the program files - CheckerBoard directory any more, which was a problem with the UAC (user account control) of Windows Vista and Windows Seven. Most of the changes in CB 1.7 were contributed by Ed Gilbert; thanks a lot Ed!
The CB source code is also available, but still rather difficult to comprehend.
I also updated the engines to comply with Vista/Win7, Cake and the Kingscourt engine didn't work with the new OS versions unless run with administrator rights. The CB install package now also includes Suicidal Cake with a 4-piece endgame database for suicide checkers and an opening book. I worked on suicide checkers about 3 years ago, and thought it would be a shame to leave what might be the world's best suicide checkers program rot on the shelf...
The CB source code is also available, but still rather difficult to comprehend.
I also updated the engines to comply with Vista/Win7, Cake and the Kingscourt engine didn't work with the new OS versions unless run with administrator rights. The CB install package now also includes Suicidal Cake with a 4-piece endgame database for suicide checkers and an opening book. I worked on suicide checkers about 3 years ago, and thought it would be a shame to leave what might be the world's best suicide checkers program rot on the shelf...
Wednesday, December 16, 2009
CB and Windows 7
I'm writing this post on my brand-new Windows 7. Unlike Vista to which I took an instant dislike, this product seems to be much more user-friendly (UAC...) and the harddisk isn't working for about an hour after startup. Of course, the very first thing I did with Win7 was to test whether CheckerBoard was working on it, and it is - however, it has to be run as Administrator, otherwise it crashes. I think it was the same with Windows Vista (but I can't remember), and I hope I will have some time during the christmas holidays to sort out these issues.
Tuesday, August 11, 2009
Checkers for Android Phones
It's been a while since I worked on my Java program. Actually, the underlying purpose of writing a Java checkers program was to (1) learn Java and (2) write a checkers program for the Android operating system running on the Google phones. There are two checkers programs for the iPhone based on my simple checkers engine, and since developing for the iPhone seems to be a PITA or at least some kind of licensing hell, I was never interested. The much more open philosophy of Android attracted me however, and my checkers program is already running on my emulator. It manages to search about 5000 positions per second, i.e. it's nearly 1000x slower than my corresponding PC program, and therefore also quite a bit weaker. But since it incorporates a lot of the stuff that I learned during the many years of programming Cake, it plays a decent game nevertheless. I worked hard on it during the last two weeks on my mountain holidays (whenever I wasn't climbing the mountains), and it's already a working program. However, I may have overdone things a bit trying to put a lot of features into the program, so it won't be ready today or tomorrow, but hopefully before the summer is out.
Wednesday, July 15, 2009
Multi-core KingsRow tested
I have been testing KingsRow 1.16d against Cake 1.8x12 on my quadcore machine. Here are some results of engine matches at 5 seconds per move:
I had been expecting Cake to be slaughtered by the multi-core version of KingsRow, but apparently it's not that bad. To check whether or not it might be a bug in the multithreaded search of KingsRow, I played a match with Cake and KingsRow running on 1 core, but KingsRow got 10 seconds per move - so essentially this should reproduce the second match above. I found
There is always some variability in engine matches, otherwise one might conclude that the 2-core version of KingsRow was not performing as well as KingsRow with twice the search time. As it is, I don't quite know what to make of it.
Cake 1.8x12 - KingsRow 1.16d (1 core) +19 -14 =255
Cake 1.8x12 - KingsRow 1.16d (2 cores) +19 -18 =251
Cake 1.8x12 - KingsRow 1.16d (4 cores) +18 -19 =251
I had been expecting Cake to be slaughtered by the multi-core version of KingsRow, but apparently it's not that bad. To check whether or not it might be a bug in the multithreaded search of KingsRow, I played a match with Cake and KingsRow running on 1 core, but KingsRow got 10 seconds per move - so essentially this should reproduce the second match above. I found
Cake 1.8x12 - KingsRow 1.16d (10s) +17 -21 =250
There is always some variability in engine matches, otherwise one might conclude that the 2-core version of KingsRow was not performing as well as KingsRow with twice the search time. As it is, I don't quite know what to make of it.
Subscribe to:
Posts (Atom)
