I look forward to be able to try and play against your engine.lojic wrote: ↑Sun Feb 07, 2021 5:13 pm To be very clear, the code as it stands now is not in the form it will need to be in to be instructive for beginners. It's going to take a lot of work to take it from "working well", once I get there, to "very readable/understandable", but I'm looking forward to that process. I expect it will involve a fair amount of refactoring, and I'll likely sacrifice some speed for clarity. Having said that, I understand that even when it's in good shape, it may still be difficult to understand for a set of people simply due to being a lisp.
Rather than blog about the process as I go, I think I'd rather complete version 1.0, and then essentially re-build it piece by piece and post a blog article about each piece. With me doing manual time management, it's beaten a number of 1,800+ human players, so I think I'm making reasonable progress. It seems much weaker against other chess engines, e.g. I have to give it a decent amount of time per move to beat Wukong at the "Code Monkey King (1700)" levelIf my engine moved as fast, it would be crushed every time, but I've yet to add TT & other features; I only have quiescent search & a super simple PST now.
Remember that you can always download older versions of my engine after newer versions become available. Rustic Alpha 1 is just a smidge under 1700 on CCRL now, and it's very stable. It will be able to play a 1000 game match without issues (which cannot be said of some of the other engines around that strength).
As I've said many times before: Rustic Alpha 1 has no features, apart from MVV-LVA, because I wanted to get everything as perfect as I reasonably could, with ONLY this basic move sorting, and check extension in place. (Some move ordering is necessary, as without it, your engine will waste massive amounts of time. Check extension is needed to make QSearch work as it should, as the engine should not do QSearch when the king is in check.)
My advise would be to go for this basic version first:
- Move generator
- Board representation
- Alpha/Beta
- Qsearch
- Check extension
- MVV-LVA
- Simple time management
Then you will be able to optimize that code to be bug free, readable, and as fast as it reasonably can be, and then you'll have a basic version to compare everything against, including your own progress, feature by feature. Don't add any new features before you're 100% sure that the stuff you have is bug free and as clear to read as possible. Having to go back finding bugs in features where one feature can influence the other can be very hard.
Resist the attempt to go feature hoarding. The best example I always (regrettably) have to point to in this regard is Shallow Blue. This engine ranks at 1711 in the rating list. Rustic ranks at 1695. The difference is Rustic has no features, but also no (known) bugs... SB has a MASSIVE feature count, but lots of bugs. Drofa 2.0, which is basically "Shallow Blue without bugs + optimizations", ranks at 2450. Shallow Blue lost 750 ELO (!) due to bugs and poor optimization.

