Please sign in to access this page
IMPORTANT: Reload the page if you get any error like "engine did not load"
World top 100 chess engine, shooting for higher!
Approximate CCRL rating: 3450
Also check out the lichess account: https://lichess.org/@/PZChessBot
PZChessBot is UCI compliant and also human compliant! When downloading binaries, run `help` to get a list of commands.
This is a project I started a long time ago, but only recently picked back up. Starting from scratch, it quickly reached 2000 Elo in under a month. Then, I trained a neural network to do the positional evaluations to raise it to 3000 Elo. From then on, small tweaks and re-trains of the neural network have gradually piled up, placing it at a current rating of approximately 3400 Elo.
nosrep
Check their projects out: my website, trout, human benchy
Daniel Xu
Check their project out: ChessMD
cubit010
Check their projects out: CHESS 2, Osmium -- Chess Engine
sugo14
Check their projects out: Tutoring Club Suite, Terminal Velocity, Terminal-Style Portfolio
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
I actually might just be the goat, this is the largest green wave we've seen in a while
- Use optimized move picking in qsearch instead of std::stable_sort
(which is slow) (4.5 Elo)
- Optimize capture generation for qsearch (6 Elo)
- Optimize NNUE inference with Finny-like tables (15 Elo)
- Only store upper 32 bits of hash (5.7 Elo)
- Fail-firm beta adjustment when failing high (16.6 Elo)
- Simplify Finny NNUE inference (1 Elo)
- Modify time allocation (8.3 Elo)
Try a completely new pruning method (cut net) that gained +15 Elo (WTF!!!!!)
Might PR this idea into Stockfish and see if it can also gain from this
Continuing on with general QoL fixes in PZChessBot since the search is pretty much complete :)
- Add MultiPV support
- Test 3-PV vs 1-PV @ fixed depth=10 (+57 Elo)
score > alpha
condition is metnone of these passed :(
Continuing rewrite:
- Implemented check extensions (50 ELO)
- Implemented proper time management (30 ELO)
Testing:
- Futility Pruning
- QSearch Futility Pruning
- Capture History Heuristic
To answer @nosrep, I'm rewriting the search because I wrote the bulk of the foundation for the search back when I didn't really know much about chess engines. As a result, my search code is, honestly, extremely messy and difficult to deal with. So, I'm trying to clean it up (along with fixing a few bugs and adding some small microoptimizations)! Also, when I wrote the base search, I didn't know how to properly test code either, so I just made changes and hoped they made the engine stronger. Now, by testing all my changes, I can be sure that my engine is actually stronger, and also I can document my progress and write blog posts on it!
preach
why rewrite?
Start working on self-gen data for self-training network
Tried a variety of small improvements that didn't work :(
nnue_eval()
(~7 ELO)Finalized some stuff for the v2.0 release! Not too sure if I will continue work (since most of it will be with NNUE stuff and that's really :( and also because engine dev is getting really dry)