While most of my programming efforts over the last year and a half have been focused on my career and my general programming blog, ErikTheCoder, I have found some time to work on my chess engine, MadChess. I'm currently rewriting it as a bitboard chess engine (MadChess 2.0 was implemented using mailbox board representation). I realize there are much more exciting developments happening in the world of chess engine programming than the glacial progress of a "down-ballot" engine (namely, the emergence of strong neural network techniques) but I still find satisfaction in writing a moderately strong engine in my language of choice, C#. The coherence of its architecture, simplicity of its code, cleverness of its algorithms, and the joy and sense of wonder it evokes as a sparring partner(1) are reward enough.
I should decide when to release an updated version of MadChess. Let me set the following criteria so I have a clear and publicly stated goal to work towards.
- At least 150 ELO stronger than latest public release (version 2.2). I'll settle on a round number: at least 2600 ELO at bullet chess.
- Feature parity with latest public release (UCI_ELO, UCI parameters useful for creating personalities, etc).
- No known bugs (currently crashes in about two tenths of one percent of games, reason unknown).
Below is a list of recent blog posts detailing my slow and fitful progress.
MadChess 3.0 Beta 6f3d17a (Late Move Pruning)
MadChess 3.0 Beta 5c5d4fc (Piece Mobility)
MadChess 3.0 Beta bef88d5 (Tweak Search, Tune Eval)
(1) I'm referring to MadChess as a Frankenstein creation, that is, of my mind but stronger than my mind- at least at this board game. I am a capable programmer but patzer chess player.