Reinhard Scharnagl wrote:Hi Sune,
I search the hash move and null killer move before even generating captures.
that is your philosophy of applying nullmove cut offs, which of course is shared by others, not mine.
Yes this is a trick to see what is hanging or threatening.
There are probably other and cheaper ways to get that info if you don't want to nullmove.
The nullkiller is only half good, because it doesn't tell you what to move at the previous ply where you fail-low.
For instance if PxQ is threatening, we should try and move the queen perhaps - but where to, and should we order all queen moves first?
Maybe we should capture the pawn first instead of that tasty rook over there..?
There must be room for some optimization at the previous ply in some way..
Reinhard Scharnagl wrote:Some days again I have had a discussion with Vincent, who has been a little bit upset, when I tried to tell him, that double nullmove would not change that much in my engine concerning Zugzwang. But such wrong conclusions on other chess program's behaviour is proving me, that it is not easy to imagine that other programmers might do things in an other way.
I couldn't get double nullmove to really work, maybe it had a bug but I think losing effectively 6 plies before zugzwang can be detected is too much anyway in most cases.
And one win of having a fast all move generator is to become able to make some decisions cheaper like having nullmove applied or not e.g. to avoid Zugzwang or a nullmove with probably bad (non pruning) result.
So it is does not make sense to see those details isolated.
Reinhard.
Yes if I had to generate all moves I too would try and figure out ways of using the extra info, and this is one of the things that could be handy to know.
I have tried generating all moves at the interior nodes where speed is not important and used this trick as well, I couldn't register any improvement so I guess the effect isn't all that large.
I'll probably keep the all node generator for the interior nodes though, I want to try some ETC as well, especially ETC in the endgames.
A more general nullmove detector is however still needed I think.
-S.