About Obsidian

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: About Obsidian

Post by mvanthoor »

Uri Blass wrote: Mon Jan 29, 2024 11:03 pm Maybe it is about "and the like" later in the sentence but you did not explain what do you mean by that.
What he probably means (in my interpretation) is the following:

If you have working engine with a bug-free move generator and basic search, it's not hard to hit 2500 Elo by only adding search techniques. I estimated these ratings (before the CCRL recalibration) for my engine, and it did achieve them in gauntlet testing:

- Only alpha/beta-search + move ordering + PSQT's: 1700 Elo (Rustic Alpha 1)
- plus Transposition table + TT move ordering: 1850 (Rustic Alpha 2)
- plus PVS and killer moves: 1920 (Rustic Alpha 3)
- plus tapered/tuned PSQT's: 2170 (Rustic Alpha 4 / 4-beta)
- plus null-move pruning: 2270 (Rustic 4-beta)

So if an engine such as my Alpha 1 version is bug-free, it should be doable to hit at least 2500 Elo by adding a tapered/tuned PSQT, and then judiciously adding search techniques one by one. It is certainly possible. PESTO did this, and it hit (if I remember correctly) something like 2875 before even doing anything else but tapered PSQT's in the evaluation.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
User avatar
jasper.sinclair
Posts: 5
Joined: Fri Nov 17, 2023 2:50 am
Location: USA
Full name: Jasper Sinclair

Re: About Obsidian

Post by jasper.sinclair »

mvanthoor wrote: Mon Jan 29, 2024 2:56 pm
jasper.sinclair wrote: Sun Jan 28, 2024 10:47 pm It's certainly seems possible to me that the author has simply:
lost interest
a family matter intervenes
...or any one of a million other possible life issues that routinely occur, does in fact occur.

But to immediately categorizing it it as a 'clone' because of that?
wow...
Nah. I'm not even saying that very strong engines are always clones. I state that it's impossible to write a 3400/3500 Elo chess engines from scratch in a few weeks without cutting lots of corners (especially when starting from 0 with regard to knowledge about chess programming); where those cut corners could also be big pieces of code from one engine or another, without cloning the whole thing verbatim. There are WAY too many 3400/3500 Elo engines that just popped onto the scene as "Hi, I wrote this chess engine during my christmas holiday. Could you take a look at and point out where it can be improved?" Then it turns out to be 3400/3500 Elo; as if the author didn't know already. I just don't believe it.
jasper.sinclair wrote: Sun Jan 28, 2024 10:47 pm
Gabor Szots wrote: Thu Jan 25, 2024 4:05 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 certainly seems possible to me that the author has simply:
lost interest
a family matter intervenes
...or any one of a million other possible life issues that routinely occur, does in fact occur.

But to immediately categorizing it it as a 'clone' because of that?
wow...
I was replying to Gabor's (IMO deplorable) post...above.
But you have cut & quoted my response out of context, and inserted your reply.
Why you need to do that (and spam the rest of the topic) is beyond me...
other than the fact you may be desperate for some attention to 'Rustic'?
Whiskers
Posts: 219
Joined: Tue Jan 31, 2023 4:34 pm
Full name: Adam Kulju

Re: About Obsidian

Post by Whiskers »

Uri Blass wrote: Mon Jan 29, 2024 11:03 pm
JacquesRW wrote: Mon Jan 29, 2024 7:54 pm
Frank Quisinsky wrote: Mon Jan 29, 2024 5:09 pm A beginner will never be able to write a chess engine with 2500 Elo.
Me and many other programmers can attest that we wrote 2500 elo programs as beginners, personally I didn't stop feeling like a beginner until long after that, because just learning all the basic search techniques will take you much further than 2500. The point is that now when a beginner starts writing a chess engine it is simply almost impossible to avoid learning about techniques such as Piece-Square Tables, Null Move Pruning, and the like, which immediately pushes their engine towards 2500. No one is claiming that beginners reinvent all the things that weren't around 20 years ago, beginners back then would have been in the exact same situatation, just with much poorer access to the information we can see easily today, and with many search techniques considered "basic" today having not been invented yet - understanding a technique is very far removed from coming up with it yourself, of course.

I feel like so far in this thread we've avoided a pretty big point for new engines, especially those originating from authors on Discord: proper testing. If you join Engine Programming or Stockfish discord and ask how to progress with your engine, you'll immediately be told to test properly (with SPRT), and this both massively speeds up development, as well as making it much more reliable.
Programmers knew about piece square tables and null move pruning even more than 20 years ago.
A lot of engines authors used piece square table and null move pruning and were not even close to rating 2500.

One example
https://www.chessprogramming.org/Faile

https://www.computerchess.org.uk/ccrl/4 ... aile_1_4_4

The difference between today and year 2000 is not
learning about techniques such as Piece-Square Tables, Null Move Pruning.

Maybe it is about "and the like" later in the sentence but you did not explain what do you mean by that.
The search techniques are only the same in terms of "what they are supposed to accomplish". They have been significantly refined since then. The null move pruning of the 90s used a depth reduction of 1 or 2; now the base reduction for a strong engine is usually 4, and can go significantly higher based on a couple more conditions. These improvements are usually worth tens of ELO, and there are so many search techniques that they add up really quickly. Not to mention that several big search gainers, such as RFP, singular extensions, and LMP, were used very poorly. Those three combined are 200+ elo.

Evaluation has also been made incredibly easy. On the NNUE side, Lc0 data and the sheer power of even a simple perspective net makes 3000 a baseline rather than a lofty goal. Even for HCE, the rise of gradient descent tuning makes it so that rather than plugging in numbers that look good and then testing, you can immediately tune your evaluation constants to their optimal values; it makes it a breeze to add new evaluation terms.

Testing has also improved, and more importantly information about testing is spreading like wildfire - a new engine dev can't take a step without being told to SPRT test properly.

All these factors add up to an incredible degree. Willow's first release was 2400, and it got there with CPW articles and talkchess threads as the resources I was drawing on. After I released Willow, I got invited to the Engine Programming Discord and then into the SweHosting group, and rocketed to 3000 without really adding any revolutionary changes, there was just so much room for improvement in the existing features I already had.

I must say though, it was more fun when I was struggling along and learning things by trial and error. Much more fun :)
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: About Obsidian

Post by mvanthoor »

jasper.sinclair wrote: Tue Jan 30, 2024 12:58 am I was replying to Gabor's (IMO deplorable) post...above.
But you have cut & quoted my response out of context, and inserted your reply.
It's just my view on the issue. You stated that authors could have lost interest, etc...
My view is that there are too many 3400+ engines that are put out into the wild and then we never hear anything from the author or the engine again.
Why you need to do that (and spam the rest of the topic) is beyond me...
other than the fact you may be desperate for some attention to 'Rustic'?
That's absurd. If I wanted to seek attention, I'd post the engine in the Reddit Rust channel and probably crash GitHub because of it.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
connor_mcmonigle
Posts: 544
Joined: Sun Sep 06, 2020 4:40 am
Full name: Connor McMonigle

Re: About Obsidian

Post by connor_mcmonigle »

mvanthoor wrote: Tue Jan 30, 2024 1:08 pm ...
That's absurd. If I wanted to seek attention, I'd post the engine in the Reddit Rust channel and probably crash GitHub because of it.
The only absurd thing is that you think your 2300 Elo engine would be so interesting to people that it would "crash GitHub". If you're wondering why your progress is seemingly so slow relative to others, I think the answer partially lies in the fact that you seem to prefer posting about Rustic here to actually developing Rustic.

The fact that contemporary engines are so strong and make progress so rapidly relative to their predecessors is really a testament to how much our collective knowledge as a community of chess engine development best practices has advanced. For better or worse, TalkChess is certainly no longer the venue where this collective knowledge is shared
op12no2
Posts: 515
Joined: Tue Feb 04, 2014 12:25 pm
Full name: Colin Jenkins

Re: About Obsidian

Post by op12no2 »

I lurk through the OpenBench and other chess discords with my morning coffee and they are without doubt the public coalface of chess development. The enthusiasm is amazing to watch; as is the patience of established members when an eager young person shows up wanting to write an engine. Always an enjoyable start to the day :)

Discord probably a satisfies a need for immediacy in busy young lives much better than forums do. Maybe.
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: About Obsidian

Post by mvanthoor »

connor_mcmonigle wrote: Tue Jan 30, 2024 4:00 pm The only absurd thing is that you think your 2300 Elo engine would be so interesting to people that it would "crash GitHub".
Obviously. I *knew* I forgot something. It's the #humor tag. Or maybe, for some people #sarcasm would be more appropriate.
If you're wondering why your progress is seemingly so slow relative to others, I think the answer partially lies in the fact that you seem to prefer posting about Rustic here to actually developing Rustic.
I'm not 'wondering' about that. The reason is that I maybe spend 1-3 hours a week (if that) on the engine, including research, documentation, refactoring, testing and reading/posting in forums (Which is nowadays, only here, basically. Sometimes, at least.)
The fact that contemporary engines are so strong and make progress so rapidly relative to their predecessors is really a testament to how much our collective knowledge as a community of chess engine development best practices has advanced.
In short, it basically means that many, if not most engines not in the top 5 have nothing new to offer with regard to chess engine programming techniques and the authors are writing the engine for their own reasons. If one wants all information to write a 3000+ Elo engine is available and the only thing left is the work to do and to find the time to do it.

My first for writing my engine is to be able to write a documentation site along with it as an updated version of something like the old TSCP or Bruce Moreland sites. The second reason is to end up with a chess library I can use to write my own software against, so I'll be able to build my own chess computer.
For better or worse, TalkChess is certainly no longer the venue where this collective knowledge is shared
I know; we're back in the 90's, where only the few people that where 'there' at the right time in the right place (which were tournaments back then, and Discord now) know about anything new. After the information is dispensed, it basically just disappears. That's 'progress' for you.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
User avatar
j.t.
Posts: 252
Joined: Wed Jun 16, 2021 2:08 am
Location: Berlin
Full name: Jost Triller

Re: About Obsidian

Post by j.t. »

mvanthoor wrote: Tue Jan 30, 2024 6:23 pm I know; we're back in the 90's, where only the few people that where 'there' at the right time in the right place (which were tournaments back then, and Discord now) know about anything new. After the information is dispensed, it basically just disappears. That's 'progress' for you.
I know, it's a bit sad that stuff isn't really searchable in discord and alternatives. But for chess programming in particular, where 99.9% of activities are just a hobby, it's not really necessary to have a wiki or forum to list all information. One can just go to discord and talk with people in realtime who know that stuff. It is a much more human way going about a hobby, after all he/she is a social being.
I was a bit suspicious if discord too, but it is just more fun to interact with people this way compared to forums.

Discord shouldn't not be criticized though, it is a company like Google and Microsoft after all, ideally there would be more viable (maybe even open source) alternatives. But for now it's pretty much the best you can get in that regard.
connor_mcmonigle
Posts: 544
Joined: Sun Sep 06, 2020 4:40 am
Full name: Connor McMonigle

Re: About Obsidian

Post by connor_mcmonigle »

mvanthoor wrote: Tue Jan 30, 2024 6:23 pm ...

I know; we're back in the 90's, where only the few people that where 'there' at the right time in the right place (which were tournaments back then, and Discord now) know about anything new. After the information is dispensed, it basically just disappears. That's 'progress' for you.
I agree that it's very unfortunate that Discord isn't indexable. I believe some folks are working on a new, more focused, CPW alternative which documents modern engine development techniques and best practices, but the concern that knowledge will be lost in the long term is definitely valid.

I can't speak for everyone, but at least for myself and many of the other engine developers I've spoken to, a lot of the fun associated with engine development lies in the opportunity to discover some new approach or contribute an improvement to some existing technique/search heuristic, etc. In my experience, seeing others adopting my novel ideas in their engines is the most rewarding part of this hobby. Unfortunately, a prerequisite for making such contributions to the community's collective knowledge is having a reasonably strong engine (i.e, if a novel idea gains Elo in a 2300 Elo engine, that idea is unlikely to generalize to other engines).
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: About Obsidian

Post by mvanthoor »

j.t. wrote: Tue Jan 30, 2024 8:02 pm I know, it's a bit sad that stuff isn't really searchable in discord and alternatives. But for chess programming in particular, where 99.9% of activities are just a hobby, it's not really necessary to have a wiki or forum to list all information. One can just go to discord and talk with people in realtime who know that stuff. It is a much more human way going about a hobby, after all he/she is a social being.
I was a bit suspicious if discord too, but it is just more fun to interact with people this way compared to forums.
To some extent I agree; I'd love to get some quick feedback on small questions without searching for a long time or waiting for people to reply on a forum. However, I can also imagine that Discord-regulars get very tired of answering the same old questions over and over again. It was like that when I was on IRC during my gaming days playing RPG's. Back then I was very well versed in D&D RPG's, and explaining things over and over again to new people became tiring.

A repository of non-volatile knowledge is still useful. Even though my documentation site isn't nearly complete, there are some pages that get lots of hits (SPRT testing, killer moves, and MVV-LVA, for example).

Still, I'm tentatively setting up a Discord account. I'm using a throw-away e-mail address however, so I can nuke everything in case I don't like it.
connor_mcmonigle wrote: Tue Jan 30, 2024 9:13 pm I agree that it's very unfortunate that Discord isn't indexable. I believe some folks are working on a new, more focused, CPW alternative which documents modern engine development techniques and best practices, but the concern that knowledge will be lost in the long term is definitely valid.
That is why I'm making my own, as I don't like to depend on anything long-term. It's the primary reason to write my engine; because I've had a VERY hard time to find some of the finer details of some concepts. Especially magic bitboards: many explanations start out great but then turn into incomprehensible gibberish. (Just as with Texel Tuning.) With both, there was basically ONE remark somewhere that made everything click.

I don't know if my explanations will turn out to be better, but I hope so.
I can't speak for everyone, but at least for myself and many of the other engine developers I've spoken to, a lot of the fun associated with engine development lies in the opportunity to discover some new approach or contribute an improvement to some existing technique/search heuristic, etc.
To some extent, yes. If you / your engine are at the level where you can try those things.
In my experience, seeing others adopting my novel ideas in their engines is the most rewarding part of this hobby. Unfortunately, a prerequisite for making such contributions to the community's collective knowledge is having a reasonably strong engine (i.e, if a novel idea gains Elo in a 2300 Elo engine, that idea is unlikely to generalize to other engines).
Agreed. Personally, I doubt if I'll ever see my engine end up over 3200, for several reasons:
- I dislike using engines over 3200 for analysis, especially if they use NNUE. Not because I 'hate' them or something, but for a roughly 2000 Elo player, they play incomprehensible chess. I can't fathom the ideas behind their moves, so they aren't useful as an analysis tool. (Watch some YouTube/Twitch streamers: even grandmasters often state "Stockfish says this is the best move, but I can't even guess why.")
- At some point I'll probably run out of time and/or testing capability to make smaller and smaller improvements or (in the case of NNUE) bigger data and more complex networks. And as I said that I don't want to depend on anything if I can help it, I'm not sure if I'm ever going to use things such as OpenBench.
- I don't have the motivation to spend lots of time to gain a +10 or +15 Elo improvement and do this over and over.

Shooting for a top 10 spot on the rating lists can be a goal in itself, but it isn't mine. If I hit 3000 on a single thread with HCE, then I'm already happy and basically "finished" and everything else on top of that is optional.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL