Posts

BikMove v1.2

Continuing the detour in checkers. I also released v1.2 of BikMove , a checkers engine plugin to Martin Fierz' CheckerBoard application. New features include: Added internal iterative deepening to search Configurable transposition table and endgame database cache Improved evaluation function Avoid querying Fierz's database when *either* side can capture Below are results of a 3-move openings match between BikMove v1.2 and other engines (1 second-per-move, 256MB hash, 256MB database cache, 2-8 piece endgames, best-move for engines that have their own book). BikMove v1.2 vs. Easy Checkers 1.0   : W-L-D: 284-  0-  4  99% BikMove v1.2 vs. Simple Checkers 1.14: W-L-D: 136- 21-131  70% BikMove v1.2 vs. GUI checkers 1.05+  : W-L-D:   9-108-171  33% BikMove v1.2 vs. Cake1.8 + huge book : W-L-D:   0-152-136  24% BikMove v1.2 vs. Kingsrow 1.16d      : W-L-D:   1-181-106  19% For comparison, also some results under similar conditions with v1.1. BikMove v1.1 vs. Simple Check

Improved Checkers Endgame

Image
To improve endgame play, I have added a few "distance-to-win" endgame databases to Checkers for Android (K-K, p-K, p-p, KK-K). These databases are small enough to reside in memory and are queried during the engine search. In the screenshot below, for instance, the engine (playing black) announces that it will win in 20 moves. If you are up to the challenge, just download version 2.4 of Checkers for Android from the market.  

More Lego Mindstorms NXT

A movie of a robot having some fun fetching and throwing a ball.

Lego Mindstorms NXT

Image
Through Google, I signed up as volunteer for a Lego engineering mentoring/outreach program in a local school. This was a very good excuse for Karina and me to get reacquainted with our Lego Mindstorms NXT kit (also see our earlier Mindstorms adventures ). As you can see, we had lots of fun together.

Android Game Manuals

It is long overdue, but I finally wrote brief manuals for Chess, Checkers, and Reversi for Android that explain the full menu structure of the games. I plan to add more explanation here over time. Please let me know if you have suggestions.

King Attacked Warning

Image
It is minor, but the latest release 2.4.3 of Chess for Android now shows a red circle around the king as an in-check (or mate) warning when the move coach is enabled. A sample screenshot is shown below. This version also improves UCI engine unloading on exit.

U.S. Citizenship

Image
The adventure that started in Indiana in 1996 and continued in California in 1998 reached a very special point today. I received my U.S. Citizenship. Thanks, America, for being my home for so many years and welcoming me into the American family.

Chess for Android 2.4.1

Image
I just released version 2.4.1 of Chess for Android with the following changes: Ability to install application on SD card Moved navigation buttons down Few improvements to UCI engine support To verify that UCI engine support works for third party engines as well (not just for BikJump), I downloaded sources of ZCT0.3.2500 (by Zach Wegner) and Crab1.0Beta (by Tord Romstad, Marco Costalba, Joona Kiiski, Adam Kleng) and compiled these "natively" for Android. Importing and playing the engines work fine. As before, instructions on setting up an UCI engine are given at UCI for Android .

Animation of Engine Moves

Because it is hard to print all information from the UCI engine on the phone screen, I am toying with a feature where the current move considered by the UCI engine is shown graphically. Below is a short demo of this feature. Let me know what you think!

Chess for Android 2.4

I just released version 2.4 of Chess for Android at the Android Market with the following new feature: basic UCI engine support (ability to replace built-in Java engine with any third party UCI engine compiled "natively" for Android) Instructions on how to setup an UCI engine are given at UCI for Android . As far as I know currently only BikJump is available as stand-alone UCI engine for Android. Although stronger than the built-in engine, I hope I will be able to add links to much stronger third party UCI engines soon. Please note that support is still rather basic (elaborate setup, only tested on one engine, GUI does not support engine options, time control restricted to time-per-move, position sent as FEN, making the engine more prone to three-fold repetition, no tournaments, etc.). Nevertheless, I hope it is an interesting start.

UCI Engine on Android

Image
Here is an UCI engine running on a Nexus One in Chess for Android, probing the complete 3- and 4-piece Nalimov endgame tablebases (29.6 MB) from SD card. Here is a screenshot where the UCI engine already reports a mate (using the tablebases), while the internal Java engine only reports a negative score for white given a search tree of depth 9. Steps to make this work are shown at UCI for Android .

More UCI Support for Android

Image
The UCI engine output is now presented in a slightly better format, where information is broken up into individual fields. Also, I have compiled BikJump v2.1 natively for Android, which is more elaborate multi-threaded bitboard-based engine that also supports the Nalimov endgame tablebases (with kind permission from Eugene Nalimov and Andrew Kadatch). I copied a few tablebases into the emulator's SD card and started the engine analysis. As can be seen in the screenshot below, the engine together with the probing code run fine on the Android emulator.

UCI Support for Android

Image
The UCI ( Universal Chess Interface ) protocol defines an open interface between a chess engine and a graphical chess program, which allows chess programmers to focus on their engine rather than GUI details. Many programs on Windows, Linux, and MacOS support the UCI protocol (e.g. ChessBase, Arena, Sigma Chess, Lucas Chess), but as far as I know, no UCI support exists for Android. Even Chess for Android uses a simplified Java port of my own UCI engine BikJump rather than going through the UCI interface. Therefore, I am prototyping UCI support in Chess for Android with the idea that, in the long run, this will allow importing third party engines into the GUI. So far, I added a "kibitzer feature". Any UCI engine binary that has been "natively" compiled for Android (using a compiler that ships with the Android NDK ) can be imported through a file finder dialog, as shown below for a natively compiled version of BikJumpv1.8 running on the Android emulator. Once impor

Chess for Android 2.3

Image
Version 2.3 of Chess for Android has following changes: replay buttons for full game navigation improved draw detection added two levels (longer thinking time) more efficient game storage in memory There are now five on-screen buttons. The first one is: ← : undo button, accepted any time to correct mistakes (even when engine is thinking), discarding all subsequent moves when used during navigation The replay buttons are useful to navigate through a game without discarding any moves. These buttons are only accepted when the engine is not thinking, and work as follows: << : goes to beginning of current game <  : steps back one move >  : steps forward one move >> : goes to end of current game During navigation, all subsequent moves not played yet are greyed out (see screenshot). Playing any move while navigating (including switching sides) discards all following moves (even if the moves matches the subsequent play; use replay buttons to maintain the

Fidelity Electronics Chess Challenger

Image
As long as I am making a trip down to memory lane, I remember how happy I was when I got a Chess Challenger for my birthday in 1981. As a starting young chess player, I certainly learned a lot from playing this computer, and I was thrilled when I had beaten the highest level for the first time. It certainly has sparked my interest in chess programming. After playing for a while, I discovered that if Chess Challenger responsed to e2-e4 with e7-e7 from its random opening book, it could always be beaten at Level 1 through the game shown below. As depicted on the corresponding photo, the Chess Challenger would admit its defeat by flashing all 64 red indicators. [Date "sometimes in 1981"] [White "a much younger Aart Bik"] [Black "Chess Challenger (Level 1)"] [Result "1-0"] 1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Bxc6 dxc6 5. Nxe5 Qd4 6. Qh5 Qxe4+ 7. Kd1 Qxg2 8. Qxf7+ Kd8 9. Qxf8# 1-0 Although modern chess software is much more practical, it lacks some