MadChess 2.0 Beta Build 021 (Tapered Evaluation)

I added tapered evaluation to MadChess 2.0 Beta. The evaluation assigns a material score, a middlegame piece location score, and an endgame piece location score. Then calculates the game phase and returns a weighted average of the middlegame and endgame scores. By separating piece location scores into middlegame and endgame phases, I can encourage MadChess to hold its queen back during the middlegame, and bring its king to the center during the endgame, for example. This added 107 Elo to the playing strength of MadChess 2.0 Beta. MadChess 2.0 1596 : 800 (+42,=72,-686), 9.8 % vs. : games ( +,… Continue Reading

MadChess 2.0 Beta Build 001 (Procedural Code)

I’ve been writing a new version of MadChess. For this 2.0 version, I’m writing code using procedural techniques rather than the object-oriented techniques I used in MadChess 1.x. When I say the code is “procedural”, I mean it has two primary traits. The code uses primitive data structures instead of classes. The code emphasizes performance over readability and maintainability. I’m writing the code in C# with a mailbox board representation, similar to MadChess 1.x. The board has an array of Positions. Each Position has an integer array of Squares. Moves are encoded into an unsigned integer. I’m using a copy-make… Continue Reading