- Blind mode tutorial
lichess.org
Donate

Why the restrictions on computer analysis with local computer evaluation on?

Oh boy... I've been avoiding jumping into this one because I'm underqualified to discuss it, but I'll give it a go anyway.

#13 is probably correct, but that isn't the entire story. I think it would be useful to be able to share analyses across all devices, although it's nontrivial:

  • Fishnet is the first candidate which comes to everyone's mind, although that's the Python-based server-side analysis.
  • CLOUD analysis https://lichess.org/blog/WN-gLzAAAKlI89Xn/thousands-of-stockfish-analysers is a lesser-known candidate, although that's primarily (only?) used for opening positions which were deeply analyzed in a browser.
  • Studies are another candidate, although there is no study API and (unlike Fishnet or CLOUD) local engine evaluations do not persist.
  • I collaborated with Ryan Delaney on https://github.com/rpdelaney/python-chess-annotator because it is portable (and/or small enough to be translate-able into other languages) and produces PGN files which can be imported into Lichess or into your database of choice. Its portability allows it to be improved and tested by anyone and is not tightly coupled to the Lichess web server; for example, I've been considering whether the engine's time management function can be used to allocate CPU time during analysis to focus on critical positions (and save CPU time on other positions), although I haven't yet made progress on that.

Yes, I think it would be logical, useful, etc. to have what is being proposed, but it's nontrivial. It's worth noting that although commercial alternatives exist I doubt they are heavily used; but I think on Lichess there would be greater interest in such features because players spend so much time on the Lichess platform.

Oh boy... I've been avoiding jumping into this one because I'm underqualified to discuss it, but I'll give it a go anyway. #13 is probably correct, but that isn't the entire story. I think it would be useful to be able to share analyses across all devices, although it's nontrivial: * Fishnet is the first candidate which comes to everyone's mind, although that's the Python-based server-side analysis. * CLOUD analysis https://lichess.org/blog/WN-gLzAAAKlI89Xn/thousands-of-stockfish-analysers is a lesser-known candidate, although that's primarily (only?) used for opening positions which were deeply analyzed in a browser. * Studies are another candidate, although there is no study API and (unlike Fishnet or CLOUD) local engine evaluations do not persist. * I collaborated with Ryan Delaney on https://github.com/rpdelaney/python-chess-annotator because it is portable (and/or small enough to be translate-able into other languages) and produces PGN files which can be imported into Lichess or into your database of choice. Its portability allows it to be improved and tested by anyone and is not tightly coupled to the Lichess web server; for example, I've been considering whether the engine's time management function can be used to allocate CPU time during analysis to focus on critical positions (and save CPU time on other positions), although I haven't yet made progress on that. Yes, I think it would be logical, useful, etc. to have what is being proposed, but it's nontrivial. It's worth noting that although commercial alternatives exist I doubt they are heavily used; but I think on Lichess there would be greater interest in such features because players spend so much time on the Lichess platform.

I agree that client side full game analysis is a good idea, but not in an unlimited way as OP like to see it.

I agree that client side full game analysis is a good idea, but not in an unlimited way as OP like to see it.

@gbtami why would unlimited client side full game analysis be a problem? I mean if it's our own local smartphones/computers doing the evaluation, how could that put any pressure on Lichess servers?

@gbtami why would unlimited client side full game analysis be a problem? I mean if it's our own local smartphones/computers doing the evaluation, how could that put any pressure on Lichess servers?

@gbtami
why would Lichess need to store all analysis lines?

the final result given to users on the graph is just position+evaluation, why not to store just that?
maybe with info about stockfish version used and depth achieved, but why would we need more?

@gbtami why would Lichess need to store *all* analysis lines? the final result given to users on the graph is just position+evaluation, why not to store just that? maybe with info about stockfish version used and depth achieved, but why would we need more?

@konstantinua00 I'v never said all analysis lines Lichess need to store. But definitely some of them are stored.
Here is an example game with Lichess analysis.

[Event "Rapid Shield Arena"]
[Site "https://lichess.org/eVEJ5RLu"]
[Date "2019.09.05"]
[Round "-"]
[White "VariantsOnly"]
[Black "elos63"]
[Result "0-1"]
[UTCDate "2019.09.05"]
[UTCTime "22:40:42"]
[WhiteElo "2474"]
[BlackElo "2219"]
[WhiteRatingDiff "-16"]
[BlackRatingDiff "+32"]
[Variant "Standard"]
[TimeControl "600+0"]
[ECO "B12"]
[Opening "Caro-Kann Defense: Maróczy Variation"]
[Termination "Normal"]
[Annotator "lichess.org"]

  1. e4 c6 2. d4 d5 3. f3 { B12 Caro-Kann Defense: Maróczy Variation } Nf6 4. Nc3?! { (0.46 → -0.28) Inaccuracy. Best move was e5. } (4. e5 Nfd7 5. f4 c5 6. c3 Nc6 7. Nf3 cxd4 8. cxd4 Nb6) 4... e6 5. Bd3 dxe4 6. fxe4 Qxd4 7. Nf3 Qb6 8. Qe2 Nbd7 9. Bd2?! { (-0.19 → -1.18) Inaccuracy. Best move was e5. } (9. e5 Nd5) 9... e5 10. O-O-O a5? { (-1.14 → 0.00) Mistake. Best move was Qc7. } (10... Qc7 11. h3) 11. Bc4 Be7?! { (-0.13 → 0.46) Inaccuracy. Best move was Bc5. } (11... Bc5 12. Ng5 Rf8 13. Rhf1 Qc7 14. Be3 Bxe3+ 15. Qxe3 h6 16. Nf3 Ng4 17. Qe2 b5 18. Bd3) 12. g4 O-O 13. Rhg1 a4 14. a3 Qc7?! { (0.11 → 1.01) Inaccuracy. Best move was Ne8. } (14... Ne8 15. g5) 15. Nh4?! { (1.01 → 0.39) Inaccuracy. Best move was Ng5. } (15. Ng5 Bc5) 15... b5 16. Ba2?! { (0.29 → -0.37) Inaccuracy. Best move was g5. } (16. g5) 16... b4 17. axb4? { (0.00 → -1.28) Mistake. Best move was g5. } (17. g5 Ne8 18. g6 b3 19. Nf5 bxa2 20. Nxe7+ Kh8 21. Nxa2 fxg6 22. Be3 Nef6 23. Nb4 Bb7) 17... a3 18. g5?! { (-1.21 → -2.01) Inaccuracy. Best move was b3. } (18. b3 g6) 18... axb2+ 19. Kb1 Ne8 20. Nf5? { (-1.90 → -3.40) Mistake. Best move was g6. } (20. g6 Rxa2 21. Nf5 Ra8 22. Nxe7+ Kh8 23. Be3 Ba6 24. Qg4 Nef6 25. Rxd7 Qxd7 26. Qxd7 Nxd7) 20... Bxb4?? { (-3.40 → 2.84) Blunder. Best move was Nb6. } (20... Nb6) 21. g6 hxg6?? { (2.35 → 6.25) Blunder. Best move was Kh8. } (21... Kh8 22. gxf7) 22. Rxg6 Rxa2?? { (4.01 → Mate in 9) Checkmate is now unavoidable. Best move was Ndf6. } (22... Ndf6 23. Nxg7 Nxg7 24. Rdg1 Rd8 25. Rxg7+ Kf8 26. Qf3 Rxa2 27. Nxa2 Ng4 28. R7xg4 Bxd2 29. Rg8+) 23. Nxa2?? { (Mate in 9 → -4.46) Lost forced checkmate sequence. Best move was Rxg7+. } (23. Rxg7+ Nxg7 24. Qg4 Ra1+ 25. Kxb2 Bxc3+ 26. Bxc3 Qb7+ 27. Kxa1 Qa6+ 28. Kb1 Qb6+ 29. Bb2 Qg1) 23... fxg6 24. Bxb4 gxf5 25. Bxf8 Nxf8 26. Nc3?! { (-4.66 → -8.25) Inaccuracy. Best move was exf5. } (26. exf5 Bxf5) 26... f4 27. Qc4+ Be6 28. Qc5 Kf7 29. Nb5 cxb5 { White resigns. } 0-1
@konstantinua00 I'v never said *all* analysis lines Lichess need to store. But definitely *some* of them are stored. Here is an example game with Lichess analysis. [Event "Rapid Shield Arena"] [Site "https://lichess.org/eVEJ5RLu"] [Date "2019.09.05"] [Round "-"] [White "VariantsOnly"] [Black "elos63"] [Result "0-1"] [UTCDate "2019.09.05"] [UTCTime "22:40:42"] [WhiteElo "2474"] [BlackElo "2219"] [WhiteRatingDiff "-16"] [BlackRatingDiff "+32"] [Variant "Standard"] [TimeControl "600+0"] [ECO "B12"] [Opening "Caro-Kann Defense: Maróczy Variation"] [Termination "Normal"] [Annotator "lichess.org"] 1. e4 c6 2. d4 d5 3. f3 { B12 Caro-Kann Defense: Maróczy Variation } Nf6 4. Nc3?! { (0.46 → -0.28) Inaccuracy. Best move was e5. } (4. e5 Nfd7 5. f4 c5 6. c3 Nc6 7. Nf3 cxd4 8. cxd4 Nb6) 4... e6 5. Bd3 dxe4 6. fxe4 Qxd4 7. Nf3 Qb6 8. Qe2 Nbd7 9. Bd2?! { (-0.19 → -1.18) Inaccuracy. Best move was e5. } (9. e5 Nd5) 9... e5 10. O-O-O a5? { (-1.14 → 0.00) Mistake. Best move was Qc7. } (10... Qc7 11. h3) 11. Bc4 Be7?! { (-0.13 → 0.46) Inaccuracy. Best move was Bc5. } (11... Bc5 12. Ng5 Rf8 13. Rhf1 Qc7 14. Be3 Bxe3+ 15. Qxe3 h6 16. Nf3 Ng4 17. Qe2 b5 18. Bd3) 12. g4 O-O 13. Rhg1 a4 14. a3 Qc7?! { (0.11 → 1.01) Inaccuracy. Best move was Ne8. } (14... Ne8 15. g5) 15. Nh4?! { (1.01 → 0.39) Inaccuracy. Best move was Ng5. } (15. Ng5 Bc5) 15... b5 16. Ba2?! { (0.29 → -0.37) Inaccuracy. Best move was g5. } (16. g5) 16... b4 17. axb4? { (0.00 → -1.28) Mistake. Best move was g5. } (17. g5 Ne8 18. g6 b3 19. Nf5 bxa2 20. Nxe7+ Kh8 21. Nxa2 fxg6 22. Be3 Nef6 23. Nb4 Bb7) 17... a3 18. g5?! { (-1.21 → -2.01) Inaccuracy. Best move was b3. } (18. b3 g6) 18... axb2+ 19. Kb1 Ne8 20. Nf5? { (-1.90 → -3.40) Mistake. Best move was g6. } (20. g6 Rxa2 21. Nf5 Ra8 22. Nxe7+ Kh8 23. Be3 Ba6 24. Qg4 Nef6 25. Rxd7 Qxd7 26. Qxd7 Nxd7) 20... Bxb4?? { (-3.40 → 2.84) Blunder. Best move was Nb6. } (20... Nb6) 21. g6 hxg6?? { (2.35 → 6.25) Blunder. Best move was Kh8. } (21... Kh8 22. gxf7) 22. Rxg6 Rxa2?? { (4.01 → Mate in 9) Checkmate is now unavoidable. Best move was Ndf6. } (22... Ndf6 23. Nxg7 Nxg7 24. Rdg1 Rd8 25. Rxg7+ Kf8 26. Qf3 Rxa2 27. Nxa2 Ng4 28. R7xg4 Bxd2 29. Rg8+) 23. Nxa2?? { (Mate in 9 → -4.46) Lost forced checkmate sequence. Best move was Rxg7+. } (23. Rxg7+ Nxg7 24. Qg4 Ra1+ 25. Kxb2 Bxc3+ 26. Bxc3 Qb7+ 27. Kxa1 Qa6+ 28. Kb1 Qb6+ 29. Bb2 Qg1) 23... fxg6 24. Bxb4 gxf5 25. Bxf8 Nxf8 26. Nc3?! { (-4.66 → -8.25) Inaccuracy. Best move was exf5. } (26. exf5 Bxf5) 26... f4 27. Qc4+ Be6 28. Qc5 Kf7 29. Nb5 cxb5 { White resigns. } 0-1

@Toadofsky "Oh boy... I've been avoiding jumping into this one because I'm underqualified to discuss it"
Man, welcome to the internet!

@Toadofsky "Oh boy... I've been avoiding jumping into this one because I'm underqualified to discuss it" Man, welcome to the internet!

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