I'm having problems reducing the size of my search tree.
Maybe some of you would have some insight where I could improve.
In search, I first check for a TT cutoff.
Now I do null move pruning if we're not in check and if this is not a PV node and if depth > 3.
Next I generate all moves.
Next I check for a draw or mate.
Next I do some move ordering based on hash move and capture value with MVV-LVA. I sort the move list.
I loop through the moves.
If we're at depth 2 and we're not in check and not in a PV node, do futility pruning. Then razoring.
Then LMR at depth > 2 and moves searched > 2.
Then PVS if we're in a PV node.
Regular AB call otherwise.
If score >= beta save to the TT and return.
If score > alpha alpha = score.
Outside move loop, save to TT and return alpha.
Does it look like I'm doing anything wrong here? I'd prefer not to post my long search function
Is anything out of order? i.e. does it matter if any of the steps is done before the others?
Thanks for your thoughts,
David Cimbalista