ArcticXWolf / AXWChessbot

A simple chess engine written in Golang.
https://lichess.org/@/AXWChessBot
5 stars 0 forks source link

Memory leak? #2

Closed rwbc closed 3 years ago

rwbc commented 3 years ago

Hi Jan,

I was curious about your chess engine and gave it a try inside the CuteChessGUI and noticed several things.

The main problem seems to be a serious memory leak (at least in WIN), because after around two minutes of thinking (totally) it already used more than 2.5 GB of my ram!

Other bugs were a mate in one (probably the issue is already solved) and an illegal move.

Edit: I see now that issue with missing mate in one was vs. an opponent, but here it missed a mate in one against itself :)

I know that uci support is just in early stage, but it would be nice if it would show thinking in GUIs. Also I guess time management doesn't really support mps time controls currently, as it played too slow for a long time? (mps tc is usually not available on servers, but it's still used by testers and one of the main used tcs besides fischer tc)

Guenther (RWBC)

[Event "My Tournament"]
[Site "RWBC-CAPPUCCINO Win7U64 Q8200 2.33Ghz + Nvidia GT 710"]
[Date "2021.04.19"]
[Round "1"]
[White "AXWChess_005-64"]
[Black "Bit-Genie_100-64"]
[Result "0-1"]
[ECO "A01"]
[GameDuration "00:03:54"]
[GameEndTime "2021-04-19T18:00:25.467 Mitteleuropäische Sommerzeit"]
[GameStartTime "2021-04-19T17:56:31.401 Mitteleuropäische Sommerzeit"]
[Opening "Nimzovich-Larsen attack"]
[PlyCount "78"]
[Termination "illegal move"]
[TimeControl "40/120"]
[Variation "Modern Variation"]

1. b3 {book} e5 {book} 2. Bb2 {book} d6 {book} 3. e3 {book} Nf6 {book}
4. d4 {3.33s} e4 {+0.22/7 3.19s} 5. Nc3 {3.32s} d5 {+0.74/7 3.19s}
6. Be2 {3.33s} Nc6 {+0.82/7 3.19s} 7. Nh3 {3.32s} Bd6 {+0.96/7 3.20s}
8. Nb5 {3.32s} Bxh3 {+1.07/7 3.20s} 9. Nxd6+ {3.33s} Qxd6 {+0.54/8 3.20s}
10. gxh3 {3.33s} O-O {+0.64/7 3.20s} 11. O-O {3.32s} Nd7 {+0.63/7 3.20s}
12. f4 {3.32s} f5 {+0.50/7 3.21s} 13. Rf2 {3.32s} Rf6 {+0.73/7 3.21s}
14. Rg2 {3.33s} Rg6 {+0.55/7 3.21s} 15. Qd2 {3.32s} Rxg2+ {+0.50/7 3.21s}
16. Kxg2 {3.33s} a6 {+0.25/7 3.21s} 17. Rg1 {3.32s} b5 {+0.24/7 3.21s}
18. Bh5 {3.33s} Rb8 {+0.45/7 3.22s} 19. Qf2 {3.33s} Qh6 {+0.84/7 3.22s}
20. Bd1 {3.32s} Nd8 {+0.84/7 3.22s} 21. Be2 {3.33s} Rb6 {+0.74/7 3.22s}
22. h4 {3.33s} Qf6 {+0.40/7 3.23s} 23. a3 {3.33s} Rc6 {+0.63/7 3.23s}
24. c3 {3.33s} Nb7 {+0.67/7 3.23s} 25. h3 {3.37s} Na5 {+0.89/7 3.24s}
26. Bd1 {3.36s} Nf8 {+0.84/7 3.24s} 27. a4 {3.40s} bxa4 {+1.48/8 3.24s}
28. bxa4 {3.51s} Nc4 {+1.41/8 3.25s} 29. Ba1 {3.83s} Ng6 {+2.05/8 3.25s}
30. h5 {3.26s} Nh4+ {+1.78/8 3.26s} 31. Kg3 {3.55s} Rb6 {+2.09/8 3.26s}
32. Be2 {3.22s} Nd2 {+2.36/7 3.27s} 33. a5 {3.31s} Rb8 {+2.33/8 3.27s}
34. Rd1 {3.20s} Nhf3 {+2.76/7 3.28s} 35. Kg2 {3.28s} Qc6 {+2.60/7 3.29s}
36. Qg3 {3.18s} Qa4 {+2.93/7 3.30s} 37. h6 {3.17s} g6 {+3.07/8 3.31s}
38. Rc1 {3.17s} Qa2 {+4.26/7 3.33s} 39. Bxa6
Nb3+ {+7.13/8 3.35s, White makes an illegal move: 0000} 0-1
[Event "My Tournament"]
[Site "RWBC-CAPPUCCINO Win7U64 Q8200 2.33Ghz + Nvidia GT 710"]
[Date "2021.04.19"]
[Round "1"]
[White "Bit-Genie_100-64"]
[Black "AXWChess_005-64"]
[Result "1-0"]
[ECO "A01"]
[GameDuration "00:02:08"]
[GameEndTime "2021-04-19T18:02:36.470 Mitteleuropäische Sommerzeit"]
[GameStartTime "2021-04-19T18:00:28.216 Mitteleuropäische Sommerzeit"]
[Opening "Nimzovich-Larsen attack"]
[PlyCount "45"]
[TimeControl "40/120"]
[Variation "Modern Variation"]

1. b3 {book} e5 {book} 2. Bb2 {book} d6 {book} 3. e3 {book} Nf6 {book}
4. Qf3 {+0.06/7 3.19s} Nc6 {3.32s} 5. Bb5 {-0.13/7 3.19s} Bd7 {3.32s}
6. Ne2 {-0.09/7 3.19s} Be7 {3.32s} 7. Nbc3 {+0.32/7 3.20s} a6 {3.35s}
8. Bc4 {+0.16/7 3.20s} b5 {3.45s} 9. Bd5 {+0.95/7 3.20s} Nxd5 {3.33s}
10. Nxd5 {+0.79/7 3.20s} O-O {3.46s} 11. O-O {+0.77/7 3.20s} Bg5 {3.33s}
12. Bc3 {+0.63/7 3.20s} f5 {3.35s} 13. a4 {+0.30/7 3.21s} e4 {3.31s}
14. Qg3 {+0.88/7 3.21s} bxa4 {3.31s} 15. bxa4 {+0.53/7 3.21s} Rc8 {3.31s}
16. h4 {+1.00/7 3.21s} Bh6 {3.32s} 17. Rfb1 {+0.70/7 3.21s} Be6 {3.31s}
18. Nef4 {+1.01/7 3.22s} Bd7 {3.38s} 19. Rb7 {+1.19/7 3.22s} Ne5 {3.35s}
20. Rab1 {+0.75/7 3.22s} Bxa4 {3.33s} 21. Ne6 {+2.51/7 3.22s} f4 {3.42s}
22. exf4 {+4.86/7 3.23s} Bxf4 {3.30s} 23. Qxg7# {+M1/7 3.23s, White mates} 1-0
ArcticXWolf commented 3 years ago

Hey, thanks for the input and that you tried my engine 🙂

The memory problem occured to me too yesterday, but I havent had the time to track it down yet. But I dont think it is a problem of the windows version only, as it occured to me on my linux docker container too. But this should be a good exercise for me in debugging memory leaks, this is my first project in Golang. ^^

Concerning the other bugs I will add them to my test suite and fix them soon.

Again thanks for raising this issue 🙂

PS: Out of curiosity: Does your chess tool output the logging of my engine? I am interested in the performance measurements that it logs, so we can see how it performs on other machines.

ArcticXWolf commented 3 years ago

BTW @rwbc do you know of any official specification on the UCI protocol and which features are actually used? The most complete info I have found so far was this one here: http://wbec-ridderkerk.nl/html/UCIProtocol.html And I guess features like copyprotection and such are not used anymore or are they?

EDIT: Nevermind, I just found the download of the Specification on the ShredderChess page and it is identical to the link above. So I guess that info is everything I need.

rwbc commented 3 years ago

Note that the uci specs were updated in 2006! (the ridderkerk ones you mentioned are the first version from 2004)

You can get the link to the updated version from my computerchess links https://rwbc-chess.de/links.htm

I put them in a google sheet also already a while ago https://docs.google.com/document/d/1x2leEcvJZHWe61DeZuPqzIygk191O6b6m7RgvElf0N4

ArcticXWolf commented 3 years ago

Hey,

I took a look into the memory usage and found out that I made a mistake while calculating the hash table size. The default was meant to be 256mb, but my calculations allocated more than 2gb 😆 I uploaded a new version (v0.0.7) containing a fix.

Concerning the illegal move (a null move) I havent been able to reproduce it yet, but I will add this position to my test suite and monitor it (same with the mate in 1).

I still have a few questions concerning the UCI-Protocol (and your suggested features):

  1. How do I indicate thinking to the GUI? Or is this tied to the ponder functionality? Or did you mean something else entirely?
  2. How does the GUI indicate that it wants to use mps timecontrol? My guess is that the go command does not include any winc and binc fields, but wtime, btime and movestogo fields? If so, are the wtime and btime fields the time left for this session? And what happens with the time left when we hit 0 movestogo? Does the player get the remaining time added as bonus to the next session?
  3. What did you mean with playing to slow on mps tc? Did it flag?

Sorry for all those questions, I am quite new to UCI and the mps tc.

ArcticXWolf commented 3 years ago

Just for me to keep track of everything:

rwbc commented 3 years ago

Hi again,

You can split up the issues if you want. The memory problem seems gone with 0.07 as described by you.

There are other issues reagrding uci

  1. options should be written as option name... otherwise GUIs cannot read/show them see below

    2021/04/21 10:26:13 AXWChessBot Version 0.0.7 BuildDate 2021-04-20T17:54:22Z GitCommitHash 01c148ecaa5a819d3a64bf6d5692bd45a7c0f4f4
    uci
    id name AXWChessBot 0.0.7
    id author Jan Niklas Richter
    option Hash type spin default 256 min 1 max 2048
    option Move Overhead type spin default 200 min 1 max 1000
    option Max Time type spin default 30 min 2 max 300
    uciok
  2. for showing thinking (has nothing to do with ponder) usually uci programs (and xboard too) output thinking while calculating. In uci this is done with info lines (depth-score-nodes-time at least). I noticed that AXW outputs one info line finally per move BUT after the sent bestmove, which is probably the reason it is not recorded into the game file by the GUI.

example from Stockfish 11 (not all fields are mandatory ofc, like tbhits, nps, multipv etc...)

ucinewgame
isready
readyok
position startpos moves g1f3 d7d5 d2d3 g8f6 g2g3 c8g4
go wtime 120000 btime 120000 movestogo 37
info depth 1 seldepth 1 multipv 1 score cp 64 nodes 35 nps 17500 tbhits 0 time 2 pv f3e5
info depth 2 seldepth 2 multipv 1 score cp 92 nodes 100 nps 50000 tbhits 0 time 2 pv c2c3 g4f3
info depth 3 seldepth 3 multipv 1 score cp 92 nodes 176 nps 58666 tbhits 0 time 3 pv c2c3 g4f3 e2f3
info depth 4 seldepth 4 multipv 1 score cp 137 nodes 263 nps 65750 tbhits 0 time 4 pv f3e5 c7c6
info depth 5 seldepth 5 multipv 1 score cp 196 nodes 379 nps 94750 tbhits 0 time 4 pv f3e5 c7c6
info depth 6 seldepth 6 multipv 1 score cp 23 nodes 2392 nps 299000 tbhits 0 time 8 pv f3e5 g4f5 b1d2 b8d7 e5d7 d8d7
info depth 7 seldepth 8 multipv 1 score cp 50 nodes 3320 nps 332000 tbhits 0 time 10 pv f3e5 g4f5 d1d2 b8d7 d2f4
info depth 8 seldepth 12 multipv 1 score cp 46 nodes 7714 nps 482125 tbhits 0 time 16 pv f3e5 g4f5 b1d2 b8d7 d2f3 e7e6 c2c3
info depth 9 seldepth 11 multipv 1 score cp 45 nodes 12170 nps 507083 tbhits 0 time 24 pv f3e5 g4f5 c1f4 b8d7 b1d2 e7e6 e5d7 d8d7 f4e5

AXW 0.07

position startpos
2021/04/21 11:09:51 Position: [startpos]
go wtime 120000 btime 120000 movestogo 37
bestmove e2e4
info depth 5 score cp 11 nodes 213705 nps 64877 time 3294
2021/04/21 11:10:12 Move: e2e4, Info: info depth 5 score cp 11 nodes 213705 nps 64877 time 3294
2021/04/21 11:10:12 TranspositionTable: 19955 / 2684354

(see games - only the time is in the pgn)

[Event "My Tournament"]
[Site "RWBC-CAPPUCCINO Win7U64 Q8200 2.33Ghz + Nvidia GT 710"]
[Date "2021.04.20"]
[Round "1"]
[White "Goyaz_0007"]
[Black "AXWChess_007-64"]
[Result "0-1"]
[ECO "E60"]
[GameDuration "00:07:27"]
[GameEndTime "2021-04-20T20:57:26.206 Mitteleuropõische Sommerzeit"]
[GameStartTime "2021-04-20T20:49:58.428 Mitteleuropõische Sommerzeit"]
[Opening "King's Indian"]
[PlyCount "146"]
[TimeControl "40/120"]
[Variation "3.g3"]

1. d4 {book} Nf6 {book}
2. c4 {book} g6 {book}
3. g3 {book} Bg7 {book}
4. Nc3 {+0.06/8 7.89} d6 {3.33}
5. e4 {+0.08/8 9.45} O-O {3.32}
6. Nf3 {+0.23/7 2.87} e6 {3.32}
7. e5 {+0.27/7 2.33} dxe5 {3.33}
8. dxe5 {-0.03/8 4.62} Qxd1+ {3.33}
9. Nxd1 {-0.69/9 8.37} Ng4 {3.33}
10. Bf4 {-0.14/8 5.91} Nc6 {3.33}
11. Nc3 {-0.95/8 4.79} Ngxe5 {3.33}
12. Nxe5 {-0.99/8 6.70} Bxe5 {3.33}
13. Bxe5 {-0.79/8 1.38} Nxe5 {3.33}
14. O-O-O {-0.86/8 4.55} Bd7 {3.32}
15. Bg2 {-0.74/7 1.37} Bc6 {3.32}
16. Bxc6 {-0.97/8 1.83} bxc6 {3.33}
17. c5 {-1.06/8 5.25} Rad8 {3.32}
18. Ne4 {-0.97/7 0.90} f5 {3.33}
19. Ng5 {-1.80/7 0.85} Nd3+ {3.33}
20. Kc2 {-2.07/8 1.74} Nxc5 {3.33}
21. b4 {-1.76/7 0.88} Na6 {3.32}
22. Nxe6 {-0.93/7 1.43} Nxb4+ {3.32}
23. Kb3 {-1.84/9 1.97} Rxd1 {3.32}
24. Rxd1 {-1.64/9 1.30} Rb8 {3.32}
25. Rd7 {-1.64/7 5.43} Nd5+ {3.33}
26. Kc2 {-2.17/6 1.16} Rb7 {3.32}
27. a3 {-2.02/6 1.58} a6 {3.33}
28. Nd4 {-1.60/6 1.04} Nf6 {3.33}
29. Rd8+ {-0.93/7 1.19} Kg7 {3.32}
30. Nxc6 {-1.26/6 0.94} Rb6 {3.33}
31. Ne5 {-0.99/7 2.23} c5 {3.33}
32. Rc8 {-0.01/7 5.86} Rb5 {3.33}
33. Ra8 {-0.43/6 1.77} Rb6 {3.33}
34. Rc8 {0.00/7 3.51} Rb5 {3.33}
35. Ra8 {0.00/6 0.46} Ra5 {3.33}
36. Nc4 {0.00/6 0.54} Rb5 {3.33}
37. Ra7+ {+0.03/6 0.69} Kh6 {3.33}
38. Rxa6 {+0.08/6 0.72} Ne4 {3.33}
**39. f3 {+0.90/6 0.60} Nf2
40. Nd6 {+0.82/6 0.71} Rb8**
41. Nxf5+ {+1.41/9 53.03} Kh5 {3.15}
42. Nd6 {+1.48/9 61.26} Rf8 {3.15}
43. f4 {+1.48/7 6.82} Rf6 {3.15}
44. Kb3 {+1.05/4 0.043} Ne4 {3.15}
45. Nxe4 {+0.54/4 0.045} Rxa6 {3.15}
46. Nxc5 {+0.18/4 0.018} Rb6+ {3.15}
47. Kc3 {+0.33/5 0.031} Kg4 {3.15}
48. a4 {+0.26/5 0.050} Kh3 {3.15}
49. a5 {-0.59/4 0.024} Rb5 {3.15}
50. Nb3 {-0.62/4 0.027} Kxh2 {3.15}
51. g4 {-0.62/4 0.017} Kg3 {3.15}
52. a6 {-1.60/4 0.026} Rb6 {3.15}
53. Nc5 {-1.67/4 0.036} Rc6 {3.15}
54. Kd4 {-1.82/4 0.031} Kxf4 {3.15}
55. Nd3+ {-1.85/4 0.021} Kg5 {3.15}
56. a7 {-2.82/4 0.018} Ra6 {3.15}
57. Ne5 {-3.08/5 0.034} Rxa7 {3.15}
58. Kd5 {-3.24/5 0.040} Kf4 {3.16}
59. Nc6 {-3.45/4 0.015} Ra2 {3.16}
60. Ne5 {-4.01/4 0.014} Ra5+ {3.15}
61. Kc4 {-6.38/4 0.011} Rxe5 {3.16}
62. Kd4 {-7.51/4 0.066} g5 {3.15}
63. Kc4 {-7.67/6 0.028} Kxg4 {3.15}
64. Kd3 {-7.67/5 0.010} h5 {3.16}
65. Kd4 {-7.74/4 0.008} h4 {3.16}
66. Kxe5 {-10.07/6 0.029} h3 {3.15}
67. Ke4 {-10.07/5 0.009} h2 {3.16}
68. Ke3 {-10.30/6 0.023} h1=Q {3.15}
69. Kd4 {-10.30/4 0.008} Kf5 {3.16}
70. Kc5 {-10.37/4 0.010} g4 {3.16}
71. Kc4 {-10.44/4 0.011} g3 {3.16}
72. Kd4 {-18.00/4 0.009} Qc1 {3.16}
73. Kd5 {-18.00/4 0.008} g2 {3.16}
{White resigns}
0-1

[Event "My Tournament"]
[Site "RWBC-CAPPUCCINO Win7U64 Q8200 2.33Ghz + Nvidia GT 710"]
[Date "2021.04.20"]
[Round "1"]
[White "AXWChess_007-64"]
[Black "Goyaz_0007"]
[Result "1-0"]
[ECO "E60"]
[GameDuration "00:03:39"]
[GameEndTime "2021-04-20T21:01:07.368 Mitteleuropõische Sommerzeit"]
[GameStartTime "2021-04-20T20:57:27.379 Mitteleuropõische Sommerzeit"]
[Opening "King's Indian"]
[PlyCount "73"]
[TimeControl "40/120"]
[Variation "3.g3"]

1. d4 {book} Nf6 {book}
2. c4 {book} g6 {book}
3. g3 {book} Bg7 {book}
4. Nc3 {3.34} d5 {-0.05/9 14.55}
5. cxd5 {3.32} Nxd5 {-0.09/9 7.78}
6. e4 {3.33} Nxc3 {-0.18/8 1.90}
7. bxc3 {3.33} Nc6 {-0.06/7 1.39}
8. Bd3 {3.33} Bg4 {-0.04/7 4.78}
9. Qxg4 {3.33} Bxd4 {-2.38/6 1.16}
10. cxd4 {3.33} Qxd4 {-2.35/6 1.55}
11. Rb1 {3.32} Qxd3 {-2.09/6 7.56}
12. Rxb7 {3.33} f5 {-1.98/6 4.14}
13. Qe2 {3.33} Qxe2+ {-0.93/6 1.23}
14. Nxe2 {3.32} O-O-O {-1.71/10 3.58}
15. Rb3 {3.32} fxe4 {-1.59/9 1.58}
16. Re3 {3.32} Nb4 {-1.08/9 31.00}
17. Rxe4 {3.32} Nc2+ {-1.79/8 1.33}
18. Kf1 {3.33} Rd1+ {-1.28/9 0.53}
19. Kg2 {3.33} Ne1+ {-1.42/10 1.73}
20. Kh3 {3.33} Nd3 {-1.18/9 0.48}
21. Rxd1 {3.33} Nxf2+ {-1.42/10 1.67}
22. Kg2 {3.33} Nxe4 {-1.35/9 5.13}
23. Be3 {3.32} Kb7 {-1.35/7 12.22}
24. Rb1+ {3.33} Ka8 {-1.86/6 0.57}
25. Kf3 {3.33} Nd6 {-1.18/4 0.055}
26. Kf4 {3.32} Rf8+ {-1.03/4 0.037}
27. Ke5 {3.33} Rf5+ {-0.96/4 0.075}
28. Ke6 {3.33} Rh5 {+0.97/3 0.035}
29. h4 {3.32} Rf5 {-1.47/4 0.15}
30. Bf4 {3.33} Rc5 {-1.88/4 0.12}
31. Kxe7 {3.33} Rc2 {-1.96/4 0.050}
32. Nd4 {3.33} Rxa2 {-1.84/4 0.028}
33. Bxd6 {3.33} cxd6 {-1.81/5 0.040}
34. Nc6 {3.33} Re2+ {-5.96/4 0.036}
35. Kd7 {3.34} Re8 {-M4/4 0.046}
36. Kxe8 {3.33} h5 {-M2/5 0.020}
37. Rb8# {3.34}
{White mates}
1-0
  1. for being slow mentioned by me and using mps tc you can see that AXW uses always 3.32-3.33 seconds per move, but as the game starts after 6 plies from the given start position mith movestogo 37 (40-3moves) it would fail because 37*3.33 > allowed time, thus it seems to panic and makes moves 39-40 in zero time!

And yes your assumption is right for mps tc there is wtime/btime and movestogo sent! I wanna just mention that most testers nowadays use start positions/books for testing as I did above with the 6 plies start pgn, so the first session starts with TC/movestogo-X (here 37). After the first session is over the engine gets the time added for the next session and repeating.

BTW the opponent Goyaz (xboard) probably has bug, respectively does not count the external moves which would explain the high time usage for moves 41-43. In xboard the movestogo parameter does not exist and they need own logic to substrct the given moves. I selected it because I wasn't sure about current strength of AXW. 1700 (CCRL scale) was too strong for it and Goyaz is around 1400+ and seems too weak.

  1. For the illegal move bestmove 0000 it is possible AXW simply had no time in move 40 and no bestmove yet?

The widely known CCRL rating list (blitz) for computer chess engines here: http://ccrl.chessdom.com/ccrl/404/rating_list_all.html

ArcticXWolf commented 3 years ago

Okay, I've added issues #3 #4 and #5 to track the individual things. Expect a new release today with everything fixed. I close this one here, as the memory problem is fixed.

Thanks again for giving such detailed feedback :)

If you include the engine in any tournament/have any comparisions against other engines, I would love to hear about the results :)

ArcticXWolf commented 3 years ago

The new version v0.0.8 is released, it should fix all those problems for now :)

rwbc commented 3 years ago

Wow, this seems too quick to be true :)

I will check the new release in the evening/night. If all goes well I will add AXWChess to the XB/UCI chronology today!

BTW should I name it AXWChess or AXWChessBot? The 'Bot' part seems a bit generic as it is mainly used for Lichess engines recognition? I guess you are from Germany (did some googling and all Jan-Niklas Richter were from Germany)?

Of course I will provide some results either mine or others after your program is 'established'.

Guenther

ArcticXWolf commented 3 years ago

I think AXWChessBot is the right name. I would call my Chess-GUI AXWChess, if I ever get around to start that project :)

Yeah, I'm from Germany! However my name is without hyphen, just Jan Niklas 😉

rwbc commented 3 years ago

Every technical issue is fixed and AXWChessBot was added to the XB/UCI chronology recently :) https://rwbc-chess.de/

The mate in 1 problem still can appear though and I open a new issue.

Here is its first win from a new test vs. Eden 0.013

[Event "My Tournament"]
[Site "RWBC-CAPPUCCINO Win7U64 Q8200 2.33Ghz + Nvidia GT 710"]
[Date "2021.04.22"]
[Round "2"]
[White "Eden_0013JA"]
[Black "AXWChess_008-64"]
[Result "0-1"]
[ECO "A09"]
[GameDuration "00:22:33"]
[GameEndTime "2021-04-22T09:17:47.426 Mitteleuropõische Sommerzeit"]
[GameStartTime "2021-04-22T08:55:13.462 Mitteleuropõische Sommerzeit"]
[Opening "Reti"]
[PlyCount "388"]
[TimeControl "40/120"]
[Variation "Advance Variation"]

1. Nf3 {book} d5 {book} 2. c4 {book} d4 {book} 3. a3 {book} a5 {book}
4. d3 {+0.11/5 2.73s} e6 {-0.14/4 3.15s} 5. e3 {+0.20/5 2.82s}
Nc6 {-0.25/4 3.16s} 6. Be2 {+0.91/5 2.76s} dxe3 {-0.29/3 3.15s}
7. Bxe3 {+1.19/5 2.78s} Qf6 {-0.39/3 3.15s} 8. Nc3 {+1.26/5 2.86s}
Bd7 {-0.55/3 3.15s} 9. Bg5 {+1.32/5 2.88s} Qf5 {-0.61/3 3.15s}
10. Qb3 {+1.17/4 2.81s} b6 {-0.66/3 3.15s} 11. Nb5 {+1.16/4 2.83s}
Rc8 {-0.62/3 3.15s} 12. O-O {+1.06/4 2.85s} Bc5 {-0.49/3 3.14s}
13. Qc3 {+1.12/4 2.93s} e5 {-0.45/3 3.16s} 14. Qd2 {+1.07/4 2.86s}
Kf8 {-0.29/3 3.15s} 15. Ra2 {+0.97/4 2.89s} Nf6 {-0.05/3 3.15s}
16. Nh4 {+0.90/4 2.89s} Qe6 {+0.03/3 3.15s} 17. Kh1 {+0.50/4 2.92s}
h6 {+0.23/3 3.15s} 18. Be3 {+0.60/5 3.02s} Kg8 {+0.23/3 3.15s}
19. Bxc5 {+1.26/5 2.95s} bxc5 {+0.21/3 3.15s} 20. Nc3 {+1.23/5 2.98s}
Nd4 {+0.53/4 3.15s} 21. a4 {+1.23/5 3.00s} g5 {+0.55/3 3.15s}
22. Nf3 {+1.40/5 3.02s} Nxe2 {+0.37/3 3.15s} 23. Qxe2 {+1.97/5 3.04s}
Re8 {+0.26/3 3.15s} 24. Re1 {+2.12/5 3.04s} Qg4 {-0.55/3 3.15s}
25. Nxe5 {+1.69/5 3.07s} Qxe2 {-0.70/3 3.15s} 26. Rxe2 {+1.65/6 3.12s}
Bf5 {-0.65/4 3.15s} 27. Kg1 {+1.66/5 3.13s} Kg7 {-0.72/4 3.15s}
28. Kf1 {+1.66/5 3.25s} Rxe5 {-0.42/4 3.15s} 29. Rxe5 {+2.27/6 3.29s}
Bxd3+ {-0.27/4 3.15s} 30. Ke1 {+2.27/6 3.22s} Bxc4 {-0.49/4 3.16s}
31. Ra3 {+2.36/5 3.24s} Nd7 {-0.43/4 3.15s} 32. Re7 {+2.35/5 3.28s}
Rd8 {-0.43/4 3.16s} 33. Re4 {+2.35/5 3.45s} Be6 {-0.21/4 3.15s}
34. g3 {+2.34/5 3.49s} Nf6 {-0.15/4 3.15s} 35. Re5 {+2.35/5 3.39s}
Nd7 {-0.19/4 3.15s} 36. Re3 {+2.34/5 3.48s} Nf6 {-0.17/4 3.15s}
37. Re2 {+2.35/5 3.68s} Ng4 {-0.21/4 3.16s} 38. f3 {+2.33/6 3.74s}
Nf6 {-0.27/4 3.16s} 39. Rd2 {+2.32/6 3.71s} Re8 {-0.26/4 3.16s}
40. f4 {+2.33/5 4.01s} Ng4 {-0.21/4 3.16s} 41. fxg5 {+2.33/5 2.64s}
Bc4+ {-0.29/5 3.00s} 42. Kd1 {+2.32/5 2.63s} hxg5 {-0.43/5 3.00s}
43. b3 {+2.32/5 2.75s} Ne3+ {-0.32/5 3.00s} 44. Kc1 {+2.32/6 2.66s}
Be6 {-0.17/4 3.00s} 45. Nb5 {+2.32/5 2.81s} Nd5 {-0.09/4 3.00s}
46. Rc2 {+2.51/5 2.69s} c6 {-0.89/4 3.00s} 47. Nd6 {+2.82/6 2.83s}
Rd8 {-1.13/4 3.00s} 48. Nb7 {+3.56/6 2.71s} Ra8 {-2.23/4 3.00s}
49. Rxc5 {+3.95/6 2.72s} Rh8 {-2.49/4 3.00s} 50. Nxa5 {+3.98/6 2.71s}
Rxh2 {-2.65/4 3.00s} 51. Nxc6 {+4.06/5 2.72s} f5 {-2.92/5 3.00s}
52. a5 {+4.25/5 2.87s} f4 {-2.91/5 3.00s} 53. Nd8 {+4.18/5 2.75s}
Bg8 {-2.54/5 3.00s} 54. b4 {+3.87/5 2.77s} Rh1+ {-2.42/5 3.00s}
55. Kd2 {+3.89/5 2.88s} Rh2+ {-2.54/5 3.00s} 56. Kd3 {+2.80/5 2.80s}
fxg3 {-0.95/5 3.01s} 57. b5 {+2.79/5 2.82s} Rh1 {-0.03/5 3.00s}
58. Rxd5 {+0.39/5 2.83s} Rd1+ {+0.18/5 3.00s} 59. Ke2 {-0.78/7 2.84s}
Rxd5 {-0.09/5 3.00s} 60. Rxg3 {-0.77/6 2.87s} Rxb5 {+1.18/6 3.00s}
61. Ra3 {-0.06/5 2.90s} Bd5 {+1.18/6 3.00s} 62. a6 {-1.23/5 3.06s}
Rb8 {+1.28/6 3.00s} 63. Nb7 {-1.22/5 2.94s} Bxb7 {+1.28/5 3.00s}
64. axb7 {-1.25/6 3.07s} Rxb7 {+1.31/7 3.00s} 65. Kf3 {-1.25/6 2.96s}
Rb4 {+1.40/6 3.00s} 66. Ra7+ {-1.27/5 2.98s} Kf6 {+1.26/7 3.01s}
67. Ra6+ {-1.26/6 3.13s} Ke5 {+1.31/7 3.00s} 68. Ra5+ {-0.01/6 3.04s}
Kf6 {+1.20/7 3.00s} 69. Ra6+ {0.00/8 3.21s} Kf5 {+1.31/7 3.01s}
70. Ra5+ {-1.26/5 3.13s} Kg6 {+1.22/7 3.01s} 71. Ra6+ {-1.26/5 3.22s}
Kh5 {+1.31/7 3.00s} 72. Ke3 {-1.46/6 3.18s} g4 {+1.40/7 3.01s}
73. Kf2 {-1.57/6 3.27s} Rb3 {+1.60/6 3.01s} 74. Ra5+ {-1.57/6 3.34s}
Kg6 {+1.65/7 3.01s} 75. Ra6+ {-1.47/5 3.60s} Kf5 {+1.66/7 3.01s}
76. Ra5+ {-1.47/5 3.50s} Ke4 {+1.65/7 3.01s} 77. Ra4+ {-0.02/5 3.34s}
Kf5 {+1.66/7 3.01s} 78. Ra5+ {0.00/8 3.70s} Kf6 {+1.65/7 3.01s}
79. Ra6+ {-1.47/5 3.50s} Ke5 {+1.66/7 3.01s} 80. Ra5+ {-1.45/5 3.69s}
Kf6 {+1.65/7 3.01s} 81. Ra6+ {0.00/7 2.86s} Ke5 {+1.57/7 3.00s}
82. Ra5+ {0.00/7 3.12s} Kf4 {+1.59/7 3.00s} 83. Ra4+ {-1.57/6 2.63s}
Kg5 {+1.55/7 3.00s} 84. Ra5+ {-1.45/5 2.63s} Kh4 {+1.61/7 3.00s}
85. Ke2 {-1.64/6 2.78s} g3 {+1.66/7 3.00s} 86. Ra4+ {-1.84/6 2.79s}
Kg5 {+1.76/7 3.00s} 87. Ra8 {-1.61/6 2.67s} Kf5 {+1.81/6 2.99s}
88. Rf8+ {-1.62/6 2.67s} Ke6 {+1.79/7 3.00s} 89. Rg8 {-1.61/6 2.69s}
Ra3 {+1.86/6 3.00s} 90. Rg6+ {-1.61/5 2.69s} Ke5 {+1.81/7 3.00s}
91. Rg5+ {-1.62/5 2.83s} Kf4 {+1.84/7 3.00s} 92. Rg8 {-1.68/6 2.72s}
Ra2+ {+1.95/7 3.00s} 93. Kf1 {-1.62/6 2.86s} Kf3 {+2.18/7 3.00s}
94. Rf8+ {-1.63/6 2.87s} Ke3 {+2.26/8 3.00s} 95. Re8+ {-1.62/5 2.87s}
Kf3 {+2.18/7 3.00s} 96. Rf8+ {0.00/8 2.77s} Kg4 {+2.20/8 3.00s}
97. Rg8+ {-1.63/6 2.80s} Kf4 {+2.18/8 2.99s} 98. Rf8+ {-1.62/6 2.90s}
Ke3 {+2.07/7 3.00s} 99. Re8+ {0.00/9 2.86s} Kf4 {+2.10/7 3.00s}
100. Rg8 {0.00/8 3.05s} Rf2+ {+2.10/7 3.00s} 101. Ke1 {-1.62/6 3.23s}
Rb2 {+2.24/6 3.06s} 102. Kf1 {-1.62/6 2.95s} Kf3 {+2.18/7 3.00s}
103. Rf8+ {-1.63/5 3.38s} Ke3 {+2.17/7 3.00s} 104. Re8+ {-1.62/5 2.89s}
Kf3 {+2.18/7 3.00s} 105. Rf8+ {0.00/7 2.94s} Kg4 {+2.20/8 3.00s}
106. Rg8+ {-1.63/6 2.95s} Kf4 {+2.17/8 3.00s} 107. Rf8+ {-1.62/6 2.94s}
Ke3 {+2.07/7 3.00s} 108. Re8+ {0.00/9 3.31s} Kf4 {+2.10/7 2.99s}
109. Rg8 {0.00/8 2.99s} Rf2+ {+2.10/7 3.00s} 110. Ke1 {0.00/9 3.12s}
Rc2 {+2.12/7 3.00s} 111. Kd1 {-1.62/6 3.13s} Ra2 {+2.25/6 3.00s}
112. Rf8+ {-1.87/6 3.09s} Ke5 {+2.19/7 3.00s} 113. Re8+ {-1.87/5 3.15s}
Kd4 {+2.14/7 3.00s} 114. Rd8+ {-1.86/6 3.15s} Ke5 {+2.19/7 3.00s}
115. Re8+ {0.00/8 3.54s} Kd4 {+2.14/7 3.00s} 116. Rd8+ {0.00/8 3.33s}
Ke4 {+2.25/8 3.00s} 117. Re8+ {-1.81/6 3.28s} Kd3 {+2.18/8 3.00s}
118. Rd8+ {-1.81/6 3.38s} Ke4 {+2.25/8 3.00s} 119. Re8+ {0.00/8 3.61s}
Kd3 {+2.14/8 3.00s} 120. Rd8+ {0.00/9 3.67s} Kc3 {+2.18/8 3.00s}
121. Rc8+ {-1.61/6 2.64s} Kb3 {+2.14/8 3.00s} 122. Rb8+ {-1.62/6 2.76s}
Kc4 {+2.18/8 3.00s} 123. Rc8+ {-1.61/6 2.66s} Kb3 {+2.14/8 3.00s}
124. Rb8+ {0.00/8 2.66s} Kc4 {+2.18/8 2.99s} 125. Rc8+ {0.00/8 2.79s}
Kb4 {+2.14/8 3.00s} 126. Rb8+ {-1.86/6 2.68s} Kc5 {+2.18/8 3.00s}
127. Rc8+ {-1.87/6 2.80s} Kb4 {+2.14/7 3.00s} 128. Rb8+ {0.00/8 2.71s}
Kc5 {+2.18/8 2.99s} 129. Rc8+ {0.00/8 2.79s} Kb6 {+2.30/8 3.00s}
130. Rb8+ {-1.88/6 2.73s} Kc7 {+2.36/8 3.00s} 131. Rg8 {-1.88/6 2.71s}
g2 {+2.25/7 2.99s} 132. Ke1 {-1.88/6 2.73s} Kd6 {+2.40/6 2.99s}
133. Rg5 {-1.89/6 2.84s} Rb2 {+2.35/7 3.00s} 134. Rg8 {-1.89/6 2.78s}
Ke6 {+2.44/6 3.00s} 135. Rg5 {-1.89/6 2.80s} Kf6 {+2.39/7 2.99s}
136. Rg8 {-1.89/6 2.80s} Ra2 {+2.39/7 3.00s} 137. Rg4 {-1.89/6 2.83s}
Kf7 {+2.39/7 2.99s} 138. Rg3 {-1.88/6 2.83s} Rb2 {+2.39/7 3.00s}
139. Rg4 {-1.87/6 2.95s} Ra2 {+2.39/7 3.00s} 140. Rg3 {0.00/8 2.98s}
Rb2 {+2.35/7 3.00s} 141. Rg4 {0.00/8 2.89s} Ke6 {+2.35/7 2.99s}
142. Rg5 {0.00/8 2.90s} Ra2 {+2.35/7 3.00s} 143. Rg8 {-1.89/6 3.02s}
Kf5 {+2.45/6 3.00s} 144. Rf8+ {-1.89/6 3.08s} Kg5 {+2.39/7 3.00s}
145. Rg8+ {-1.89/6 2.96s} Kf5 {+2.35/7 3.00s} 146. Rf8+ {0.00/8 2.99s}
Kg5 {+2.39/7 3.00s} 147. Rg8+ {0.00/8 3.00s} Kf4 {+2.45/8 3.00s}
148. Rf8+ {-1.89/5 3.40s} Ke5 {+2.35/7 3.00s} 149. Rg8 {-1.89/6 3.15s}
Kf6 {+2.45/6 3.01s} 150. Rg4 {0.00/8 3.14s} Kf5 {+2.34/7 3.00s}
151. Rg8 {-1.89/6 3.19s} Rb2 {+2.40/6 3.02s} 152. Rf8+ {-1.89/6 3.16s}
Ke4 {+2.45/6 3.01s} 153. Rg8 {-1.89/5 3.27s} Ra2 {+2.40/6 3.01s}
154. Re8+ {-1.89/4 3.60s} Kf4 {+2.45/6 3.02s} 155. Rf8+ {0.00/8 3.27s}
Ke3 {+2.34/7 3.00s} 156. Re8+ {-1.89/4 3.70s} Kf3 {+2.34/7 3.00s}
157. Rf8+ {-1.87/6 3.25s} Ke3 {+2.34/7 3.00s} 158. Re8+ {0.00/8 3.35s}
Kd3 {+2.32/7 3.01s} 159. Rd8+ {-1.89/5 3.73s} Ke4 {+2.45/6 3.02s}
160. Re8+ {0.00/8 3.60s} Kd3 {+2.32/7 3.00s} 161. Rd8+ {0.00/7 2.65s}
Kc4 {+2.25/7 2.99s} 162. Rg8 {-1.89/6 2.85s} Rb2 {+2.40/6 3.00s}
163. Rc8+ {-1.89/5 2.85s} Kd3 {+2.32/7 3.00s} 164. Rd8+ {-1.89/4 2.88s}
Ke3 {+2.34/7 2.99s} 165. Re8+ {-1.89/4 2.72s} Kf3 {+2.34/7 3.00s}
166. Rf8+ {-1.89/6 2.93s} Kg4 {+2.35/7 3.00s} 167. Rg8+ {-1.89/6 2.76s}
Kf3 {+2.34/7 3.00s} 168. Rf8+ {0.00/7 2.68s} Kg4 {+2.35/7 2.99s}
169. Rg8+ {0.00/8 2.69s} Kf4 {+2.34/7 3.03s} 170. Rf8+ {-1.89/6 2.69s}
Ke5 {+2.35/7 3.00s} 171. Rg8 {-1.89/5 2.76s} Kf6 {+2.44/6 3.00s}
172. Rg4 {-1.88/6 2.88s} Ra2 {+2.34/7 3.00s} 173. Rg3 {-1.87/6 2.82s}
Rc2 {+2.45/6 3.00s} 174. Rg8 {-1.89/6 2.81s} Kf5 {+2.34/7 3.00s}
175. Kd1 {-1.89/6 2.73s} Rf2 {+2.45/6 3.00s} 176. Rf8+ {-4.93/6 2.75s}
Ke5 {+3.87/7 3.00s} 177. Rxf2 {-4.92/5 3.08s} g1=Q+ {+3.93/7 3.00s}
178. Ke2 {-4.93/6 2.89s} Qb1 {+4.13/6 2.99s} 179. Ke3 {-4.93/5 2.90s}
Qe4+ {+4.13/6 3.00s} 180. Kd2 Qb4+ {+4.13/6 3.00s} 181. Ke3 {-4.93/5 3.21s}
Qc3+ {+4.02/7 2.99s} 182. Ke2 Ke4 {+4.20/6 2.99s} 183. Rf8 {-4.93/5 3.14s}
Qd3+ {+4.20/6 3.00s} 184. Ke1 {-4.93/5 3.17s} Qb1+ {+4.20/6 3.00s}
185. Ke2 {-10.22/6 3.19s} Qb5+ {+8.93/6 3.00s} 186. Kd1 {-10.22/5 3.33s}
Qh5+ {+9.05/6 3.00s} 187. Ke1 {-4.94/5 3.35s} Ke3 {+9.23/6 3.00s}
188. Rf3+ {-10.22/5 3.27s} Kxf3 {+9.41/8 3.00s} 189. Kd2 {-M18/6 3.30s}
Qc5 {+9.41/6 3.00s} 190. Kd3 {-10.23/5 3.32s} Kf4 {+9.44/6 3.00s}
191. Kd2 {-10.24/5 3.53s} Ke4 {+9.51/6 3.00s} 192. Ke2 {-M8/6 3.45s}
Qc2+ {+M38/7 3.00s} 193. Kf1 {-M6/6 3.44s} Kf3 {+M36/7 3.00s}
194. Kg1 {-M6/6 3.47s} Qg2# {+M34/7 3.00s, Black mates} 0-1
ArcticXWolf commented 3 years ago

Nice :) Thanks for sharing!

I think over the weekend I will work on the evaluation a bit, it is quite simple right now ^^