Hi,
I am so exited to present you my Dead Draw Detector (github.com/miguel-ambrona/D3-Chess)!
After so many forum threads about drawn positions being unfairly classified by lichess, the last one being very recent: lichess.org/forum/lichess-feedback/bug-lichess-does-not-recognize-positions-where-it-is-impossible-to-lose-when-you-time-out
And after so many people arguing that an automated draw detection mechanism could not be implemented, I was challenged to give it a try. I think the results are quit promising!
I have tested the tool on a set of 5 million games from the lichess game database that were won on time by one of the players, finding that exactly 319 of them were unfairly classified. (You can find the list of games here: github.com/miguel-ambrona/D3-Chess/blob/main/examples/unfair.txt.) What is important is that the tool required an average of 1.7ms per position (and never more than 2s, in extremely rare positions), running on my personal laptop. I believe these numbers make it completely feasible for an online chess server to run this test after every game that ends in a timeout.
I was hoping to find some interesting positions in the database, although I was a bit disappointed.
These are my favorite two:
* PIL4PUtT#87: Here any underpromotion was better than queening (which leads to an automatic draw) although lichess gave the victory to Black.
* cZ8QxYP8: This game is just so crazy, with a surprising ending! (Again, unfair for one of the players.)
I would like to know your opinion on this and whether lichess would be interested in implementing this method. (Possibly after being revisited and polished.)
Also, I am new in C++, so if you are an expert and can give me some feedback on the way I implemented the tool, I would really appreciate it.
Finally, to get more people exited into this, I developed a very simple webpage where you can test the tool right away on any position of your choice: 103.125.219.211/d3-chess/
You may need to enable websockets in your browser (stackoverflow.com/questions/11768221/firefox-websocket-security-issue). If it is still not working, try to connect through http instead of https.
Cheers!
I am so exited to present you my Dead Draw Detector (github.com/miguel-ambrona/D3-Chess)!
After so many forum threads about drawn positions being unfairly classified by lichess, the last one being very recent: lichess.org/forum/lichess-feedback/bug-lichess-does-not-recognize-positions-where-it-is-impossible-to-lose-when-you-time-out
And after so many people arguing that an automated draw detection mechanism could not be implemented, I was challenged to give it a try. I think the results are quit promising!
I have tested the tool on a set of 5 million games from the lichess game database that were won on time by one of the players, finding that exactly 319 of them were unfairly classified. (You can find the list of games here: github.com/miguel-ambrona/D3-Chess/blob/main/examples/unfair.txt.) What is important is that the tool required an average of 1.7ms per position (and never more than 2s, in extremely rare positions), running on my personal laptop. I believe these numbers make it completely feasible for an online chess server to run this test after every game that ends in a timeout.
I was hoping to find some interesting positions in the database, although I was a bit disappointed.
These are my favorite two:
* PIL4PUtT#87: Here any underpromotion was better than queening (which leads to an automatic draw) although lichess gave the victory to Black.
* cZ8QxYP8: This game is just so crazy, with a surprising ending! (Again, unfair for one of the players.)
I would like to know your opinion on this and whether lichess would be interested in implementing this method. (Possibly after being revisited and polished.)
Also, I am new in C++, so if you are an expert and can give me some feedback on the way I implemented the tool, I would really appreciate it.
Finally, to get more people exited into this, I developed a very simple webpage where you can test the tool right away on any position of your choice: 103.125.219.211/d3-chess/
You may need to enable websockets in your browser (stackoverflow.com/questions/11768221/firefox-websocket-security-issue). If it is still not working, try to connect through http instead of https.
Cheers!