Showing posts with the label chess

Chess for Android: UCI Engine Options

The UCI engine setup dialog in Chess for Android was developed a long time ago when there were not many chess engines available for Android. As a result, I opted for a simple dialog that featured a few, commonly used UCI engine options only (such as hash table size, number of threads, endgame tablebases). However, the options that I picked almost ten years ago no longer serve the wide variety in options of the many chess engines available for Android.
Therefore, I decided to re-implement the UCI engine setup and do what the UCI protocol specification actually intended: the GUI should parse all options and build a dialog that allows the user to change them. For engines with only a few options, this yields a concise dialog, as illustrated below with BikJump v1.8. For engines with many options, this yields a more elaborate, scrollable dialog, as illustrated below for Leela Chess Zero. In any case, however, the new implementation gives the user full access to all options!
Expect this new…

Karpov 2294

And another blast from the past. The Karpov 2294, the strongest dedicated chess computer that I own. It is rich in features, such as time control, infinite analysis, and many levels. It also features a very elegant magnetic chess piece set.

Chess for Android: version 6.1.1

I am gradually rolling out version 6.1.1 of Chess for Android to Google Play. Besides some internal cleanup and refactoring, the major new features are:
simple FICS client (see details at Connecting Chess for Android with FICS)improved electronic chessboard support (DGT/Certabo/Millennium)rudimentary DGT chess clock support (shows moves) The FICS interface is simple, in line with the design philosophy I have always followed so far.  Despite the simplicity, the client is fully functional, and I have started to enjoy playing online over an actual chessboard myself. Hopefully others will find the combination of an electronic chessboard and online play just as enjoyable!
A big thank you to my testers! Writing a client from scratch was a non-trivial task, and took a long time. Having awesome testers was extremely helpful during the initial development. Any remaining bugs are mine, of course. Please send me the details if you find one.

DGT 3000

This beautiful DGT 3000 chess clock just arrived! I can't wait to start hacking and find out what features I can implement for Chess for Android connected to a DGT chess board and this clock. In particular,  am hopeful that the combination of online chess on FICS with an electronic chess board and clock will provide a very pleasant chess playing experience! 

It took me a bit longer than planned, but I finally finished the alpha version of a FICS (Free Internet Chess Server) interface in Chess for Android. Either play directly on a phone or table, or first connect to an electronic chessboard (DGT, Certabo, and Millennium) to play over an actual chess board with people online.
To connect to FICS, long press the notation window in Chess for Android to open the extended menu. Then select "Connect to FICS" and login as a guest or using your register username and password. The formula string can be used to filter out match requests. For example time >= 5 & inc = 1 only accepts games with at least five minutes start time per player and exactly one second increment per move. The formula syntax is explained in more detail on the FICS help page.
Once connected, your username or temporary guest name is shown at the bottom of the screen. Match requests that pass the filter are shown in a dialog with the player names and game paramet…

Chess for Android: version 6.0

I am rolling out version 6.0 of Chess for Android, through the usual Google Play channel. The new features include:
Two new sets of chess pieces by Maurizio Monge (who very kindly gave explicit permission)Ability to enable/disable saving engine annotations in the PGN fileOpening the draw/resign dialog now requires tapping one king then the otherSimpler permission model for "older" Android versions The last change, adding bluetooth and network permissions, is needed so that pre-api23 versions of Android can also connect with electronic chessboards over bluetooth or with remote chess engines over a network socket (the latter is also needed for an upcoming FICS client I am working now). From api23 onward, users can selectively enable or disable such permissions. Pre-api23, however, it was an "all-or-nothing". Changes like this have unfortunately the danger that some users will uninstall, but in the long run I believe I can better serve the full customer base this way.

Maurizio Monge Chess Art

I received several requests to incorporate some of the beautiful chess art by Maurizio Monge in Chess for Android. Maurizio did a great job creating attractive, yet very playable chess figures. Also, he kindly makes this art available to all, although I received explicit permission from him to use the art in my application. So the next version of Chess for Android will feature the fantastic "fantasy" and very funny "eyes" piece figures.

Chess for Android 10 Year Anniversary!

I can't believe it, but Chess for Android just passed its ten year anniversary! In November 2008, it appears for the first time on the -then-called- Android Market, together with Reversi for Android. Checkers for Android was soon to follow. The Android Market was later renamed Google Play.
Working on this GUI has been a lot of fun, even though it took all spare time away from further developing my chess engine BikJump. But pioneering support for third party engines (at a time nobody was compiling for ARM), both UCI and XBoard, accessing endgame tablebases on SD card, adding PGN and setup features,simplifying engine setup through Chessbase compatible format and the Android Open Exchange format, using OCR apps to read chess positions, translating text to other languages, maintaining an online manual, and recently adding support for Certabo, DGT, and Millennium electronic chessboards has been just as rewarding. I have compiled many engines for Android back in the days, ran full tour…

Chess for Andoid: version 5.9

I am enthusiastic to announce that I am rolling out version 5.9 of Chess for Android on Google Play. New features include:
Configurable tags for PGN export (player, ELO, event)Ability to offer draw or resign (click king twice to enter menu)Support for Certabo electronic chessboards The application now supports connecting to any of the DGT, Millennium, and Certabo chessboards (let me know if there are others). I have a second instructional video on this topic on YouTube. As usual, looking forward to your constructive feedback!

Chess for Android: Certabo Support

Besides the Millennium and DGT, Chess for Android now also supports the Certabo electronic chessboards. I hope to roll out a next update soon, after more rigorous testing.

Unlike the other boards, the Certabo board does not necessarily come with chess pieces. Instead, a set of 34 identifying chips is provided, which can be attached to the bottom of pieces in any chess set (which means that, unlike the other board, the GUI must first match newly attached chips with the right pieces).
Since I did not have a spare set, I asked my brother-in-law, Gerard Harbers, who just bought a fancy new 3D printer, to print a full chess set for me. He enthusiastically got to work!

The pieces have some spare room at the bottom, perfect for placing the identifying chips.

Chess for Android Coding

Around the holidays I am finally getting some spare time to implement new features for Chess for Android. I am actively "in the zone" working on:

The ability to offer a draw or resign during an ongoing game. Since the UCI protocol does not provide this feature, the GUI will accept the draw simply based on past evaluations of the position.The ability to change the users name and ELO rating, which will appear in the header for all user games that are saved in PGN format to the SD card.The ability to connect to FICS, the free internet service. This is of course the most work and currently still in prototype stage. The first release will probably start simple by just allowing to watch demo games.

Connecting with the DGT Board

After all the fun I had connecting Chess for Android with the Millennium over Bluetooth, I was curious if I could provide similar support for the DGT electronic chess boards. Some of these have Bluetooth capabilities, most use USB connections, and some older models, like the one I have, still use the RS-232 connector.

To my pleasant surprise, by combining the original serial cable of DGT with a USB-to-serial cable and a female-USB-to-USB-C cable, I was able to get an actually working connection between my DGT board and my tablet or phone.

Next was implementing support in Chess for Android. Luckily, DGT kindly shared the protocol documentation with me, and after a fun weekend of hacking, Chess for Android now proudly supports DGT electronic chess boards as well.

Lots of New Features for Chess for Android.

Recently I have been very active adding new features to Chess for Android again. I have added support to connect to the Millennium ChessGenuis Exclusive electronic chessboard, added a new piece set (thanks Bryan Whitby), added various engine related features requested by users, and switched to the much better model where users can enable (and thus disable) permissions just for the features they like.
Now, I also added optional piece animation and algebraic notation on the board. Hopefully this makes watching ongoing tournaments more smooth, as illustrated below for a match between Komodo and DiscoCheck. Keep an eye on Google Play for updates!

Chess for Android v5.4: Adjudication

I am rolling out Chess for Android version 5.4 on Google Play. Besides minor improvements, the major new feature consists of draw and resign adjudication during chess engines tournaments.
As shown below, a new tournament dialog has been implemented which shows, besides familiar older options, a section for draw and resign adjudication. If during a game, after the given move number and during the given move count, the score drops below the requested draw score (in cp) or exceeds the requested resign score (in cp, either consistently for white or for black), the game is adjudicated rather than played in full. This feature has been requested many times by tournament managers to avoid wasting time playing e.g. boring drawn games until the 50-move rule applies.

See this talkchess posting for an example game.
As usual, let me know if you encounter problems with the new release. Also, I could use some help translating the new strings into several languages (most will display English for now…

Localization of Chess for Android

Version 4.0 of Chess for Android, available at either Google Play or as direct download, focuses on localization and internationalization. All user facing text (except the chess notation and engine messages) has been translated into the following languages. English (the default)Dutch (translated myself)German (many thanks to Philip Stutz)Hebrew (many thanks to Haran Talmon)Polish (many thanks to Michal Kaczmarek)Spanish (many thanks to Krizia Lopez)Swedish (many thanks to Anton Hansson) If you spot any mistakes, if you would like to see support for other languages or, even better, if you would like to help with further localization, please drop me a private note.

DeepBrutePos for Android

Folkert van Heusen is developing a chess engine, called DeepBrutePos, and he also wrote a version for Android. The engine is written in Java, and he used the Android SDK to develop a version that acts as a chess server, so that it can be imported as network socket in Chess for Android (a rather unusual, but nifty use of that feature).
I conducted a quick test with one of the first versions. Below the results of a one-second-per move tournament from both sides of all Nunn opening lines on a Nexus One. I was hoping for better results for Folkert, but hopefully he will release a strong version soon. Good luck!
                       1        2          3         4         5        6                   
1 BikJump v2.1P        *     17.5- 2.5 20.0- 0.0 20.0- 0.0 20.0-0.0 20.0-0.0 97.5/100
2 fairymax48q       2.5-17.5     *     10.0-10.0 12.5-7.5  18.5-1.5 20.0-0.0 63.5/100
3 umax48w           0.0-20.0 10.0-10.0     *     12.0- 8.0 20.0-0.0 20.0-0.0 62.0/100
4 Chess for Android 0.0-20.0  7.5…

Chess for Android v3.3

I just released version 3.3 of Chess for Android, available at Google Play or as direct download. The new features include: Ability to modify filenames of regular and tournament games.Information on network status during socket setup. In the older versions, regular games and tournament games were alway appended to, respectively, the files games.pgn and tour.pgn on SD card. The new feature allows users to change these defaults through a "Change pathnames" menu. The pathnames can even include subdirectories, provides these directories exist.

The second feature displays information on the network status during socket setup (mobile connection, Wifi, etc.). In the version without network permissions (the default on Google Play), a proper warning message is shown instead.

Polyglot for Android

There was an interesting discussion on the TalkChess forum whether a chess GUI running on the Dalvik Virtual Machine could merely support a single protocol, and use an adapter, like Polyglot, to support other protocols. Even though Chess for Android already supports both UCI and XBoard/WinBoard, I was intrigued by the question, and decided to give it a try. First, I compiled the polyglot sources for ARM-based Android devices (I had to make a few source changes to make that work). Then I edited a polyglot.ini file pointing to my own UCI engine bikjump1.8 compiled for ARM:

And gave it a try directly from the command line:

$ ./polyglot_for_android
PolyGlot 1.4.67b by Fabien Letouzey.
st 1
1 -1 0 1 h4
1 +0 0 3 h3
1 +2 0 6 g3
1 +12 0 20 Nh3
1 +17 0 22 Nf3
2 +0 0 46 Nf3 Nf6
3 +17 0 148 Nf3 Nf6 Nc3
4 +0 1 772 Nf3 Nf6 Nc3 Nc6
5 +2 2 1691 Nf3 Nf6 Nc3 Nc6 g3
6 +0 5 3120 Nf3 Nf6 Nc3 Nc6 g…

Connecting Chess for Android to a Remote Server

I have received several questions on how to connect Chess for Android running on an Android device (e.g. a phone) as client to a remote chess server (e.g. a powerful desktop), so I decided to write a small document with detailed instructions.
What you will need:
The server software from Bernhard Wallner's chess utilities, suited for your server's operating system (if, say, your desktop runs Windows, you will need to download the Windows version). You do not need to download the client software in this case.The network enabled version of Chess for Android.On the server, start the engine server software, and construct a new row for every engine you want to run remotely. Assign a name, port number, and select the full path to each engine binary (an executable that runs on the server). You can also supply command line options for starting the engine. Check the active checkboxes and click start when done. This yields something similar to the screenshots below. Here, I have started …

Chess for Android 3.1.5

I just released version 3.1.5 of Chess for Android, available either at the Android market or as direct download. New features include:
Ability to filter PGN games (on player, event, ECO, ELO rating range, or result)Automatically re-import last UCI/Xboard engine on exit-re-entry of applicationFinger sweep left or right as alternative game navigationMinor improvements in setup position feature