MadChess 3.0 Beta

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
emadsen
Posts: 434
Joined: Thu Apr 26, 2012 1:51 am
Location: Oak Park, IL, USA
Full name: Erik Madsen

Re: MadChess 3.0 Beta

Post by emadsen »

Hello again, chess programming community. Long time, no comments from me.

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).
As of today, MadChess 3.0 Beta plays stronger (2450 ELO) than MadChess 2.2 (2443 ELO), at least at bullet time control.

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.
My C# chess engine: https://www.madchess.net
AndrewGrant
Posts: 1766
Joined: Tue Apr 19, 2016 6:08 am
Location: U.S.A
Full name: Andrew Grant

Re: MadChess 3.0 Beta

Post by AndrewGrant »

Thanks for sharing, Erik. I'll be reading these when I get the time.
Your blogs are among some of the best sources for new authors. It is always good to hear from you.
#WeAreAllDraude #JusticeForDraude #RememberDraude #LeptirBigUltra
"Those who can't do, clone instead" - Eduard ( A real life friend, not this forum's Eduard )
User avatar
emadsen
Posts: 434
Joined: Thu Apr 26, 2012 1:51 am
Location: Oak Park, IL, USA
Full name: Erik Madsen

Re: MadChess 3.0 Beta

Post by emadsen »

Thanks for your kind words, Andrew. I've watched with amazement the progress of Ethereal.

Along the lines of what you mention, I need to find time to write a blog post about bitboards. With the aim of illustrating concepts for novice chess engine programmers. I could cross-post it with my other blog because the idea of overcoming information redundancy via perfect hashing is an interesting concept for a general programming audience, not just for chess programmers. Though of course it would help to have a non-chess example of the technique. Anyhow, food for thought.
My C# chess engine: https://www.madchess.net
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: MadChess 3.0 Beta

Post by mvanthoor »

emadsen wrote: Fri Jul 24, 2020 7:26 pm Thanks for your kind words, Andrew. I've watched with amazement the progress of Ethereal.

Along the lines of what you mention, I need to find time to write a blog post about bitboards. With the aim of illustrating concepts for novice chess engine programmers. I could cross-post it with my other blog because the idea of overcoming information redundancy via perfect hashing is an interesting concept for a general programming audience, not just for chess programmers. Though of course it would help to have a non-chess example of the technique. Anyhow, food for thought.
Hi Eric :)

Good to see that Madchess is still active.

With regard to bitboards (and move generation...) I need such a write-up as well, for my own website/documentation of Rustic. The bitboard part and move generation in my engine are done, functions are documented, but I want to have a comprehensive write-up of how Magic Bitboards work.

I've gotten it to work by reading a lot of stuff (finally ending up at the same Stackoverflow post as yourself... I should still have the link somewhere), which made all of the loose pieces click.

Would you be interested in writing something like that together, somehow, before we both forget how it actually works and need to start from scratch again when documenting? :oops:
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
User avatar
emadsen
Posts: 434
Joined: Thu Apr 26, 2012 1:51 am
Location: Oak Park, IL, USA
Full name: Erik Madsen

Re: MadChess 3.0 Beta

Post by emadsen »

Would you be interested in writing something like that together
Marcel, that's a good idea. I'll try to write something in the next two weeks or so. I'll PM you when I have a draft. And feel free to do the same when you have something. No rush. I understand life and work make accurately predicting a schedule for a hobby difficult :)
My C# chess engine: https://www.madchess.net