Controlling Space

Controlling board space- especially central squares- provides room to maneuver pieces. It cramps the opponent’s position, who will have difficulty bringing pieces out from behind their pawns. And it enables a quick redeployment of pieces from one zone of action (queenside, for example) to another zone of action (kingside) to initiate an attack or muster a defense around the king. Be careful not to overextend when grabbing space. In the following position, white appears to control more space than black. Black’s counterplay demonstrates, however, that white merely occupies space but does not control it. Black moves his knight to safety… Continue Reading

MadChess 3.0 Beta 4b7963b (Remove Aspiration Windows)

When analyzing a Carlsen versus Vachier-Lagrave game, I noticed MadChess 3.0 Beta struggling to find Magnus Carlsen’s crushing 23rd move, d6, in the following position. In the engine output displayed by the Hiarcs Chess GUI, I noticed MadChess kept restarting its search of ply 18. It indicated it was searching the first move (of 47 legal moves), second move, third move, etc… then would restart searching the first move again, still on ply 18. It restarted searching the first move of ply 18 numerous times. I suspected this was due to search instability caused by aspiration windows: searching a window… Continue Reading

MadChess 3.0 Beta d143bb5 (Time Management)

I improved MadChess 3.0 Beta’s time management. I added code that increases MoveTimeSoftLimit, a TimeSpan variable that controls how long the engine examines a position (in a timed game) before responding with its move. The code increases MoveTimeSoftLimit 25% each ply (depth >= 9) if the score decreases at least one third of a pawn from the prior ply. In some engines this is known as “panic time.” The engine notices the score dropping and- to anthropomorphize it- panics like a human chess player would, spending more time than usual searching for a move that prevents its position from crumbling.… Continue Reading

Smooth Moves

MadChess 2.2 participated in a tournament Graham Banks arranged, named Smooth Moves. 1 2 3 4 5 6 7 8 9 0 1 RookieMonster 1.8.1 64-bit **** ½½01 1010 10½½ 01½1 ½100 ½0½½ 0111 1½11 11½1 21.5/36 2 KnightX 2.4 64-bit ½½10 **** 0½11 10½0 ½010 0011 1½1½ ½½11 1110 1½½½ 21.0/36 361.75 3 Betsabe II 2020 0101 1½00 **** 0111 01½1 0001 0110 10½½ 1½11 1½11 21.0/36 355.25 4 Velvet 1.0.0 64-bit 01½½ 01½1 1000 **** 1010 1100 ½½½1 ½½01 1½11 1010 19.5/36 339.75 5 Raven 1.10 64-bit 10½0 ½101 10½0 0101 **** 0110 ½½½1 01½1 10½0 ½111 19.5/36… Continue Reading

MadChess 3.0 Beta 2d855ec (Crash Bug)

I found and exterminated a bug that caused MadChess to crash in about one quarter of one percent of games. I noticed the engine crashes on line 6 of this code in the Board.IsMoveLegal(ref ulong Move) method. First Hypothesis : Illegal Move Causing King Capture? I suspected the crash was caused by kingSquare == Square.Illegal (meaning king not on any square) due to a missing king. Perhaps a move two ply earlier exposed its own king to check, MadChess erroneously considered the move legal, then captured the king the previous ply? If that were true, in the current ply, when… Continue Reading