Publius - public domain didactic chess engine
Author: Pawel Koziol
Publius is a simple public domain bitboard chess engine created for didactic purposes. Basically a boilerplate chess engine to build upon, no strings attached.
The current rating estimates are:
2874 on the CCRL scale for the HCE version, based on the score against Fruit 2.1: 738.0/1000 at 30s+0.16s
3250 on the CCRL scale for the NNUE version, based on almost holding its own in a 500 game match against Stash 33
"Simple" and "teaching engine" are vague concepts, so explanation of constraints is in order:
eval is done, if not necessarily tuned. It takes into account material, bishop pair, piece/square tables, mobility, passed, doubled, backward and isolated pawns, king safety based on attack units and some detection of drawish endgames.
quiescence search is probably done, unless I make delta pruning work.
search is under active developement and there will be more stuff added.
board update relies on four functions: AddPiece, DeletePiece, MovePiece and ChangePiece.
apart from the hash key, there are no incremental updates of evaluation stuff. If someone wants to slap NNUE on top of my code, there will be no need to delete them. If not, at least eval can be read in one piece.
movegen uses kindergarten bitboard technique. It's still slower than some libraries out there, but good enough.
I'm still not sure whether to generate discovered checks.
github:https://github.com/nescitus/publius

Comments
Post a Comment