3.4.0
Calvin 3.4.0 is released and comes with an estimated ~43 ELO strength gain in self-play.
Score of Calvin DEV vs Calvin: 713 - 437 - 1046 [0.563] 2196
... Calvin DEV playing White: 377 - 188 - 533 [0.586] 1098
... Calvin DEV playing Black: 336 - 249 - 513 [0.540] 1098
... White vs Black: 626 - 524 - 1046 [0.523] 2196
Elo difference: 43.9 +/- 10.5, LOS: 100.0 %, DrawRatio: 47.6 %
Calvin 3.4.0 comes with the following new features and improvements:
Faster move generation: 8438359
- Instead of calling make/unmake move to check legality of generated king moves, just remove the king from the board and check if the destination square is attacked
- Store masks, magics, shifts and attacks in a single lookup array during sliding piece move generation, instead of in separate arrays.
- Use int for Move instead of short - gain from decreased memory does not outweigh cost of constant casting to int
- Small optimisations in Bitwise, PinCalculator and RayCalculator classes
- Move generation code refactored and javadoc added
UCI info output: 9df6b81
- Calvin now outputs info via UCI while thinking.
- Depth, score, nodes, think time, NPS, and principal variation are now included.
Faster quiescence search: 6661997
- only use MVV-LVA score for move scoring during the qsearch, instead of the complete move ordering score.
Improved Texel Tuner: da2ec36
- Texel tuner is now multi-threaded leading to a significant speed up in tuning.
- All evaluation params re-tuned simultaneously, leading to a small ELO gain (~5 ELO)
Fine-tuned late move reductions: affd96e
- Dynamic reduction value calculated for LMR (credit to Lynx chess engine for inspiration for the formula).
Small search parameter optimisations: 188e653, 270e7bb, 7f02d3a
- Aspiration window margin reduced to 25cp.
- Null-move pruning margin reduced to 0cp.
- Futility pruning min depth reduced to 4 from 6.
Calvin 3.4.0 is available compiled in Java 21 (default), or Java 17.