eboatwright wrote: ↑Thu Jan 18, 2024 5:27 pm
Hello TalkChess!
Over the past ~2 months I've been writing a Chess engine in Rust, and I'd like to get it out to the world!
It's not very strong right now (~2000 Lichess, 1830 CCRL Blitz), but I'm currently working on a complete re-write of the search & evaluation (version 3.1), so hopefully it doesn't stay that low for long
Links:
https://github.com/eboatwright/maxwell
https://lichess.org/@/MaxwellOnLC
Hi

I took a look at your engine, as a fellow Rust engine author.
(PS @ rating list maintainers: what happened to the ratings? Everyting seems to have dropped by some 120 points.)
Your engine is rated at ~1830 in CCRL, vs 1800 for the current version of my engine (Rustic Alpha 3), even though the feature-set of your engine is much greater. You have functionality in the engine that Rustic Alpha 3 doesn't implement (null move, futility pruning, LMR, to name a few), but the strength difference is minimal.
Therefore your engine seems underpowered for the feature-set it has. That means you either have lots of bugs, or the engine is slow. I have seen this with several other new engines (and provided the same comments), and after testing and bugfixing they improved a lot.
In case you are wondering about Rustic Alpha 3's feature set:
- The basics: magic bitboard move generator, a/b-search, q-search, check extensions, mvv-lva move ordering
- Evaluation: hand-written, non-tuned PSQT's (not tapered)
- Extra features: principal variation search, transposition table, move ordering on TT move, killer moves
That's it.
For the feature-set your engine has, I would have expected it to be in the 2200+ range.
Also: I can't get it to run properly from the command-line. Basically every command I give, except for 'uci' and 'isready', the engine crashes. If I try to do anything such as 'go' or 'go infinite', the engine crashes. It seems error-handling can use some improvement. (In my engine, you can just start it and type 'go' to make it analyze. You don't even have to follow the exact UCI-protocol. It's always ready to play. It's also impossible to crash it from the command-line... if you manage it, tell me how you did it, so I can fix it.) PS: There is no UCI-parameter to set the hash table size.
Hopefully you can take something away from this (well-meant) critique and improve the engine further.