RookieMonster is also written in C#, but I agree MadChess 3.1 will probably jump ahead again.

Moderator: Ras
RookieMonster is also written in C#, but I agree MadChess 3.1 will probably jump ahead again.
Ah I didn't know that! Thanks for the info! Can I download your engine somewhere to include in my gauntlet?
Leorik has been gaining strength quickly. Seems like it will pass MadChess soon. Especially because of my slow rate of progress and less frequent releases.
My tuner found the same. MadChess awards no bonus for knight mobility in the middlegame and only -13 to +9 centipawns in the endgame. Tapered of course.
Good luck!lithander wrote: ↑Tue Jun 28, 2022 12:35 am I hope to first complete my work on the eval (for now) by adding something about king-safety... So I will start again with coming up with a plethora of "features" for the tuner and then see which of them have the most significance in predicting the game outcome.
I agree with that too; he'll pass us both, and that'll be that.
Sorry, RM still plays too many exasperating blunders for me to release it. One time (when it was rated around "2500"), it managed to lose an opposite-colored bishops endgame that I was convinced I could have held. Sure enough, I played a blitz game against Stockfish from the start of that OCB position and easily got the draw.
And of course my optimism was misplaced.lithander wrote: ↑Tue Jun 28, 2022 12:35 am So I will start again with coming up with a plethora of "features" for the tuner and then see which of them have the most significance in predicting the game outcome. Then I'll try to simplify again... it has worked for pawn structure and mobility and so I'm positive it will also work here.
Correct me if I'm wrong, but it sounds like you're trying to implement king safety in a similar manner to your other evaluation terms, by collecting certain features of the position, and multiplying these by the correct phase and certain weights? If so, I could see that as being an issue because I'm not sure how you could include any notion of non-linearity into the king safety score.lithander wrote: ↑Tue Jul 05, 2022 12:23 amAnd of course my optimism was misplaced.lithander wrote: ↑Tue Jun 28, 2022 12:35 am So I will start again with coming up with a plethora of "features" for the tuner and then see which of them have the most significance in predicting the game outcome. Then I'll try to simplify again... it has worked for pawn structure and mobility and so I'm positive it will also work here.
I have tried many different little features (things that should offer protection like pawns infront of the king, or on surrounding squares. But also things that provide a threat like pieces attacking squares near the king...) and some of them lower the MSE quite significantly. In the past a smaller MSE always correlated with a gain in playing strength. Not this time, though. Whenever I try to include something king-safety related in the engine the new build loses in selfplay against the previous version.
It's almost like the features I come up with and are indicative of a winning position (lower MSE) can also be created in a way that does not at all mean you're winning. The engine is just happy to create positions that look like they attack the King but it's not really creating any executable plans.
Code: Select all
static short[] KingThreatsBase = new short[20] { -56, -50, -48, -51, -47, -36, -27, 1, 8, 37, 81, 42, 51, 91, 4, 0, 0, 0, 0, 0, };
static short[] KingThreatsEndgame = new short[20] { 45, 39, 23, 37, 34, 15, 14, -23, -29, -66, -94, -34, 22, 15, 0, 0, 0, 0, 0, 0, };
public static void Update(BoardState board, ref EvalTerm eval)
{
//White
int count = Features.CountBlackKingThreats(board);
eval.Base += KingThreatsBase[count];
eval.Endgame += KingThreatsEndgame[count];
//Black
count = Features.CountWhiteKingThreats(board);
eval.Base -= KingThreatsBase[count];
eval.Endgame -= KingThreatsEndgame[count];
}
I remember you mentioning this idea Before, and it's something I meant to try in Blunder as well, so thanks for reminding me! I think I remember adding it in before and it seem promising, but I never got the chance to run a full, rigorous test.Mike Sherwin wrote: ↑Tue Jul 05, 2022 4:30 pmThere is something very simple that can be tried. For each root move count the checkmates for and against. Do some math on those numbers. Adjust that root moves score.
![]()