Page 1 of 1

MadChess 2.0 Released

Posted: Mon Oct 12, 2015 5:57 am
by emadsen
Hey chess engine enthusiasts. I'm releasing version 2.0 of my engine, MadChess. I've rewritten the engine from scratch in a more procedural style code- as opposed to the sub-optimal (for chess engines at least) object-oriented style I used in MadChess 1.x.

The engine is about 115 - 160 ELO stronger than its predecessor, depending on time control. I estimate it is about 2350 on the CCRL scale.

You may download MadChess 2.0 at the following link. It requires .NET 4.6, which is included in Windows 10 or may be downloaded separately. I've updated the download page and the ReadMe file contained in the .zip file. I haven't updated anything else on the site yet.

http://www.madchess.net/page/Downloads

The engine doesn't work in Hiarcs Chess Explorer due to a bug in HCE, or QT, or .NET 4- I don't wish to referee that dispute. Please use another GUI such as Fritz, Shredder, or Arena.

It's come to my attention that I'm getting married in two weeks. So I'm unlikely to update the MadChess website or address any serious problems with the engine in the near future. Let's hope it just works. Cheers.

Re: MadChess 2.0 Released

Posted: Mon Oct 12, 2015 6:07 am
by Graham Banks
Thanks Erik and congratulations on your upcoming marriage. :)

Re: MadChess 2.0 Released

Posted: Mon Oct 12, 2015 4:09 pm
by emadsen
Thanks Graham!

Re: MadChess 2.0 Released

Posted: Mon Oct 12, 2015 8:12 pm
by fern
Great news, Erik
I will play your last engine.
Respect your marriage, be sure to have a friend at the gate of the church waiting in a car with the engine running, you never know...

Better running than chased regards
Fern

Re: MadChess 2.0 Released

Posted: Mon Oct 12, 2015 9:24 pm
by Steve Maughan
Hi Erik - Congrats on both accounts!

- Steve

Re: MadChess 2.0 Released

Posted: Mon Oct 12, 2015 11:03 pm
by Ferdy
Congratz for your marriage, forget about computer chess for a moment :).

Sample game at elo 1200.
[pgn]
[Event "Computer chess game"]
[Site "Home"]
[Date "2015.10.13"]
[Round "?"]
[White "F"]
[Black "MadChess 2.0"]
[Result "1-0"]
[BlackElo "1200"]
[ECO "A40"]
[Opening "Queen's Pawn Game"]
[TimeControl "120+0"]
[Termination "normal"]
[PlyCount "59"]
[WhiteType "human"]
[BlackType "program"]

1. d4 Na6 {(1. ... Nf6 2.Nf3 Nc6 3.Nc3 d5) 0.00/5 4} 2. e4 b6 {(1. ... Nf6
2.Nc3 d5 3.Bd3) -0.18/4 3} 3. Nf3 Nh6 {(1. ... Nf6 2.Nc3 Nb4) -0.35/3 4} 4.
Bd3 e6 {(1. ... Nb4 2.0-0 Ng4) -0.54/3 4} 5. O-O Qf6 {(1. ... Ng4 2.Nc3
Nb4) -0.84/3 4} 6. c4 Bd6 {(1. ... Ng4 2.Bg5 Qg6) -0.80/3 3} 7. e5 Qd8 {(1.
... Qe7 2.exd6 cxd6 3.Nc3) -2.99/4 2} 8. exd6 cxd6 {(1. ... cxd6 2.Bf4 d5
3.Nc3) -3.12/4 3} 9. Nc3 Nb8 {(1. ... 0-0 2.Bf4 Qe7) -2.74/3 3} 10. Qe2 Qc7
{(1. ... 0-0 2.Bf4 Qe7) -2.99/3 3} 11. Bf4 Kd8 {(1. ... 0-0 2.Ne4) -3.14/2
3} 12. Nb5 Qb7 {(1. ... Qc6 2.Nxd6 f5) -4.75/3 3} 13. Nxd6 Qc6 {(1. ... Qc6
2.Bxh6) -5.16/2 3} 14. Bxh6 Qxd6 {(1. ... Qxd6 2.Bxg7 Rg8) -5.19/3 3} 15.
c5 Qc6 {(1. ... bxc5 2.Bxg7) -4.14/2 3} 16. Be4 d5 {(1. ... d5 2.cxd6 Qxd6)
-5.80/3 2} 17. cxd6 Qxd6 {(1. ... Qxd6) -5.80/1 2} 18. Bxg7 Ba6 {(1. ...
Ba6 2.Bf6+ Kc8) -5.11/3 2} 19. Qe3 Bxf1 {-4.94/3 2} 20. Bxa8 Rg8 {-4.83/2
2} 21. Be5 Rxg2+ {-7.06/3 2} 22. Kxf1 Rxf2+ {-10.87/3 2} 23. Kxf2 Qb4 {(1.
... Qb4 2.Rb1) -10.91/2 2} 24. Rg1 Qxb2+ {(1. ... Qxb2+ 2.Qe2 Qxe2+)
-9.80/3 2} 25. Nd2 Na6 {(1. ... Nd7 2.Rg8+ Ke7) -9.57/3 2} 26. Rg8+ Kd7
{(1. ... Ke7 2.a4) -9.73/2 2} 27. Rg7 Ke7 {(1. ... Ke7 2.h4) -9.73/2 2} 28.
Qg5+ Ke8 {-9.79/4 2} 29. Bc6+ Kf8 30. Bd6# 1-0[/pgn]

Re: MadChess 2.0 Released

Posted: Tue Oct 13, 2015 4:14 am
by emadsen
Your engine is 64-bit, isn't it?
It will run on 64 bit machines, yes.

The engine is compiled for "Any CPU", so the .NET JIT compiler will produce machine code for 32 bit or 64 bit machines. While my engine makes use of 64 bit structures, it's a mailbox engine, not a bitboard engine. It's not specifically engineered for 64 bit architecture.
Sample game at elo 1200.
Thanks for the sample game Ferdinand. MadChess doesn't use an internal book, so it may play the opening strangely when limited in strength and without help from the GUI. I haven't tuned the Limit Strength code. It needs some attention. I should limit dumb king moves in the opening, unless playing at a really weak ELO.

Thanks for the well wishes everyone.

Re: MadChess 2.0 Released

Posted: Tue Oct 13, 2015 11:14 am
by A Distel
fern wrote:Great news, Erik
I will play your last engine.
Respect your marriage, be sure to have a friend at the gate of the church waiting in a car with the engine running, you never know...

Better running than chased regards
Fern
Image

Re: MadChess 2.0 Released

Posted: Wed Oct 14, 2015 2:05 am
by Dann Corbit
Thanks.
I get about 1M NPS (64 bit build), which is pretty good for a dotnet engine.

I added a line to ucinewgame to initialize the board:

Code: Select all

        private void UciNewGame()
        {
            // Reset cache.
            _cache.Reset();
            // Reset killer moves and move history.
            _killerMoves.Reset();
            _moveHistory.Reset();
[b]            _board.SetupPosition(_startPositionFen);[/b]
        }
because it makes debugging easier for me (uci->ucinewgame->go infinite).

Congratulations on getting married.

Re: MadChess 2.0 Released

Posted: Sat Oct 17, 2015 3:04 pm
by emadsen
_board.SetupPosition(_startPositionFen);
Good idea Dann. I've added the line of code for the next release.