- Blind mode tutorial
lichess.org
Donate

Feature Request: Play Against Opening Explorer

It would be really cool if there was a feature like this. You specify a rating range, time control, and date range (just like in the opening explorer). You can toggle playing as White or Black. You play moves for your side and the server chooses moves randomly to play against you. However, the moves are not totally random, but rather weighted based on the stats from Lichess games with the specified qualities.

Let's say you choose to play White. You play 1.e4. You have specified that the server should use 2200-level blitz games from the last 3 years. As a result, the server will choose 1...c5 with 35% likelihood, 1...e5 with 19% likelihood etc. (because these are the stats for 2200 blitz players on Lichess over the last 3 years). Let's say the server plays 1...c5. Now you respond 2.c3 and the server keeps playing: 29% chance of 2...d5, 28% chance of 2...Nf6 etc.

This would allow you to practice your openings without having to commit to playing entire games. The server would be playing instantly so you would only use time on your own moves. You could also stop at a certain point and analyze, look at model games etc.

It would be really cool if there was a feature like this. You specify a rating range, time control, and date range (just like in the opening explorer). You can toggle playing as White or Black. You play moves for your side and the server chooses moves randomly to play against you. However, the moves are not totally random, but rather weighted based on the stats from Lichess games with the specified qualities. Let's say you choose to play White. You play 1.e4. You have specified that the server should use 2200-level blitz games from the last 3 years. As a result, the server will choose 1...c5 with 35% likelihood, 1...e5 with 19% likelihood etc. (because these are the stats for 2200 blitz players on Lichess over the last 3 years). Let's say the server plays 1...c5. Now you respond 2.c3 and the server keeps playing: 29% chance of 2...d5, 28% chance of 2...Nf6 etc. This would allow you to practice your openings without having to commit to playing entire games. The server would be playing instantly so you would only use time on your own moves. You could also stop at a certain point and analyze, look at model games etc.

Great idea! However, not sure if it is easy to implement.

Great idea! However, not sure if it is easy to implement.

@Toadofsky
Cool. Based on a quick glance it seems like other people are talking about a more complicated system than what I am proposing. They want Lichess to track their repertoires, test them on those repertoires, and maybe have spaced repetition involved. I only hope that if that system is implemented, that there is some way to be tested on moves in proportion to how often they are actually being played. One problem with Chessable is that you get tested a lot on obscure parts of your repertoire. I would rather be tested on the most common moves most often. Anyway, thanks for pointing that out.

@Toadofsky Cool. Based on a quick glance it seems like other people are talking about a more complicated system than what I am proposing. They want Lichess to track their repertoires, test them on those repertoires, and maybe have spaced repetition involved. I only hope that if that system is implemented, that there is some way to be tested on moves in proportion to how often they are actually being played. One problem with Chessable is that you get tested a lot on obscure parts of your repertoire. I would rather be tested on the most common moves most often. Anyway, thanks for pointing that out.

Normally I'd suggest, "Write something on the issue tracker if you want the team to remember it" but it seems the issue tracker itself is getting overwhelmed. I'll do my best to try to remember everything.

Normally I'd suggest, "Write something on the issue tracker if you want the team to remember it" but it seems the issue tracker itself is getting overwhelmed. I'll do my best to try to remember everything.

You can solve this yourself by putting the most common lines that appear in lichess games in your opening study then loading your opening file to listudy

You can solve this yourself by putting the most common lines that appear in lichess games in your opening study then loading your opening file to listudy

@zweb
Thanks for the suggestion. However, there are two downsides to that. First, it requires me to put together my repertoire before I can start studying. That's a lot of work up front. Second, and more importantly, it requires me to either include a variation or to exclude it. With the feature I am requesting, one move might be played against you ten times as often as another, but both will be played sometime. I could obviously focus on more common moves in putting material together for Listudy, but any move either gets included or gets excluded. There is no way (I would guess) to say "test me on 1.e4 c5 20 times as often as on 1.e4 d5."

@zweb Thanks for the suggestion. However, there are two downsides to that. First, it requires me to put together my repertoire before I can start studying. That's a lot of work up front. Second, and more importantly, it requires me to either include a variation or to exclude it. With the feature I am requesting, one move might be played against you ten times as often as another, but both will be played sometime. I could obviously focus on more common moves in putting material together for Listudy, but any move either gets included or gets excluded. There is no way (I would guess) to say "test me on 1.e4 c5 20 times as often as on 1.e4 d5."

Yeah it would be nice. I think this frequency thing you want is a feature on chesstempo

Yeah it would be nice. I think this frequency thing you want is a feature on chesstempo

@Jisu101 said in #2:

Great idea! However, not sure if it is easy to implement.

With the correct code, the idea is simple though. The basic logic would be that it would loop through all the move possibilities and play the one that was played the most in actual games.

Let's say we have an array of elements and we have to find the element with the maximum value. A simple paradigm would be to take the first element as the maximum value. If the next element has a greater value than the previous element, the value of the next element would replace the value of the previous element as the maximum value. If the next element has a lesser value than the previous element, we would leave the maximum value as it is and move on to the next element, and so on.

Now assume that each possible move is an object with a function that returns its played probability. With the above logic, the server would find the move which was most played. If by any rare chance two moves had the exact same probability (and the maximum probability) of being played, then the server could use a Math.random() function (in Java) to determine the next move.

@Jisu101 said in #2: > Great idea! However, not sure if it is easy to implement. With the correct code, the idea is simple though. The basic logic would be that it would loop through all the move possibilities and play the one that was played the most in actual games. Let's say we have an array of elements and we have to find the element with the maximum value. A simple paradigm would be to take the first element as the maximum value. If the next element has a greater value than the previous element, the value of the next element would replace the value of the previous element as the maximum value. If the next element has a lesser value than the previous element, we would leave the maximum value as it is and move on to the next element, and so on. Now assume that each possible move is an object with a function that returns its played probability. With the above logic, the server would find the move which was most played. If by any rare chance two moves had the exact same probability (and the maximum probability) of being played, then the server could use a Math.random() function (in Java) to determine the next move.

This topic has been archived and can no longer be replied to.