Gabor Szots wrote: ↑Fri Jan 26, 2024 1:57 pm
It's been my opinion for a long time now that if a very strong engine pops up, developed for some time then abandoned, then it is a clone (sorry, a derivative) with nothing original in it. The author simply abandons it because he has implemented everything there was for the taking and has no ideas of his own.
It's not only with regard to ideas of one's own. It's also about understanding, documentation, time, and testing.
- Understanding: sometimes it takes me WEEKS to understand a topic/concept in enough detail to be able to implement it myself, without looking at other people's code, using my own programming knowledge. Sometimes the implementation changes 2-3 times because I either didn't understand something 100% properly, or I found some nifty feature in Rust that makes the implementation better/faster/whatever.
- Documentation: The knowledge to write a classical alpha/beta engine with handcrafted evaluation is there (it has been for over 50 years), but the documentation and sample code is often old and splintered all over the internet, stuck in forums and news-group posts that are often decades old. We even have to go back in time with the WayBack machine to unearth some of the most useful information (Bruce Moreland's site, for example). This was one of the big reasons for writing Rustic, so I would be able to also write
https://rustic-chess.org/. To do so, I'd obviously need to understand each subject in detail, or I wouldn't be able to explain it. (The book has had some big additions the last few days by the way.) The goal of this website is to document every part of the engine and concept used in such a way that someone could write a chess engine in ANY language, by using only a text-editor, compiler, and rustic-chess.org.
- Time. Studying the concepts, writing the code, and testing all of it takes time. Having a full-time job and other things to do beside chess programming this leaves me with a few hours for research, coding, testing and documenting per week, tops. I understand that there are people who have more time to put into chess programming than I do, but I just can't believe you can research, code, test and document a 3500-level chess engine in mere weeks (or even 3 months or so).
- Testing. This not only takes time, but the stronger the engine becomes, it also takes re-writes of the code or re-implementing features because they turn out to not work 100% correctly. And as I always say: you can't move on to the next feature before the previous one is perfect. The last case in point we have seen is Tcheran: an engine written in Rust (very good code-base and easy to understand), but in my first test I found 3 bugs just by observing the engine and _knowing_ that for the feature set it had, it wasn't strong enough. I gave the author pointers to where the bugs would probably be (and those pointers were correct), the author fixed the bugs, and the engine jumped +200 Elo. Other engines I've done the same were Blunder, Loki, early versions of MinimalChess, Walleye, and maybe more that I don't even remember. I deem it impossible to get ALL steps of a 3500 Elo engine tested in mere weeks if you are writing code from scratch without extensively looking at other people's code.
I'm now in the process of writing the Texel tuner for Rustic. After this is finished, the only addition to the engine will be tapered and tuned PSQT's, which will probably boost playing strength by +250 Elo (~2050 in the current CCRL Blitz list). The next few steps (null move and such) will boost playing strength by another +200 points: look at the current version of Tcheran to get an almost-preview of Rustic 5's performance.