Sherwood, Russell Monday, October 11, 2021
Today We start a new series of articles around developing a chess engine specifically for Correspondence Chess.
Let’s start with a simple premise – Chess Engines are super-strong but are not developed to meet the needs of Correspondence players and this in itself is partial fuelling the “draw problem”
Why are Chess engines not optimized for CC players? There are two reasons for this – firstly, testing for longer time controls is massively time and resource consuming (and what is called Longer time control in Stockfish testing is not in Correspondence terms!) and secondly optimizations for CC, would probably make an engine weaker in Short or very short time controls. The reason for this is that the main objective for a CC engine is different to that of a “normal” engine. In CC we are looking for the absolute best move, whereas a normal engine is looking for a “winning” move. This means that many of the SF optimizations, which bring great results as Shorter time controls, sub-optimize the engine for longer time controls.
Some work has been done in the area before. CorChess for example, gives a few optimizations related to CC but its overall benefits of this compared to Vanilla Stockfish are limited , as shown by testing. Others commercial engines suggest “ideal for CC” without any real evidence to back this up.
It is my intention to create an engine alongside the discussion, although this will be private in nature, with a very limited distribution.
So what are the first tentative steps in this journey?
- Decide on Template engine
- Review current contenders
- Create initial version
- Make V1 ICCF rules complaint.
- Determine desired Features
Considering each in turn.....
- Is not as simple a choice as it first seems. Stockfish is the strongest engine out there but is LC0 better suited to Correspondence Chess? My initial view is that Stockfish is still the best option for the template engine as (a) “I can stand on the shoulders of Giant’s” in terms of the amazing work done by the Stockfish Developers and (b) MCTS can be used in Stockfish. From a practical point of view I am not trying to compete with these guys but work on a very niche area!
- There are a number of engines which have parts of what I believe need to be components of a CC engine – CorChess, ShashChess and SugaR ICCF to name three. The task here is to determine what features, these and other engines have, which are desirable.
- This is simply a case of setting up a GitHub repository
- Does the engine follow ICCF rules – SF and almost all the clones do not – the most obvious issue being the application of the 50 move rule. This is the first matter to correct within the engine.
- This is something to discuss next time but the aims are threefold –(1) automate/optimize some of the features which currently have to bodged to make work (2) Optimize some of these features and (3) Build a wish list of potential new feature which could be beneficial. The problem then remains over testing the engine, but I have some ideas here!
Till the next time
Updated Monday, October 11, 2021 by Russell Sherwood