I’ve made many attempts now to create the perfect Python script for SF commits (via ChatGPT, of course), and finally realized that the problem was that almost everything necessary is already at Abrok. Official builds are over at the official site anyway. But all the commits are here, going back to 2018 or so. Here is a list of those commits, with direct links to the executables.
Original Millionbase, from the old Rebel website, cleaned up in ChessBase and Scid, with most of the work handled by pgn-extract. Headers are normalized, evaluations and openings are added, along with plycount and beauty scores.
Working with files is a big part of being a chess engine enthusiast. Here are a few commands that will help.
First a couple that don’t involve the Windows PowerShell.
You may be familiar with how you can use CTRL+V to paste the latest addition to the clipboard. But you can also use WIN+V to open a list of the last ten things you put on the clipboard, and you can use the mouse to choose which one. This means if you need to copy and paste three things, you can use CTRL+C on all three, then WIN+V to select them each.
If you want to combine all the PGNs in a directory (for example) you would click to the right of the path in the Windows Explorer address bar, and type in cmd to replace it. This brings up the Command Prompt, in which you type copy *pgn filename.pgn …. though of course you would use your own filename.
That same Command Prompt copy command can be run in the PowerShell as well:
That last command takes all the files in a directory, as before, and puts them all together. Each time you run this, you would overwrite the output file. To append to it instead, use:
Having used a Python script to make a list of player names from the Online Superelite DB, I then used another script to attempt to download the Nov. 2020 games from each of those players, ending up with about 2,000 PGNs. After running them through pgn-extract with the same filters used for the rest of the Online Superelite DB, this was the result. These games have players rated at least 2500. Games are between 20-150 moves, and end in checkmate. Doubles, bullet games, and non-standard games have been removed.
The FIDE player list is a combination of the three ratings lists (standard, rapid, and blitz) but is very big and includes lots of players who are registered but have no rating. After running a Python script to keep only the players rated 2000 or above, I can provide a much smaller list that might also be more useful. In the MediaFire directory for 2025-01, you can find it in XML, CSV, JSON, XLSX, ODS, and TXT.
This is a Python file which has been converted to EXE — along with the original Python script, if you’re not on Windows — which takes as its only argument a path to a PGN. If not specified, it will prompt you for it during runtime. This program provides information on a PGN — namely the number of players, the number of games, the number of events, and the highest and lowest Elo. It will also prompt you to ask whether or not you want a text file list of players, and if you want a text file list of sites/events.
This is a combination of the Chesscom Elite db (which covers 2020-12 to 2024-12) and the Lichess Elite db (which covers 2013-01 to 2024-12).
Covers 2014-12 to 2024-12. Every game has players rated at least 2500, the games are between 20-150 moves, and they end in checkmate. Doubles, bullet games and non-standard games have been removed. Openings, plycount and evaluations have been added in.
HypnoS ++ is a free and strong UCI chess engine derived from Stockfish that analyzes chess positions and computes the optimal moves. HypnoS ++ does not include a graphical user interface (GUI).
Has a more complex network and a few search tweaks/additions. For the sake of my sanity (and because .NET can’t/doesn’t autovectorize NNUE code), this requires at least AVX2 to be performant, but will still function without it.
A Note On Bindings
This release includes C++ code from Horsie to make NNUE evaluation faster. This code is only used if your processor supports AVX2.
The Windows and Linux releases here already have it compiled and embedded as a .dll/.so within it. For technical reasons this embedded file will automatically extract itself into a file called HorsieBindings.dll/HorsieBindings.so which Lizard will try to use when it launches.
You will see “Loaded Horsie bindings!” if they are successfully loaded, or “Running without Horsie bindings” if they aren’t. The bindings aren’t required, but they do make Lizard significantly faster.
Picking A Binary
Use a …-512 binary if your processor has Avx512. AOT binaries aren’t being included here because they are strictly slower.
JudaS ++ is a free and strong UCI chess engine derived from Stockfish that analyzes chess positions and computes the optimal moves. JudaS ++ does not include a graphical user interface (GUI).
Eubos chess is a multi-threaded Java chess engine. Eubos uses a standard alpha-beta negascout algorithm with transposition hashing and quiescence search extension. It uses lazy move generation and lazy evaluation.
The evaluation function takes account of the following factors
material balance
piece mobility
pawn structure
king safety
tactical threats
It knows about draws by 3-fold repetition and insufficient material.
Lozza was primarily created for use in browsers, but can also be used with traditional chess UIs via Node.js and on pretty-much any platform (see below). Note however that Lozza is relatively slow compared to compiled engines of a similar design, which also makes her relatively weak.
This is a Lozza 4 re-release.
The original Lozza 4 release caused problems for some users. For those that ran it successfully, results (e.g. CCRL Blitz) can stand because no peformative changes have been made. However, please replace with this re-release anyway; thanks.
Please use a recent version of Node if possible (they are always improving performance). The latest stable version is 22.
Train generation 3 net. Use ADJACENT, not DIST. Simplify QS and don’t go into QS if in check. Scale eval by 1.9. Scale UCI cp by 1.9. Add perspective (currently unused). Use the Mersene Twister from cwtch for randoms. Move futility alpha test to move loop. Use hash move in QS. Optmise deferral of accumulator update a bit more. Fix some web stuff. Add improving indicator (failed to get it to gain so far). Prune QS with quickSee(). Only count nodes that iterate moves. Put eval in TT before search. Optimise castling a bit. Simplify search recursion. Allow successive NMP and beta pruning. Bigger net 768x128x1 srelu. Make sure all UE updates (e.g. castling) are a single accumulator loops. Defer UE to after legal check (doh!) and don’t check pre-determined legal moves. Minor tweaks for datagen + net command.