Thanks for testingunserializable wrote: ↑Mon Jan 25, 2021 9:01 pmCool, sounds like the reason indeed has been found. Though it is also bit sad , if bugfixes continue at such pace, soon Monchester 1.0 will not be able to beat Rustic under any circumstances. I will also put it to play some more games for the night before the code gets updated .
I dare say that I don't often have severe bugs in the software I write. The drawback is that I'm relatively slow (compared to others) with regard to writing new code, and I test quite extensively. I *REALLY* dislike having to go back and debug code after I've written it. I prefer to only touch a piece of code when I'm actually going to improve it somehow. (Structure, speed, functionality, whatever...)
I wonder how this bug could have happened. The code actually says:
Code: Select all
// Determine if we are in check. ... // If so, extend search depth by 1 to determine the best way to get // out of the check before we go into quiescence search.
Ah well. In a hyperspeed time control, the fix doesn't seem to matter much. I'll test the fixed version against Alpha 1 in the mentioned 1m + 0.6s time control (which is also used in Stockfish testing if I remember correctly). Looking at the playout of some games reminds me that time management is indeed quite basic.
I don't know how the engine suddenly decided on that move. I (as a person) would be extremely scared of that pawn on f5. Bd6-e5 guards f6, but I would rather have that pawn off the board. I also couldn't really understand the offered sacrifice of Be5xd4, but after I took the bishop with white, Rustic demolished me in short order.Rustic's upcoming preference for Bd6-e5 bishops' activity on open diagonal instead of bishop blocked by own pawns seems like true grandmaster move.
No comment... must have been the opening book. I'm switching to the much bigger GrandMaster 1950 book, for a more varied opening play. I'll see if that fixes it. It's not logical for the engine to prefer the white or black pieces, because there's nothing in the evaluation to make it do so. It just does ("material + PST for white" - "material + PST for black") and that's it for now. (Apart from the extra King endgame table.)EDIT: wow, from the statistics in your last post, Rustic really loves the black pieces
Sometimes, I see the engine do truly heroic stuff with regard to attacks and sacrifices, making it look like a tactical genius... and then a few moves later, it gets distracted by a weak pawn on the other side of the board, breaking off a massive attack on the king because it can eat just a bit more material... which makes it look like a complete positional idiot.
PS: I took a look at Monchester after I saw the score of your program against Rustic... it's in the list at ELO 837. How did you get it all the way down there? I don't understand...Have you not yet implemented quiescence search, MVV-LVA and check extension? I intended to leave them out of my very first version, but when I saw the _MASSIVE_ blunders to program played, I quickly decided to not release it like that.
By the way: I also tried to look at the code: https://github.com/unserializable/monchester, but there doesn't seem to be any. Am I missing something? Edit: Oh. It's not in the repository, but attached to the release. That's a novel idea