Bitboard CHESS ENGINE in C: YouTube series by Code Monkey King

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

Moderators: hgm, Dann Corbit, Harvey Williamson

User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: Bitboard CHESS ENGINE in C: YouTube series by Code Monkey King

Post by maksimKorzh »

mvanthoor wrote: Thu Sep 24, 2020 12:28 pm
maksimKorzh wrote: Thu Sep 24, 2020 12:16 pm But how do you like the games??
The games are fine :) Consistently beating TSCP is one of the goals of most engine developers when they are just starting out. I hope the two games you've posted are not 'accidents', and that you can actually win a 100 game match against TSCP. If so, you can estimate your engine's approximate strength. (TSCP is rated around CCRL 1700). You should now set up a gauntlet tournament to see where your engine falls. Don't just try to improve your results against TSCP, or you might end up tuning your engine to explicitly defeat TSCP and perform worse against other engines.
Good advise, thanks!
I'm going to run 300 game match vs TSCP at the very end (what's the best time control if blitz? 5+0?)

Btw making videos and developing in public is much harder compared to private development, I don't complain at any point, just want to say that it's different and the format I've chosen forces some particular decisions as well as the order of steps. After releasing version 1 I'm planning to switch to "engine progress style of videos" without live coding because it's getting more and more complicated.

Also at the same time I'm planning to make some sort of "engine review" videos with highlights in regards to key features and may be some tests as well, like perft speed nodes per second etc. This would serve 2 purposes - learn from other engines "in public" so others would eventually learn to learn from open source engines and on the other hand this might be
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: Bitboard CHESS ENGINE in C: YouTube series by Code Monkey King

Post by maksimKorzh »

mvanthoor wrote: Thu Sep 24, 2020 11:28 am BBC does not run perft(7) correctly, but perft(6) does work. I compiled the engine on Windows (under MSYS2), with the following results.

- Replaced your UCI-loop with this:

Code: Select all

parse_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1");
perft_test(6);
result, correct for perft(6)

Code: Select all

Depth: 6
Nodes: 119060324
Time: 4110
Then:

Code: Select all

parse_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1");
perft_test(7);
Result:

Code: Select all

 Depth: 7
Nodes: -1099065436
Time: 223063
Rustic's output for:

Code: Select all

./rustic.exe --perft 7
(It runs all the depths, up to and including the requested depth, just like iterative deepening, in preparation of a hash table addition.)

Code: Select all

Perft 1: 20 (0 ms, inf leaves/sec)
Perft 2: 400 (0 ms, inf leaves/sec)
Perft 3: 8902 (0 ms, inf leaves/sec)
Perft 4: 197281 (4 ms, 49320250 leaves/sec)
Perft 5: 4865609 (120 ms, 40546741 leaves/sec)
Perft 6: 119060324 (2968 ms, 40114664 leaves/sec)
Perft 7: 3195901860 (79147 ms, 40379317 leaves/sec)
Total time spent: 82239 ms
Execution speed: 40370558 leaves/second

Just like I was expecting - it was the matter of nodes variable size.
As soon as I turned it to 64 bit unsigned integer the result matches exactly.
I'll fix nodes variable type later (already in TODO list)

Code: Select all

     Performance test

     move: a2a3   nodes: 106743106
     move: a2a4   nodes: 137077337
     move: b2b3   nodes: 133233975
     move: b2b4   nodes: 134087476
     move: c2c3   nodes: 144074944
     move: c2c4   nodes: 157756443
     move: d2d3   nodes: 227598692
     move: d2d4   nodes: 269605599
     move: e2e3   nodes: 306138410
     move: e2e4   nodes: 309478263
     move: f2f3   nodes: 102021008
     move: f2f4   nodes: 119614841
     move: g2g3   nodes: 135987651
     move: g2g4   nodes: 130293018
     move: h2h3   nodes: 106678423
     move: h2h4   nodes: 138495290
     move: b1a3   nodes: 120142144
     move: b1c3   nodes: 148527161
     move: g1f3   nodes: 147678554
     move: g1h3   nodes: 120669525

    Depth: 7
    Nodes: 3195901860
     Time: 598606

User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: Bitboard CHESS ENGINE in C: YouTube series by Code Monkey King

Post by maksimKorzh »

Well, it's 7 times slower compared to Rustic but it has almost live youtube tutorial covering all the stuff for noobs like me while Rustic doesn't have youtube tutorial and would be clear only for experienced programmers)))

I just want to say that different goals are leading to different paths.
At the very end we all be in about the same place I believe, so it's just the matter of accents)
I mean if I was developing like you I would dropped before even finishing a movegen)
And the way I do I almost have the version 1 to come out pretty soon!

Btw it seems like BBC would be the first version I won'n abandon after initial "release" (in quotes because my previous engines are fool of bugs and more likely served the purpose of learning rather than a complete software product)

P.S. Marcel, you can't even imagine how I'm tempted to see Rustic in action! Waiting for PGNs! (even if they are about to come in a year)
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: Bitboard CHESS ENGINE in C: YouTube series by Code Monkey King

Post by mvanthoor »

maksimKorzh wrote: Thu Sep 24, 2020 2:40 pm Well, it's 7 times slower compared to Rustic but it has almost live youtube tutorial covering all the stuff for noobs like me while Rustic doesn't have youtube tutorial and would be clear only for experienced programmers)))
I'll benchmark BBC on my own computer to compare. if counting was the only problem, then Rustic is about three times faster on my computer. I think the main cause of this is the copy/make approach in BBC. (Actually, BBC is a about 15% faster now than the first version of Rustic that passed perft 7 on the starting position.)

Rustic will have a book, instead of a YouTube tutorial. (I'd be very poor with regard to recording video's, I fear.) And yes, you're right: Rustic is not a chess engine intended for new programmers or new chess engine developers. (Even though I'm new to developing chess engines, I've been programming for a long time, both professionally and personally.) Rustic is intended for:

- Experienced programmers who want to write a chess engine (and can read most languages that look similar to C, which is true for Rust).
- Experienced chess engine developers who'd want to write a new engine or port their engine to Rust.

Rustic's book/documentation will therefore also give some attention to the Rust language, and refer to the Rust Programming Language book.

Some of the approaches you are using in C aren't even possible in Rust because the language either doesn't allow them, or makes it very hard to pull off.
I just want to say that different goals are leading to different paths.
At the very end we all be in about the same place I believe, so it's just the matter of accents)
I mean if I was developing like you I would dropped before even finishing a movegen)
And the way I do I almost have the version 1 to come out pretty soon!
Goals are indeed different. With software such as this, I don't want go back again and again to make heavy changes to the code base to improve it. I want it to be at a level where I only have to _add_ features, not refactor existing code. As I said before: you wrote a few engines with varying degrees of success, and you threw them away/don't develop them anymore. I probably did too; according to Github, I commited over 22.500 lines of code, but Rustic is only 2500 lines long. (Excluding white space and comments.) Thus I threw away about 90% of everything I did. Rustic moved from a mailbox engine to partially bit boards, to magic bit boards, and from copy/make to make/takeback, all in one engine.

Very good that your version 1 is almost out :) Yesterday I've started writing the search routine. I think I'll include MVV-LVA sorting in the first version, to at least have some alpha/beta sorting. Evaluation will be limited to piece counting and PSQT. I wonder what the performance will be :)
Btw it seems like BBC would be the first version I won'n abandon after initial "release" (in quotes because my previous engines are fool of bugs and more likely served the purpose of learning rather than a complete software product)

P.S. Marcel, you can't even imagine how I'm tempted to see Rustic in action! Waiting for PGNs! (even if they are about to come in a year)
Thanks Maksim :)

It won't take another year after the kick in the nuts Roland (of RofChade) gave me:
When your engine is finally playing chess, the real fun begins! --Roland
He's right of course, so I stopped experimenting (both with the engine, and the Rust language), and decided to just finish the search and UCI-protocol so version 1 can be released. I really do wonder how such a basic (but relatively fast) chess engine will perform. I don't have a clue, to be honest. I'll be happy if it plays around TSCP's level, using speed instead of features for its playing strength.

And then I'll need to add features one by one... If I'm smart, I won't look into multi-threading again until it reaches at least 2895 CCRL.

Have you abandoned Wukong? I rather like the name :) You could even rename BBC to "Wukong 2", because it undoubtedly inherited many things from the previous engine.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: Bitboard CHESS ENGINE in C: YouTube series by Code Monkey King

Post by mvanthoor »

maksimKorzh wrote: Thu Sep 24, 2020 2:31 pm Good advise, thanks!
I'm going to run 300 game match vs TSCP at the very end (what's the best time control if blitz? 5+0?)
Opinions differ, but it seems shorter time controls are favored.

More time makes your engine search deeper. At some point there is a point of diminishing returns. If your engine searches 4 ply deep, and with more time it now searches 5 ply, the new depth is now 125% of the previous one, or an increase of 25%. If your engine can already search 30 ply deep, you give it more time and it now reaches 31 ply, the increase is only 3%. So on the lower depths, a ply has a lot more impact. Also, reaching the next ply will take more and more time.

So, very long time controls are only beneficial for very slow engines. The fastest/top of the line engines are often testend with time controls such as 1 minute + 1 second for the entire game to see if a change has had an effect on Elo. When testing my own engine, I'll probably go for something like 4-5 minutes per game + 2 seconds. (The extra 2 seconds to make sure that the engine won't lose on time, or starts to play extremely badly because it has to do 20 more moves in under a second.)
Btw making videos and developing in public is much harder compared to private development, I don't complain at any point, just want to say that it's different and the format I've chosen forces some particular decisions as well as the order of steps. After releasing version 1 I'm planning to switch to "engine progress style of videos" without live coding because it's getting more and more complicated.
Are you writing the code as you record the video? Wow.... that's die-hard. Even Bluefever wrote his code beforehand, and then recorded the video, either re-typing the code and explaining, or if it's a lot of code, copy/pasting it. Live development is incredibly hard. I'd never even try it, because

a) I'd either end up with a product that works but with which I'm not satisfied writh regard to code quality
b) Viewers would have to sit through a tutorial taking 73 thousand video's to see me refactoring code until I think it's 'just right'.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: Bitboard CHESS ENGINE in C: YouTube series by Code Monkey King

Post by maksimKorzh »

mvanthoor wrote: Thu Sep 24, 2020 3:03 pm
maksimKorzh wrote: Thu Sep 24, 2020 2:40 pm Well, it's 7 times slower compared to Rustic but it has almost live youtube tutorial covering all the stuff for noobs like me while Rustic doesn't have youtube tutorial and would be clear only for experienced programmers)))
I'll benchmark BBC on my own computer to compare. if counting was the only problem, then Rustic is about three times faster on my computer. I think the main cause of this is the copy/make approach in BBC. (Actually, BBC is a about 15% faster now than the first version of Rustic that passed perft 7 on the starting position.)

Rustic will have a book, instead of a YouTube tutorial. (I'd be very poor with regard to recording video's, I fear.) And yes, you're right: Rustic is not a chess engine intended for new programmers or new chess engine developers. (Even though I'm new to developing chess engines, I've been programming for a long time, both professionally and personally.) Rustic is intended for:

- Experienced programmers who want to write a chess engine (and can read most languages that look similar to C, which is true for Rust).
- Experienced chess engine developers who'd want to write a new engine or port their engine to Rust.

Rustic's book/documentation will therefore also give some attention to the Rust language, and refer to the Rust Programming Language book.

Some of the approaches you are using in C aren't even possible in Rust because the language either doesn't allow them, or makes it very hard to pull off.
I just want to say that different goals are leading to different paths.
At the very end we all be in about the same place I believe, so it's just the matter of accents)
I mean if I was developing like you I would dropped before even finishing a movegen)
And the way I do I almost have the version 1 to come out pretty soon!
Goals are indeed different. With software such as this, I don't want go back again and again to make heavy changes to the code base to improve it. I want it to be at a level where I only have to _add_ features, not refactor existing code. As I said before: you wrote a few engines with varying degrees of success, and you threw them away/don't develop them anymore. I probably did too; according to Github, I commited over 22.500 lines of code, but Rustic is only 2500 lines long. (Excluding white space and comments.) Thus I threw away about 90% of everything I did. Rustic moved from a mailbox engine to partially bit boards, to magic bit boards, and from copy/make to make/takeback, all in one engine.

Very good that your version 1 is almost out :) Yesterday I've started writing the search routine. I think I'll include MVV-LVA sorting in the first version, to at least have some alpha/beta sorting. Evaluation will be limited to piece counting and PSQT. I wonder what the performance will be :)
Btw it seems like BBC would be the first version I won'n abandon after initial "release" (in quotes because my previous engines are fool of bugs and more likely served the purpose of learning rather than a complete software product)

P.S. Marcel, you can't even imagine how I'm tempted to see Rustic in action! Waiting for PGNs! (even if they are about to come in a year)
Thanks Maksim :)

It won't take another year after the kick in the nuts Roland (of RofChade) gave me:
When your engine is finally playing chess, the real fun begins! --Roland
He's right of course, so I stopped experimenting (both with the engine, and the Rust language), and decided to just finish the search and UCI-protocol so version 1 can be released. I really do wonder how such a basic (but relatively fast) chess engine will perform. I don't have a clue, to be honest. I'll be happy if it plays around TSCP's level, using speed instead of features for its playing strength.

And then I'll need to add features one by one... If I'm smart, I won't look into multi-threading again until it reaches at least 2895 CCRL.

Have you abandoned Wukong? I rather like the name :) You could even rename BBC to "Wukong 2", because it undoubtedly inherited many things from the previous engine.
I'll be happy if it plays around TSCP's level, using speed instead of features for its playing strength.
It's not that easy. BBC searches 3-4 plies deeper in the opening and about twice deeper in the endgame)
So without at least evaluation pawns and some very basic king safety there are no much chances.
And then I'll need to add features one by one... If I'm smart, I won't look into multi-threading again until it reaches at least 2895 CCRL.
It would be exciting to watch!
Have you abandoned Wukong? I rather like the name :) You could even rename BBC to "Wukong 2", because it undoubtedly inherited many things
Haha) Yup, I'm a master to give engines cool names, judge it yoursef: chengine, chenglite, nibble-chess, BMCP (Bare Minimum C program) and so on)
It reminds me the joke like: I know karate, kungfu, taekwondo and many other terrifying words)))
Now if series Wukong is a bit too personal, it's not an engine, it's more like a template. Wukong is a piece of code I wish I could have when didn't know anything about chess. My learning path is way different compared to how normal people do. I hate traditional education for it's totally useless to me. All I know I've lerned either from YouTube tutorials or reading documentation. Now I'm freelancer making money on web scraping - I would never ever achieve that in other way but the one I'm following. And BBC is literally what it is - Bit Board Chess, in it's simplest forms. I believe there're NO bitboard engine with a code simpler than in BBC. VICE is rocket science compared to BBC. Also BBC has more chances of getting noticed on youtube because of similarity with BBC news - so that's a youtube trick.
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: Bitboard CHESS ENGINE in C: YouTube series by Code Monkey King

Post by maksimKorzh »

mvanthoor wrote: Thu Sep 24, 2020 3:24 pm
maksimKorzh wrote: Thu Sep 24, 2020 2:31 pm Good advise, thanks!
I'm going to run 300 game match vs TSCP at the very end (what's the best time control if blitz? 5+0?)
Opinions differ, but it seems shorter time controls are favored.

More time makes your engine search deeper. At some point there is a point of diminishing returns. If your engine searches 4 ply deep, and with more time it now searches 5 ply, the new depth is now 125% of the previous one, or an increase of 25%. If your engine can already search 30 ply deep, you give it more time and it now reaches 31 ply, the increase is only 3%. So on the lower depths, a ply has a lot more impact. Also, reaching the next ply will take more and more time.

So, very long time controls are only beneficial for very slow engines. The fastest/top of the line engines are often testend with time controls such as 1 minute + 1 second for the entire game to see if a change has had an effect on Elo. When testing my own engine, I'll probably go for something like 4-5 minutes per game + 2 seconds. (The extra 2 seconds to make sure that the engine won't lose on time, or starts to play extremely badly because it has to do 20 more moves in under a second.)
Btw making videos and developing in public is much harder compared to private development, I don't complain at any point, just want to say that it's different and the format I've chosen forces some particular decisions as well as the order of steps. After releasing version 1 I'm planning to switch to "engine progress style of videos" without live coding because it's getting more and more complicated.
Are you writing the code as you record the video? Wow.... that's die-hard. Even Bluefever wrote his code beforehand, and then recorded the video, either re-typing the code and explaining, or if it's a lot of code, copy/pasting it. Live development is incredibly hard. I'd never even try it, because

a) I'd either end up with a product that works but with which I'm not satisfied writh regard to code quality
b) Viewers would have to sit through a tutorial taking 73 thousand video's to see me refactoring code until I think it's 'just right'.
Are you writing the code as you record the video? Wow.... that's die-hard.
I just draft some lines before the video just in order NOT TO FORGET anything and then... improvising.
I need to say that code I've been writing during the video was in most cases better compared to pre-coded believe it or not.
I started with 100% LIVE web scraping tutorials to learn to talk in foreign language and code at the same time and
now I'm applying these skills to chess, so yeah, I write a better live compared to when noone see me)))
Even Bluefever wrote his code beforehand, and then recorded the video, either re-typing the code and explaining, or if it's a lot of code, copy/pasting it. Live development is incredibly hard. I'd never even try it, because
Unfortunately Richard (Bluefever) did too much of copypasting of "self explanatory" code, e.g. mate scoring in TT.
I was suffering 16 hours in a row to understand it... Well, I'm just a noob, but you got the point.
I was trying to show the internal process of what developer feels when creating the stuff.
Well obviously I have many precoded videos on topics that I don't quite understand myself,
but when I've live coded movegen the perft was passed from the first time, can you believe it?

The idea is to dived and conquer. I was mostly emphasizing the stuff I understand best and also those points that were unclear for me.
The major difference of what I'm doing that even a monkey would obtain a chess engine thanks to my tutorials)
I'm a code Monkey (King - because Im doing it a lot and better than other code monkeys))) ) myselfm so I know what I say)))
a) I'd either end up with a product that works but with which I'm not satisfied writh regard to code quality
Quite a fun thing that my youtube projects, including those that are apart from chess programming are BEST I HAVE SO FAR believe it or not.

b) Viewers would have to sit through a tutorial taking 73 thousand video's to see me refactoring code until I think it's 'just right'.
Marcel, you've made my day)))
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: Bitboard CHESS ENGINE in C: YouTube series by Code Monkey King

Post by maksimKorzh »

Here're the latest tests of BBc vs TSCP with 30 sec per game time control.
I've added a very basic mobility bonus for bishops and queens
and also a trick to use king's attack to give bonus if king is surrounded by it's own pieces.

ULTRA BULLET 0:30 + 0

-----------------BBC [new]-----------------
BBC [new] - TSCP : 11,5/14 11-2-1 (11110101111=11) 82% +263
-----------------TSCP-----------------
TSCP - BBC [new] : 2,5/14 2-11-1 (00001010000=00) 18% -263

Link to PGN:
https://github.com/maksimKorzh/chess_pr ... s_TSCP.pgn

Tonight I'm running final tests and if everything works properly tomorrow the world would see BBC 1.0 release!

Here're some games:

[pgn] [Event "Arena Tournament"] [Site "maksim-Inspiron-3582"] [Date "2020.09.24"] [Round "1"] [White "BBC [new]"] [Black "TSCP"] [Result "1-0"] [BlackElo "1700"] [ECO "A46"] [Opening "Indian"] [Time "19:01:57"] [Variation "2.Nf3 e6"] [WhiteElo "1700"] [TimeControl "30+0"] [Termination "normal"] [PlyCount "119"] [WhiteType "program"] [BlackType "program"] 1. d4 {-0.00/10 1} Nf6 2. Nf3 {-0.00/9 0} e6 3. Nc3 {(Nb1-c3 d7-d5 Bc1-f4 Nb8-c6 Qd1-d2 Bf8-d6 O-O-O O-O) -0.00/8 0} Bb4 {(f8b4 c1d2 d7d5 e2e3 e8g8 f1d3) -0.20/6 0} 4. Bd2 {(Bc1-d2 Nb8-c6 a2-a3 Bb4xc3 Bd2xc3 d7-d5 e2-e3 O-O) -0.00/8 0} d5 {(d7d5 e2e3 e8g8 f1d3 b4c3 d2c3) -0.24/6 0} 5. g3 {(g2-g3 Bb4xc3 b2xc3 O-O Bf1-g2 Nb8-c6 O-O Rf8-e8) -0.00/8 0} O-O {(e8g8 e2e3 b4c3 d2c3 b8c6) +0.50/5 0} 6. Bg2 {-0.00/9 0} Bxc3 {(b4c3 d2c3 b8c6 e1g1 c8d7) +0.45/5 0} 7. Bxc3 {-0.00/10 0} Ne4 {(f6e4 c3b4 f8e8 f3e5 b8a6 g2e4 a6b4) +0.28/6 0} 8. Bd2 {(Bc3-d2 Nb8-c6 O-O Ne4xd2 Qd1xd2 Rf8-e8 Ra1-d1 Bc8-d7) -0.00/8 0} Nc6 {(b8c6 e1g1 e4d2 d1d2 c8d7) +0.44/5 0} 9. Be3 {(Bd2-e3 b7-b5 Qd1-d3 b5-b4 O-O-O Bc8-b7 Rh1-e1 Rf8-e8) -0.00/8 0} f6 {(f7f6 e3f4 g7g5 f4e3 c8d7) +0.53/5 0} 10. O-O {-0.00/8 0} e5 {(e6e5 a1c1 c8e6 c2c4 e5d4 f3d4) +0.60/5 0} 11. c4 {-0.00/7 0} dxc4 {(d5c4 d4e5 d8d1 a1d1 f6e5 f3e5 e4f2) +1.06/6 0} 12. dxe5 {(d4xe5 Qd8xd1 Ra1xd1 f6xe5 Nf3xe5 Ne4xg3 Bg2-d5+ Kg8-h8 h2xg3) -0.00/8 0} Qxd1 {(d8d1 a1d1 f6e5 f3h4 c4c3 g2e4 c3b2) +0.75/6 0} 13. Raxd1 {(Ra1xd1 f6xe5 Nf3xe5 Ne4xg3 h2xg3 Nc6xe5 Bg2-d5+ Kg8-h8 Be3-d4) +0.57/8 0} c3 {(f6e5 f3h4 c4c3 g2e4 c3b2) +0.75/5 0} 14. exf6 {(e5xf6 Rf8xf6 b2xc3 Ne4xc3 Rd1-d2 Rf6-d6 Rd2xd6) +0.73/7 0} Rxf6 {(f8f6 f3d4 c6d4 d1d4 e4g3 h2g3 c3b2) +0.54/5 0} 15. Nd4 {(Nf3-d4 Nc6xd4 Rd1xd4 Bc8-f5 Bg2xe4 Bf5xe4 Rd4xe4) +1.05/7 0} Bh3 {(c8h3 g2h3 c3b2 h3e6 g8h8 e6d5 c6d4 e3d4) -0.34/5 0} 16. Bxh3 {(Bg2xh3 c3xb2 Rd1-b1 Nc6xd4 Be3xd4 Rf6-h6 Bh3-g2 Ne4-d2) +2.66/8 0} cxb2 {(c3b2 d1b1 c6d4 e3d4 f6h6 b1b2 h6h3 b2b7) -1.07/5 0} 17. Rb1 {(Rd1-b1 Nc6xd4 Be3xd4 Rf6-h6 Bh3-g2 Ne4-d2 Bd4xb2) +2.66/7 0} Nd2 {(c6d4 e3d4 f6h6 h3g2 e4d2 g2b7 d2b1 b7a8) -1.30/5 0} 18. Bxd2 {(Be3xd2 Nc6xd4 Rb1xb2 Nd4xe2+ Kg1-h1 b7-b6 Bd2-g5 Rf6-g6 Bh3-g2) +3.18/8 0} Nxd4 {(c6d4 b1b2 d4e2 g1g2 f6b6 b2b6 a7b6) -1.44/6 0} 19. Rxb2 {(Rb1xb2 Nd4xe2+ Kg1-g2 b7-b6 Bd2-e3 Ne2-c3 Be3-d4 Rf6-c6) +3.04/7 0} Rb6 {(f6b6 d2b4 a7a5 f1d1 d4e2 b2e2 a5b4) -1.59/5 0} 20. Rfb1 {(Rf1-b1 Nd4xe2+ Kg1-f1 Ne2-d4 Bd2-f4 c7-c5 Rb2xb6 a7xb6 Rb1xb6) +3.12/8 0} Nxe2+ {(d4e2 g1g2 b6b2 b1b2 b7b6 h3e6 g8f8 g2f3) -1.95/6 0} 21. Kf1 {(Kg1-f1 Ne2-d4 Bh3-g2 c7-c6 Rb2xb6 a7xb6 Bd2-c3 Nd4-b5) +3.27/7 0} Nd4 {(e2d4 d2f4 d4f3 f4c7 b6b2 b1b2 f3h2) -1.94/6 0} 22. Bf4 {(Bd2-f4 c7-c5 Bh3-g2 Nd4-e6 Bg2xb7 Rb6xb2 Rb1xb2 Ra8-e8) +3.34/8 0} c5 {(c7c5 h3g2 d4e6 g2b7 a8f8 b2b6 a7b6 b1b6 e6f4 g3f4 f8f4) -2.29/6 0} 23. Bg2 {(Bh3-g2 Rb6xb2 Rb1xb2 Ra8-d8 Rb2xb7 Nd4-e6 Bf4-e5 Rd8-d1+ Kf1-e2 Rd1-g1) +3.89/9 0} Ne6 {(d4e6 g2b7 b6b2 b1b2 a8d8 f4e5) -2.55/6 0} 24. Rxb6 {(Rb2xb6 a7xb6 Bg2-d5 Ra8-e8 Rb1xb6 Kg8-f7 Rb6xb7+ Kf7-f6 Bf4-d6 Re8-d8 Bd6-e7+) +5.05/10 0} axb6 {(a7b6 g2d5 g8f7 b1b6 a8e8 a2a4 c5c4 b6b7) -3.79/7 0} 25. Bd5 {(Bg2-d5 Ra8-e8 Rb1xb6 Kg8-f7 Rb6xb7+ Re8-e7 Rb7-b5 Kf7-g6 Bd5xe6 Re7xe6 Rb5xc5) +5.55/10 0} Kf7 {(g8f7 b1b6 a8e8 a2a4 c5c4 b6b7) -3.79/6 0} 26. Rxb6 {-0.00/10 0} Re8 {(a8e8 f4e3 f7f6 e3c5 f6e5 d5e6 e8e6 b6b7) -4.71/6 0} 27. Be3 {(Bf4-e3 Kf7-f6 Be3xc5 Kf6-e5 Bd5xe6 Re8xe6 Rb6xb7 Ke5-d5) +6.05/8 0} Kf6 {(f7f6 e3c5 f6e5 d5e6 e8e6 b6b7) -4.71/6 0} 28. Bxc5 {(Be3xc5 Kf6-e5 Bd5xe6 Re8xe6 Rb6xb7 Re6-c6 f2-f4+ Ke5-d5 Bc5-b6) +6.24/8 0} Ke5 {(f6e5 d5e6 e8e6 c5d4 e5d5 b6e6 d5e6 d4g7) -4.96/7 0} 29. Bxe6 {(Bd5xe6 Re8xe6 Rb6xb7 Re6-h6 Kf1-g2 g7-g5 a2-a4 Rh6-c6 Bc5-b6) +6.83/9 0} Rxe6 {(e8e6 b6b7 e6h6 c5f8 h6h2 f8g7 e5d5 a2a4) -5.51/7 0} 30. Rxb7 {(Rb6xb7 Ke5-d5 Bc5-e3 Re6-g6 a2-a4 Kd5-c6 Rb7-e7 Kc6-d5) +6.90/8 0} Rc6 {(e6c6 c5f8 g7g5 b7h7 c6c1 f1e2 c1c2) -5.57/6 0} 31. Bf8 {(Bc5-f8 Rc6-c1+ Kf1-g2 g7-g5 Rb7xh7 Rc1-c4 Rh7-a7 Rc4-c2 a2-a4) +7.07/8 0} g5 {(g7g5 b7h7 c6c4 h7e7 e5d5 e7d7 d5e6 d7e7) -5.82/6 0} 32. Rxh7 {(Rb7xh7 Rc6-c8 Bf8-g7+ Ke5-f5 Bg7-b2 Rc8-c2 Rh7-f7+ Kf5-g4 Rf7-b7 Rc2-d2) +6.89/8 0} Rc2 {(c6c4 h7e7 e5f6 e7b7 c4c1 f1e2 c1c2) -5.92/5 0} 33. a4 {(a2-a4 g5-g4 a4-a5 Rc2-a2 Kf1-g2 Ke5-f6 Bf8-b4 Ra2-c2) +7.34/8 0} Kf5 {(e5f5 h2h4 c2c8 f8a3 c8c3 a3d6) -6.34/6 0} 34. a5 {(a4-a5 Rc2-c8 Bf8-b4 Rc8-b8 Bb4-d6 Rb8-a8 Bd6-c7 Ra8-e8) +7.43/8 0} Ra2 {(c2a2 f8b4 f5e5 h7e7 e5d5 e7d7 d5e4 h2h4) -6.40/6 0} 35. Ra7 {(Rh7-a7 Ra2-d2 a5-a6 Rd2-d8 Bf8-b4 Kf5-g4 Ra7-b7 Rd8-d1+ Kf1-g2 Rd1-b1) +7.84/9 0} g4 {(g5g4 a5a6 f5f6 f8c5 f6e5 a7e7) -6.54/6 0} 36. a6 {(a5-a6 Ra2-c2 Ra7-f7+ Kf5-g6 Rf7-b7 Rc2-c8 Bf8-a3 Rc8-c2 a6-a7 Kg6-g5) +8.22/9 0} Kf6 {(f5f6 f1e1 f6g5 f8c5 g5f5 c5d4) -6.64/6 0} 37. Kg2 {(Kf1-g2 Ra2-a5 Ra7-a8 Ra5-a2 a6-a7 Kf6-g5 Bf8-d6 Ra2-c2 Ra8-b8) +8.50/9 0} Rc2 {(a2c2 a7b7 f6e5 a6a7 c2c8 f8c5) -6.90/6 0} 38. Rb7 {(Ra7-b7 Kf6-f5 a6-a7 Rc2-a2 Bf8-g7 Kf5-e6 Bg7-b2 Ke6-d5 f2-f4 g4xf3/ep+) +9.04/10 0} Ke5 {(f6e5 a6a7 c2a2 f8g7 e5e4 h2h4 g4h3 g2h3) -7.24/6 0} 39. a7 {(a6-a7 Rc2-a2 Bf8-c5 Ke5-d5 Bc5-b6 Kd5-c4 Rb7-c7+ Kc4-d5 h2-h4 g4xh3/ep+) +8.87/9 0} Ra2 {(c2a2 h2h4 g4h3 g2h3 e5e4 f2f4 e4d5) -7.60/6 0} 40. Bc5 {-0.00/10 0} Kd5 {(e5d5 c5e3 d5e5 b7b8 a2a7 e3a7) -9.65/6 0} 41. Be3 {(Bc5-e3 Kd5-e5 Rb7-b8 Ke5-f5 a7-a8Q Ra2xa8 Rb8xa8 Kf5-g6 Be3-d4 Kg6-h5) +11.82/10 0} Ke6 {(d5e5 b7b8 a2a7 e3a7 e5d5) -9.65/5 0} 42. Rb8 {(Rb7-b8 Ke6-f5 a7-a8Q Ra2xa8 Rb8xa8 Kf5-f6 Ra8-g8 Kf6-e6 Rg8-g5 Ke6-f6) +12.35/10 0} Ke5 {(e6e5 h2h4 g4h3 g2h3 a2a1 a7a8q a1a8 b8a8) -10.34/6 0} 43. a8=Q {(a7-a8Q Ra2xa8 Rb8xa8 Ke5-f5 Ra8-g8 Kf5-f6 Rg8xg4 Kf6-f7 Rg4-f4+ Kf7-g8 h2-h4) +12.78/10 0} Rxa8 {(a2a8 b8a8 e5e6 a8a7 e6d5 f2f4) -10.74/6 0} 44. Rxa8 {(Rb8xa8 Ke5-f6 Ra8-g8 Kf6-f5 Be3-d4 Kf5-e4 Rg8xg4+ Ke4-f5 Rg4-g8 Kf5-e4 Rg8-d8 Ke4-f5) +13.27/11 0} Ke6 {(e5e6 a8a6 e6d5 a6a5 d5d6 a5g5 d6e6 g5g4) -11.41/6 0} 45. Rg8 {(Ra8-g8 Ke6-f5 Be3-d4 Kf5-e4 Rg8xg4+ Ke4-f5 Rg4-g8 Kf5-e4 Bd4-b6 Ke4-d5 Rg8-d8+ Kd5-c6 Bb6-d4) +13.47/11 0} Kf5 {(e6f5 g8g5 f5f6 g5g4 f6f5 h2h3 f5e5 f2f4) -12.14/7 0} 46. Rg5+ {(Rg8-g5+ Kf5-f6 Rg5xg4 Kf6-f5 Rg4-g8 Kf5-e6 f2-f4 Ke6-f7 Rg8-a8 Kf7-e6 h2-h4 Ke6-f5) +13.84/11 0} Ke6 {(f5f6 g5g4 f6f5 h2h3 f5e5 f2f4) -12.14/5 0} 47. Rxg4 {(Rg5xg4 Ke6-f7 Be3-d4 Kf7-e6 h2-h4 Ke6-d5 f2-f3 Kd5-e6 Rg4-g8 Ke6-d5 Rg8-d8+) +13.93/11 0} Kf6 {(e6f6 g4d4 f6e6 f2f4 e6f5 h2h4) -12.52/6 0} 48. h4 {(f2-f4 Kf6-f7 h2-h4 Kf7-e6 Rg4-g8 Ke6-f7 Rg8-a8 Kf7-e6 Be3-d4 Ke6-f7) +14.18/10 0} Kf5 {(f6f5 g4d4 f5f6 f2f4 f6f5 h4h5) -12.73/6 0} 49. Rg8 {(Rg4-g8 Kf5-e5 f2-f4+ Ke5-e4 Rg8-e8+ Ke4-f5 h4-h5 Kf5-f6 Be3-d4+ Kf6-f5 h5-h6 Kf5-g6 Bd4-g7) +14.59/10 0} Ke6 {(f5e6 f2f4 e6d6 g3g4 d6d5 f4f5) -12.80/6 0} 50. f4 {(f2-f4 Ke6-f7 Rg8-c8 Kf7-e6 h4-h5 Ke6-f5 h5-h6 Kf5-g6 Rc8-c6+ Kg6-h7 f4-f5) +14.51/10 0} Kf7 {(e6f7 g8g5 f7f8 g3g4 f8f7 f4f5 f7e7) -13.00/7 0} 51. Ra8 {(Rg8-a8 Kf7-e7 g3-g4 Ke7-d7 h4-h5 Kd7-e7 h5-h6 Ke7-d6 h6-h7 Kd6-d5) +15.34/10 0} Ke6 {(f7e6 g2f3 e6d6 f3e4 d6e6 g3g4) -13.22/6 0} 52. g4 {-0.00/12 0} Kd5 {(e6d5 g2f3 d5c6 f3e4 c6d6 f4f5) -13.45/6 0} 53. f5 {(f4-f5 Kd5-d6 f5-f6 Kd6-e6 Be3-d4 Ke6-d6 h4-h5 Kd6-e6 h5-h6 Ke6-d5) +15.71/10 0} Kd6 {(d5d6 f5f6 d6e6 a8a6 e6f7 g2f3 f7e8) -13.68/6 0} 54. Bf4+ {(Be3-f4+ Kd6-e7 g4-g5 Ke7-f7 h4-h5 Kf7-e7 f5-f6+ Ke7-e6 Bf4-e3 Ke6-f7 h5-h6) +15.85/9 0} Ke7 {(d6e7 g4g5 e7d7 h4h5 d7c6 f5f6) -13.81/5 0} 55. g5 {-0.00/11 0} Kf7 {(e7f7 g5g6 f7f6 a8a7 f6f5 g6g7 f5f4 g7g8q) -16.53/6 0} 56. Ra7+ {-0.00/11 0} Ke8 {(f7e8 f5f6 e8f8 f4d6 f8e8 f6f7 e8d8 f7f8q) -21.27/5 0} 57. f6 {(f5-f6 Ke8-f8 g5-g6 Kf8-e8 f6-f7+ Ke8-d8 f7-f8Q+) +M4/10 0} Kf8 {(e8f8 f4d6 f8g8 g5g6 g8h8 a7a8) -99.94/6 0} 58. g6 {(g5-g6 Kf8-e8 f6-f7+ Ke8-f8 Bf4-h6+) +M3/9 0} Ke8 {(f8e8 f6f7 e8f8 f4h6) -99.96/4 0} 59. f7+ {(f6-f7+ Ke8-f8 Bf4-h6+) +M2/9 0} Kf8 {(e8f8 f4h6) -99.98/2 0} 60. Bh6# {(Bf4-h6+) +M1/8 0} 1-0 [/pgn]

[pgn] [Event "Arena Tournament"] [Site "maksim-Inspiron-3582"] [Date "2020.09.24"] [Round "2"] [White "TSCP"] [Black "BBC [new]"] [Result "0-1"] [BlackElo "1700"] [ECO "D25"] [Opening "QGA"] [Time "19:03:35"] [Variation "4.e3"] [WhiteElo "1700"] [TimeControl "30+0"] [Termination "normal"] [PlyCount "134"] [WhiteType "program"] [BlackType "program"] 1. d4 d5 {-0.00/10 1} 2. c4 dxc4 {-0.00/9 0} 3. Nf3 Nf6 {(Ng8-f6 Nb1-c3 Nb8-c6 e2-e4 Bc8-g4 e4-e5 Bg4xf3 Qd1xf3) -0.00/8 0} 4. e3 b5 {-0.00/9 0} 5. Nc3 {(f1e2 e7e6 e1g1 b8c6 b1c3) -0.19/5 0} c6 {(c7-c6 a2-a4 Bc8-a6 Qd1-c2 b5-b4 Nc3-e4 Nf6xe4 Qc2xe4) -0.00/8 0} 6. Be2 {(f1e2 e7e6 e1g1 b5b4 c3a4) -0.04/5 0} Bb7 {-0.00/9 0} 7. O-O {(e1g1 e7e6 c1d2 b5b4 c3a4) -0.04/5 0} g6 {-0.00/8 0} 8. a4 {(a2a4 a7a6 c1d2 b5b4 c3a2) +0.25/5 0} a6 {-0.00/8 0} 9. e4 {(e3e4 b8d7 e4e5 f6d5 c1d2) +0.21/5 0} Bg7 {-0.00/8 0} 10. e5 {(e4e5 f6d5 c1e3 b8d7) +0.06/4 0} Nd5 {-0.00/9 0} 11. Nxd5 {(a4b5 d5c3 b2c3 c6b5 c1e3 b7f3 e2f3) -0.03/5 0} cxd5 {(c6xd5 a4xb5 a6xb5 Ra1xa8 Bb7xa8 Bc1-f4 Ba8-b7 Rf1-e1) +0.66/8 0} 12. axb5 {(a4b5 a6b5 a1a8 b7a8 c1e3) +0.04/5 0} axb5 {(a6xb5 Ra1xa8 Bb7xa8 Rf1-e1 O-O b2-b3 Ba8-b7 Bc1-b2 Nb8-c6) +1.11/9 0} 13. Rxa8 {(a1a8 b7a8 c1e3 b8c6 b2b3 e7e6) -0.51/6 0} Bxa8 {(Bb7xa8 Bc1-f4 Ba8-b7 Qd1-d2 Nb8-c6 Bf4-h6 O-O Bh6xg7) +1.16/8 0} 14. Be3 {(c1e3 b8c6 d1c2 e7e6 f1a1) -0.38/5 0} Bb7 {(Ba8-b7 Qd1-d2 Nb8-c6 Be3-h6 O-O Rf1-a1 e7-e6) +1.14/7 0} 15. b3 {(d1c2 b8c6 f1a1 e7e6 e3f4) -0.48/5 0} Qa5 {(Qd8-a5 Qd1-a1 Nb8-c6 Nf3-d2 Qa5xa1 Rf1xa1 c4-c3) +1.68/7 0} 16. Bd2 {(d1a1 a5a1 f1a1 c4b3 e2b5) -0.65/5 0} c3 {(c4-c3 Bd2-f4 Nb8-c6 Qd1-a1 Qa5-b4 Be2xb5 Qb4xb5 Qa1xc3) +2.14/8 0} 17. Bxb5+ {(d2c3 a5c3 e2b5 b8c6 b5c6 b7c6 d1b1) -1.03/5 0} Qxb5 {(Qa5xb5 Bd2xc3 O-O Bc3-b2 Nb8-c6 Rf1-e1 e7-e6 Qd1-c2 Rf8-a8) +2.52/8 0} 18. Bxc3 {(d2c3 b8c6 d1b1 e7e6 b3b4) -0.94/5 0} O-O {(O-O Bc3-b2 Rf8-c8 Rf1-e1 Nb8-c6 g2-g4 e7-e6 g4-g5) +2.52/8 0} 19. b4 {(b3b4 e7e6 d1b3 f7f6 f1e1 f6e5 f3e5 g7e5 e1e5) -1.05/5 0} Nc6 {(Nb8-c6 Qd1-d2 Rf8-c8 Rf1-e1 e7-e6 Re1-a1 Rc8-c7) +2.62/7 0} 20. Qb3 {(d1b3 e7e6 f3g5 f8c8 f1a1) -1.18/5 0} Ra8 {(Rf8-a8 Rf1-c1 Ra8-a4 Rc1-b1 e7-e6 Bc3-d2 Ra4-a8) +2.75/7 0} 21. Rc1 {(f1c1 a8a4 c1b1 e7e6 b3b2) -1.28/5 0} e6 {(e7-e6 Rc1-b1 Ra8-a4 Nf3-e1 f7-f6 e5xf6 Bg7xf6) +2.93/7 0} 22. Ne1 {(f3e1 b5c4 b3b2 a8a2 b2b1) -1.48/5 0} f6 {(f7-f6 e5xf6 Bg7xf6 Qb3-b2 Bf6-g7 Ne1-f3) +2.81/6 0} 23. exf6 {(e5f6 g7f6 e1f3 a8a4 c1b1 h7h6) -1.57/6 0} Bxf6 {(Bg7xf6 Ne1-f3 Bf6-g7 Rc1-e1 Ra8-a4 Qb3-b1 Nc6xb4) +2.80/7 0} 24. Qb2 {(b3b2 b5c4 e1f3 a8a2 b2b1) -1.59/5 0} Qc4 {(Qb5-c4 Ne1-f3 Ra8-a2 Nf3-d2 Ra2xb2 Nd2xc4 Rb2-a2) +2.96/7 0} 25. Nf3 {(e1f3 a8a2 f3d2 a2b2 d2c4) -1.63/5 0} Ra2 {-0.00/8 0} 26. Qb1 {(b2b1 c4e2 f3d2 a2d2 c3d2 e2d2) -2.36/6 0} Qe2 {(Qc4-e2 Rc1-f1 Bb7-a6 Nf3-d2 Ra2xd2 Bc3xd2 Qe2xd2) +3.92/7 0} 27. Kh1 {(g1h1 e2f2 c1g1 a2c2 b1a1) -2.93/5 0} Qxf2 {(Qe2xf2 Rc1-g1 Ra2-c2 Bc3-e1 Qf2-e2 Qb1-a1) +4.33/6 0} 28. Rg1 {(c1g1 a2e2 b1a1 e2a2 a1b1) -2.93/5 0} Rc2 {(Ra2-c2 Qb1-b3 Rc2-e2 Qb3-d1 Re2-c2 Qd1-d3) +4.28/6 0} 29. Qb3 {(b1b3 c2e2 b3d1 e6e5 d4e5 c6e5 f3e5 f6e5 c3e5 e2e5) -3.17/5 0} Re2 {(Rc2-e2 Qb3-d1 e6-e5 d4xe5 Nc6xe5 Nf3xe5) +4.50/6 0} 30. Qd1 {(b3d1 e6e5 c3e1 f2e3 e1d2) -3.09/5 0} Rc2 {(Re2-c2 Bc3-e1 Qf2-e2 Qd1xe2 Rc2xe2 Be1-c3) +4.06/6 0} 31. Qd3 {(d1d3 b7a6 d3a6 c2c3 a6a8) -2.77/5 0} Be7 {(Bf6-e7 b4-b5 Nc6-b4 Bc3xb4 Be7xb4 b5-b6) +3.99/6 0} 32. b5 {(b4b5 c6b4 c3b4 e7b4 b5b6) -2.43/5 0} Nb4 {(Nc6-b4 Bc3xb4 Be7xb4 b5-b6 Bb4-d6 g2-g3 g6-g5) +4.09/7 0} 33. Bxb4 {(c3b4 e7b4 b5b6 b4c3 d3d1 b7c6) -2.53/6 0} Bxb4 {(Be7xb4 b5-b6 Rc2-a2 Qd3-b5 Bb4-d6 Qb5-d3) +4.02/6 0} 34. Qf1 {(d3f1 f2f1 g1f1 g8f7 b5b6) -2.53/5 0} Qxf1 {(Qf2xf1 Rg1xf1 Rc2-b2 Kh1-g1 Bb4-a5 Nf3-g5 Ba5-b6 Rf1-f4) +4.16/8 0} 35. Rxf1 {(g1f1 c2b2 f1a1 b4d6 a1a5 g8f7) -2.75/6 0} Rb2 {(Rc2-b2 Nf3-g5 Bb4-e7 Ng5xe6 Rb2xb5 Rf1-a1 Rb5-b2 Ra1-a7 g6-g5) +4.33/9 0} 36. Ng5 {(f3g5 b4e7 g5e6 b2b5 f1f2 h7h6) -3.08/6 0} Be7 {(Bb4-e7 Ng5xe6 Rb2xb5 Rf1-e1 Rb5-b2 Ne6-d8 Be7xd8 Re1-e8+ Kg8-g7 Re8xd8) +4.15/9 0} 37. Nxe6 {(g5e6 b2b5 h1g1 e7d6 f1f2 h7h6) -3.03/6 0} Rxb5 {(Rb2xb5 Rf1-e1 Be7-b4 Re1-a1 Bb4-d2 Ne6-c5 Bd2-c3 Ra1-a4) +4.27/8 0} 38. Kg1 {(h1g1 h7h6 e6f4 e7f6 f4d5 f6d4) -3.03/6 0} Rb2 {(Rb5-b2 g2-g3 g6-g5 Ne6-c5 Be7xc5 d4xc5 d5-d4 Rf1-e1) +4.34/8 0} 39. Rf2 {(f1f2 b2b1 f2f1 b1f1 g1f1 g8f7 e6c5 b7c6) -3.04/6 0} Rb1+ {(Rb2-b1+ Rf2-f1 Rb1xf1+ Kg1xf1 Be7-f6 Ne6-c5 Bb7-c6 Nc5-b3 Bf6-g7 Kf1-g1 Bc6-b7) +4.66/9 0} 40. Rf1 {(f2f1 b1b4 e6c5 b7c6 f1d1 e7d6 c5e6) -3.14/6 0} Rxf1+ {(Rb1xf1+ Kg1xf1 Be7-f6 Kf1-e2 Bb7-c8 Ne6-c7 Bf6xd4 Nc7xd5 Bc8-b7 Ke2-d3 Bb7xd5) +4.89/10 0} 41. Kxf1 {(g1f1 g8f7 e6c5 e7c5 d4c5 d5d4 f1f2) -2.97/6 0} Bf6 {(Be7-f6 Kf1-e2 Bb7-c8 Ne6-c7 Bf6xd4 Nc7xd5 Bc8-b7 Ke2-d3 Bb7xd5) +4.89/9 0} 42. Ke2 {(f1e2 b7a6 e2e3 g8f7 e6c5 a6c4 g2g4 f7e7) -2.93/7 0} Bc8 {(Bb7-c8 Ne6-f4 Bf6xd4 Nf4xd5 Bc8-b7 Nd5-f4 Bd4-e5 g2-g3 g6-g5 Nf4-e6 g5-g4) +5.06/11 0} 43. Nc7 {(e6c7 f6d4 c7d5 c8b7 d5f4 d4e5 g2g3 e5f4 g3f4) -2.98/7 0} Bxd4 {(Bf6xd4 Nc7xd5 Bc8-b7 Nd5-f4 Bd4-g1 h2-h4 Bg1-h2 Ke2-e3 Bh2xf4+ Ke3xf4 Bb7xg2) +4.94/10 0} 44. Nxd5 {(c7d5 c8b7 d5f4 d4e5 g2g3 e5f4 g3f4) -2.98/6 0} Bb7 {(Bc8-b7 Nd5-f4 Bd4-g1 h2-h4 Bg1-h2 Ke2-e3 Bh2-g3 h4-h5 g6xh5) +4.92/9 0} 45. Nf4 {(d5f4 d4g1 h2h4 g1h2 f4d3 b7g2) -3.67/6 0} Bg1 {(Bd4-g1 h2-h4 Bg1-h2 Ke2-e3 Bh2xf4+ Ke3xf4 Bb7xg2 Kf4-g4 Bg2-b7 h4-h5) +5.04/9 0} 46. h4 {(h2h4 g1h2 e2e3 h2g3 f4e2 g3h4) -3.64/6 0} Bh2 {(Bg1-h2 Ke2-e3 Bh2xf4+ Ke3xf4 Bb7xg2 Kf4-e3 Bg2-b7 Ke3-f2 Kg8-g7 Kf2-g3 h7-h6 Kg3-h3) +5.04/11 0} 47. Nd3 {(f4d3 b7g2 e2f2 g2h1 f2e3 h2g3 d3f2 g3f2 e3f2) -3.82/7 0} Bxg2 {(Bb7xg2 Ke2-f2 Bg2-b7 Nd3-c5 Bb7-d5 Nc5-d3 Kg8-g7 Kf2-e3 Bh2-g1+ Nd3-f2 Bd5-b7) +5.71/10 0} 48. Kf2 {(e2f2 g2a8 d3e1 h2e5 e1f3 a8f3 f2f3) -3.92/7 0} Bb7 {(Bg2-b7 Nd3-c5 Bb7-d5 Nc5-d3 Bh2-c7 Kf2-g1 Bc7-g3 Nd3-b4 Bd5-b7) +5.78/9 0} 49. Nc5 {(d3c5 b7d5 c5d3 g8f7 f2e3 h2g1 e3f4 f7e6) -4.07/7 0} Bc6 {(Bb7-c6 Nc5-d3 Bh2-c7 Nd3-b4 Bc6-b7 Nb4-d3 h7-h5 Kf2-g1 Bc7-b6+ Kg1-h2 Bb6-d4) +5.82/10 0} 50. Nd3 {(c5d3 h2d6 f2e3 g8f7 d3f4 f7f6) -4.07/6 0} Bc7 {(Bh2-c7 Nd3-b2 Bc6-d5 Nb2-a4 Bc7-e5 Kf2-e3 Be5-g7 Na4-c5 h7-h5) +5.92/9 0} 51. Nb4 {(d3b4 c6b7 b4d3 g8f7 f2e3 f7e6) -4.07/6 0} Be4 {(Bc6-e4 Kf2-e3 Be4-b7 Ke3-f2 Bc7-e5 Nb4-d3 Be5-d6 Nd3-b2 Bd6-c5+ Kf2-g3 Bc5-b6) +5.83/10 0} 52. Ke3 {(f2e3 e4b7 e3f2 g8f7 b4d3 c7b6 f2e2 f7e6) -4.17/7 0} Bb7 {(Be4-b7 Ke3-f2 h7-h6 Nb4-c2 g6-g5 h4xg5 Bc7-b6+ Kf2-g3 h6xg5 Kg3-g4 Bb7-e4) +6.11/10 0} 53. Kf2 {(e3f2 g8f7 b4d3 c7d8 f2g3 f7e6) -4.17/6 0} h6 {(h7-h6 Nb4-c2 g6-g5 h4xg5 h6xg5 Nc2-d4 Bc7-b6 Kf2-e3 g5-g4) +6.20/9 0} 54. Nd3 {(b4d3 g6g5 h4g5 h6g5 f2e3 g5g4) -4.21/6 0} g5 {(g6-g5 h4xg5 h6xg5 Kf2-e2 g5-g4 Nd3-c5 Bb7-d5 Ke2-e3 g4-g3 Nc5-e4) +6.38/10 0} 55. hxg5 {(h4g5 h6g5 f2e2 g5g4 e2e3 g4g3 e3d4) -4.33/7 0} hxg5 {(h6xg5 Kf2-f1 Bc7-b6 Nd3-f2 Bb6-d4 Nf2-g4 Kg8-g7 Ng4-f2 Bd4-e5) +6.41/9 0} 56. Ke3 {(f2e3 c7b6 e3d2 g8f7 d2c3 g5g4 c3c4) -4.41/6 0} g4 {(g5-g4 Ke3-d2 g4-g3 Nd3-e1 Bc7-e5 Kd2-e2 g3-g2 Ne1xg2 Bb7xg2 Ke2-e3) +7.42/10 0} 57. Kd4 {(d3c5 c7b6 e3d4 g4g3 d4c4 g3g2) -4.65/6 0} g3 {(g4-g3 Nd3-e1 Bc7-a5 Ne1-g2 Bb7xg2 Kd4-e3 Bg2-f1 Ke3-f3 g3-g2 Kf3-e4) +9.98/10 0} 58. Ne1 {(d3e1 c7a5 e1g2 b7g2 d4e5 g8f7) -7.48/6 0} Ba5 {(Bc7-a5 Kd4-c5 Ba5xe1 Kc5-b6 g3-g2 Kb6xb7 g2-g1Q Kb7-c6 Qg1-h1+ Kc6-c5 Be1-f2+ Kc5-c4 Bf2-g3) +14.00/11 0} 59. Ng2 {(e1g2 b7g2 d4e3 g2d5 e3e2 g3g2 e2f2) -7.90/7 0} Bxg2 {(Bb7xg2 Kd4-c5 Bg2-b7 Kc5-b5 Ba5-c7 Kb5-c5 g3-g2 Kc5-d4 g2-g1Q+ Kd4-c4 Qg1-g4+ Kc4-b5 Bc7-e5 Kb5-c5) +17.95/12 0} 60. Ke3 {(d4e3 g2b7 e3e2 g3g2 e2f2 a5b6 f2e1 g2g1q) -15.24/7 0} Bb7 {(Bg2-b7 Ke3-f4 g3-g2 Kf4-e5 g2-g1Q Ke5-f5 Ba5-b6 Kf5-f4 Qg1-h2+ Kf4-f5 Bb6-d4) +17.93/10 0} 61. Ke2 {(e3e2 g3g2 e2f2 a5b6 f2e2 g2g1q e2d2 g8f7) -15.54/7 0} g2 {(g3-g2 Ke2-d3 g2-g1Q Kd3-c2 Ba5-c7 Kc2-d3 Bc7-e5 Kd3-c2) +17.98/8 0} 62. Kf2 {(e2f2 g8f7 f2e2 g2g1q e2d3 f7e6) -15.73/6 0} Bb6+ {(Ba5-b6+ Kf2-e2 g2-g1Q Ke2-d2 Bb6-d4 Kd2-d3 Qg1-e3+ Kd3-c4 Bd4-g7 Kc4-b5 Qe3-e6) +18.13/9 0} 63. Ke2 {(f2e2 g2g1q e2d2 g1f1 d2c2 g8f7) -15.88/5 0} g1=Q {(g2-g1Q Ke2-d2 Qg1-e3+ Kd2-c2 Bb6-d4 Kc2-b1 Bd4-g7 Kb1-c2 Qe3-e6) +18.13/8 0} 64. Kd2 {(e2d2 b6e3 d2d3 g1f2 d3c4 g8f7) -16.02/5 0} Qe3+ {-0.00/9 0} 65. Kd1 {(d2d1 b7f3 d1c2 g8f7 c2b1 f7e6) -15.93/4 0} Bd4 {(Bb6-d4 Kd1-c2 Qe3-c3+ Kc2-d1 Bb7-f3+) -0.00/8 0} 66. Kc2 {(d1c2 e3c3 c2b1 c3b2) -99.96/4 0} Qc3+ {(Qe3-c3+ Kc2-b1 Qc3-b2+) +M2/7 0} 67. Kd1 {(c2d1 b7f3) -99.98/2 0} Bf3# {(Bb7-f3+) +M1/8 0} 0-1 [/pgn]

[pgn] [Event "Arena Tournament"] [Site "maksim-Inspiron-3582"] [Date "2020.09.24"] [Round "3"] [White "BBC [new]"] [Black "TSCP"] [Result "1-0"] [BlackElo "1700"] [ECO "D01"] [Opening "Richter-Veresov, 3.Nf3"] [Time "19:05:20"] [Variation "2.Nf3 Nf6"] [WhiteElo "1700"] [TimeControl "30+0"] [Termination "normal"] [PlyCount "73"] [WhiteType "program"] [BlackType "program"] 1. d4 {-0.00/10 1} d5 2. Nf3 {-0.00/9 0} Nf6 3. Nc3 {-0.00/9 0} e6 {(b8c6 e2e3 e7e6 f1d3 f8d6) -0.00/5 0} 4. e3 {-0.00/8 0} Bd6 {(f8b4 f1d3 b4c3 b2c3 e8g8 e1g1) +0.08/5 0} 5. g3 {(g2-g3 Nb8-c6 Bc1-d2 Ke8-d7 Bf1-g2 Rh8-e8 O-O) -0.00/7 0} O-O {(e8g8 f1d3 b8c6 e1g1 c8d7) +0.44/5 0} 6. Bg2 {-0.00/9 0} Nc6 {(c7c5 c1d2 b8c6 e1g1 c8d7) +0.35/5 0} 7. b3 {(b2-b3 Bd6-b4 Bc1-b2 Nf6-e4 Qd1-d3 Ne4xc3 Bb2xc3 Rf8-e8) -0.00/8 0} Re8 {(f8e8 c1b2 e6e5 e1g1 c8e6) +0.66/5 0} 8. Bb2 {(Bc1-b2 b7-b6 Qd1-d2 Bc8-b7 O-O-O e6-e5 Rh1-e1 a7-a5) -0.00/8 0} e5 {(e6e5 d4e5 d6e5 f3e5 e8e5 c3d5 e5d5 g2d5 f6d5) +0.68/5 0} 9. dxe5 {(d4xe5 Bd6xe5 Nf3xe5 Re8xe5 Nc3-e2 Re5-e8 Bb2xf6 Qd8xf6) +0.53/8 0} Bxe5 {(d6e5 f3e5 e8e5 c3e2 e5f5 e1g1) +0.45/6 0} 10. Nxe5 {(Nf3xe5 Re8xe5 Nc3-e2 Re5-g5 O-O Bc8-g4 Rf1-e1 Nf6-e4) +0.67/8 0} Rxe5 {(e8e5 c3e2 e5f5 e2d4 c6d4 e3d4) +0.53/5 0} 11. Ne2 {(Nc3-e2 Re5-e8 Ne2-f4 Bc8-g4 Bb2xf6 Qd8xf6) +0.72/6 0} Rg5 {(e5g5 h2h4 g5f5 e2d4 c6d4 e3d4) +0.43/5 0} 12. O-O {(O-O Bc8-g4 f2-f3 Bg4-f5 Ne2-f4 Nc6-b4 Rf1-f2) +0.87/7 0} Bg4 {(c8g4 c2c4 c6e5 c4d5 g4e2 d1e2 f6d5 g2d5 d8d5 b2e5 g5e5) +0.46/5 0} 13. f3 {(f2-f3 Bg4-f5 Ne2-d4 Bf5-d7 Rf1-e1 Nc6-e5 e3-e4) +1.05/7 0} Be6 {(g4e6 e3e4 d8e7 b2f6 e7f6) +0.39/5 0} 14. Nf4 {(Ne2-f4 b7-b5 e3-e4 Qd8-d6 Nf4xe6 f7xe6) +1.24/6 0} Nh5 {(f6h5 h2h4 h5f4 h4g5 f4g2 g1g2 d8g5) -0.08/5 0} 15. Nxe6 {(Nf4xe6 f7xe6 f3-f4 Nh5xg3 Rf1-f3 Rg5-f5 h2xg3 b7-b5 Rf3-f2) +3.25/9 0} fxe6 {(f7e6 f3f4 h5g3 f1f3 g3e2 d1e2 g5f5) -1.38/6 0} 16. f4 {(f3-f4 Nh5xg3 Rf1-f3 Rg5-f5 Rf3xg3 Rf5-f7 c2-c4 Rf7-d7) +3.23/8 0} Nxg3 {(h5g3 f1f3 g5f5 f3g3 f5f7) -1.48/5 0} 17. Rf3 {(Rf1-f3 Rg5-f5 h2xg3 Rf5-f7 c2-c4 a7-a5 Rf3-f2) +3.31/7 0} Ne2+ {(g5g6 f3g3 g6g3 h2g3 a7a5) -1.57/5 0} 18. Qxe2 {(Qd1xe2 Rg5-g4 Ra1-d1 Qd8-e7 Rf3-g3 Rg4xg3 h2xg3) +3.64/6 0} Rg6 {(g5g6 a1d1 d8e7 e3e4 a8f8) -1.74/5 0} 19. Rd1 {(Ra1-d1 Qd8-d7 e3-e4 Ra8-d8 Rf3-d3 Qd7-f7) +3.69/6 0} Qh4 {(d8h4 c2c4 d5c4 e2c4 a8d8 d1d8 h4d8) -1.78/5 0} 20. f5 {(f4-f5 e6xf5 Rd1xd5 Nc6-e7 Rd5-d7 Rg6-h6 h2-h3) +4.29/7 0} exf5 {(e6f5 d1d5 c6e7 d5d7 g6h6) -1.71/5 0} 21. Rxd5 {(Rd1xd5 Rg6-h6 Rf3-h3 Qh4-g4 Qe2xg4 f5xg4) +4.40/6 0} Rh6 {(g6h6 f3h3 h4g4 e2g4 f5g4 h3h6 g7h6) -2.05/5 0} 22. Rh3 {(Rf3-h3 Qh4-g4 Qe2xg4 f5xg4 Rh3xh6 g7xh6 Rd5-b5 Nc6-d8) +4.94/8 0} Qg4 {(h4g4 e2g4 f5g4 h3h6 g7h6 e3e4) -2.43/6 0} 23. Qxg4 {(Qe2xg4 f5xg4 Rh3xh6 g7xh6 Rd5-d7 Ra8-c8 Bg2-d5+ Kg8-f8 e3-e4 Rc8-e8) +5.71/9 0} fxg4 {(f5g4 h3h6 g7h6 d5b5 g8f7 b5b7) -3.30/6 0} 24. Rxh6 {(Rh3xh6 g7xh6 Rd5-d7 Ra8-c8 Rd7-g7+ Kg8-f8 Rg7xh7 Rc8-d8 Rh7xc7 Rd8-d1+) +5.71/9 0} gxh6 {(g7h6 d5d7 c6b4 g2b7 a8b8 b7e4) -3.70/6 0} 25. Rd7 {(Rd5-d7 Kg8-f8 Bg2-d5 Ra8-c8 Rd7xh7 Rc8-e8 e3-e4 Re8-e7) +5.91/8 0} Rc8 {(a8c8 d7g7 g8f8 g7h7 c6d8 b2f6 f8e8 f6d8 c8d8 g2b7) -4.02/6 0} 26. Bg7 {(Bb2-g7 Nc6-b4 c2-c3 Rc8-e8 c3xb4 c7-c6 e3-e4 b7-b5 Rd7xa7) +7.99/9 0} Nb4 {(c6b4 c2c3 a7a5 g2b7 c8b8 c3b4 b8b7 b4a5) -5.41/6 0} 27. a3 {(a2-a3 a7-a6 a3xb4 c7-c6 Bg7xh6 b7-b5 Rd7-g7+ Kg8-h8 Rg7xg4 Rc8-c7) +8.32/9 0} Re8 {(c8e8 a3b4 c7c6 e3e4 e8b8 g7h6) -6.40/6 0} 28. axb4 {(a3xb4 c7-c6 Bg7xh6 Re8-e6 Bh6-f4 b7-b5 Rd7xa7 h7-h5 Ra7-c7 Re6-f6) -0.00/10 0} c6 {(c7c6 g7h6 e8e6 h6f4 b7b6 d7a7) -7.05/6 0} 29. Bd4 {(Bg7-d4 Re8-b8 Bd4xa7 Rb8-c8 Rd7xb7 h6-h5 Ba7-d4 h5-h4) +9.23/8 0} b6 {(b7b6 d7a7 e8c8 d4b6 c8b8 b6d4) -7.49/6 0} 30. b5 {(b4-b5 Kg8-f8 b5xc6 Re8-e7 c6-c7 Re7-e8 Rd7xh7 Kf8-g8 Rh7xh6) -0.00/9 0} a5 {(g4g3 b5c6 g3h2 g1h2 e8a8 e3e4) -7.84/5 0} 31. bxc6 {-0.00/9 0} Re7 {(e8e7 c6c7 e7e8 d7d8 b6b5 c7c8q e8d8 c8d8) -14.24/5 0} 32. c7 {-0.00/10 0} Rxd7 {(e7d7 c7c8q g8f7 c8d7 f7g6 d7g4 g6f7 d4b6 h6h5 g4h5) -17.90/6 0} 33. c8=Q+ {(c7-c8Q+ Kg8-f7 Qc8xd7+ Kf7-g6 e3-e4 Kg6-g5 Qd7-f5+ Kg5-h4 Bd4-f6+) -0.00/9 0} Kf7 {(g8f7 c8d7 f7g6 d7d6 g6g5 d6d5 g5g6 g2e4) -99.92/5 0} 34. Qxd7+ {-0.00/9 0} Kg6 {(f7g6 d7c6 g6h5 c6d5 h5h4 d4f6) -99.94/4 0} 35. Qe6+ {(Qd7-e6+ Kg6-h5 Qe6-f5+ Kh5-h4 Bd4-f6+) +M3/8 0} Kg5 {(g6g5 e6d5 g5g6 g2e4) -99.96/3 0} 36. Qd5+ {(Qe6-d5+ Kg5-g6 Bg2-e4+) +M2/8 0} Kg6 {(g5g6 g2e4) -99.98/2 0} 37. Be4# {(Bg2-e4+) +M1/9 0} 1-0 [/pgn]
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: Bitboard CHESS ENGINE in C: YouTube series by Code Monkey King

Post by mvanthoor »

maksimKorzh wrote: Thu Sep 24, 2020 5:20 pm Marcel, you've made my day)))
OK, let's fix that in proper chess engine fashion:

Code: Select all

unmake(day)
There, back to normal again :) Back to testing my preliminary search function...

Oh, by the way: your statement that you need some sort of evaluation to beat TSCP is not true. PeSTO (Piece Square Tables Only), is a special version of Rofchade (by Roland), which reached about 2980 on CCRL without ANY evaluation apart from material counting and PSQT's... purely on speed and search functionality.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: Bitboard CHESS ENGINE in C: YouTube series by Code Monkey King

Post by mvanthoor »

maksimKorzh wrote: Thu Sep 24, 2020 7:16 pm Tonight I'm running final tests and if everything works properly tomorrow the world would see BBC 1.0 release!
Congrats; are you actually going to call the engine "BBC" officially? I look forward to seeing it in rating lists and to play against it in the not too distant future. Preliminary estimation of +263 Elo over TSCP in hyperbullet... that'd put you somewhere around 1950 in the CCRL blitz list. Very respectable for a first version :) Mine is probably going to be weaker due to less functionality in version 1.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL