ViperMate is my pet project: developing a chess engine.
My only goals are to learn the topics of chess programming and to have fun by concentrating on the activity I like the most: optimizing algorithms and code. The evil practice of premature optimization is welcome here, because this is not a serious project. No expectations, no stress, I just enjoy the journey. This journal documents the path taken so far.
Enrico Altavilla
ViperMate is in its alpha stage: the technological backbone is largely implemented. Now it has to learn all the rules of a chess game and how to interact with the outside world. The goal is to release its source code when it becomes a fully functional UCI-compliant engine.
Chess engine testing: a first look November 28, 2023
Finalizing the evaluation function and endgames November 16, 2023
Quiescence search is a game-changer (literally) November 14, 2023
The surprising effects of the “default” move ordering November 13, 2023
ViperMate gets a UCI interface November 11, 2023
Checkmate distance and Mate Distance Pruning November 5, 2023
The design of internal communications and a nasty G++ -O3 optimizer issue November 3, 2023
Silly experiment with parameter optimization for move ordering October 30, 2023
Refactor: search controller and game modes (benchmark, UCI…) October 28, 2023
Implementing Null-Move Pruning and “search flags” October 26, 2023
Reorganization: using Git and separating the code into different files October 25, 2023
Small optimizations: faster PVS and “colorless” alpha-beta search function October 24, 2023
Phase 2: shifting from a playground to an actual chess engine October 23, 2023
Improved usage of transposition tables in alpha-beta search October 19, 2023
The first implementation of transposition tables October 16, 2023
A curious lump in beta cutoff statistics October 13, 2023
Starting a journal for ViperMate October 12, 2023
ViperMate chess engine by Enrico Altavilla