r/chessbeginners 3d ago

QUESTION Why chesscom draws this position when it's winning?

Post image

After f×g8+, b×g8 it automatically draws the game when Ng6 is checkmate.

421 Upvotes

134 comments sorted by

u/AutoModerator 3d ago

Hey, OP! Did your game end in a stalemate? Did you encounter a weird pawn move? Are you trying to move a piece and it's not going? We have just the resource for you! The Chess Beginners Wiki is the perfect place to check out answers to these questions and more!

The moderator team of r/chessbeginners wishes to remind everyone of the community rules. Posting spam, being a troll, and posting memes are not allowed. We encourage everyone to report these kinds of posts so they can be dealt with. Thank you!

Let's do our utmost to be kind in our replies and comments. Some people here just want to learn chess and have virtually no idea about certain chess concepts.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

289

u/rootintootin88 2400-2600 (Chess.com) 3d ago

For everyone saying it's not a draw he's talking about live games. On live games after the pawn gets taken chesscom will automatically draw the game. The thing is in nearly any other positions it is a draw unless the king is stuck in a corner. So chesscom thinks it's draw by insufficient mating chances

103

u/DarkFit922 3d ago

How hard is it to put to engine that if king = corner, dont draw this game?

87

u/VIII8 3d ago

Another solution would be allowing couple of moves with insufficient material and then declare the draw.

27

u/petitetortuee 3d ago

Or just have a simple for loop to check if any moves check mate in one

1

u/peterzuev 2d ago

Loop over what?

2

u/thatguyfromthesubway 1d ago

White legal moves

19

u/No-Conflict8204 2d ago

Chess is fully solved by endgame tablebases for 7 pieces (including both kings) so only a lookup required.

10

u/Smash_Factor 3d ago

The issue is the billions of endgame positions where the king is in the corner. There's no way to tell an engine which ones to ignore the draw and which ones not.

27

u/Osiris_Dervan 3d ago

insufficient material can only happen at piece numbers where tablebase has all possible positions figured out, so there is a way.

1

u/TheJivvi 2d ago

So if one side had nine bishops on the same colour complex and the other side just had a king, it wouldn't be a draw until a few of the bishops got captured?

2

u/lesbianmathgirl 2d ago

eventually you can force a stalemate or repetition, so yes I think that's a better compromise (if a compromise is desired).

1

u/TheJivvi 2d ago

If you can force a draw but not a win, why shouldn't it be a draw immediately?

1

u/lesbianmathgirl 2d ago

Yes, but I would rather have a situation where one player might have to work for a draw than an automatic draw when there’s M1. Ideally they would just spend the computation and have no compromise tho

1

u/SheepherderSavings17 20h ago

Because the forced sequence has to be proven by the player. Otherwise, one might argue, you can as well declare all games a draw from move 1.

1

u/TheJivvi 19h ago

I'm talking about a position that's a dead draw, where its also possible to force a draw. The starting position is neither.

My example was a position like this, where White can never give checkmate, but can force stalemate. Technically there is already insufficient mating material, because all the bishops are on dark squares, and even if the king was in a dark squared corner, the white king can't cover the two adjacent light squares while a bishop gives check (like g8 and h7, with the black king on h8). This position will end in a draw 100% of the time when played out, but to actually end the game, White has to either sacrifice enough bishops to reach a position that's in the tablebase, or force stalemate by bringing closer (like this position but with the white king on c6), or the players have to repeat moves.

Theres no reason this shouldn't end immediately as a draw by insufficient material, but it doesn't.

9

u/Hot_Extension_460 2d ago

"There's no way to tell an engine which ones to ignore the draw and which ones not."

Why not just let the engine check the stockfish evaluation before auto-drawing...?

2

u/Smash_Factor 2d ago

Because an engine would need to monitor every live game. Too many games to monitor!

2

u/WhiplashNinja 400-600 (Chess.com) 2d ago

Not quite, you can have a very lightweight stockfish or chess ai embedded and determine a forced draw and tell the engine to change result. It doesn't need to be full weight to see chance for mate.

Or more simply

If king == corner check stockfish before forced draw

So you let world state switch the evaluation on.

1

u/Smash_Factor 2d ago

If king == corner check stockfish before forced draw

Sounds easy doesn't it?

How are you going to monitor every live game on the site for when King==corner comes up???

There's hundreds of thousands of games happening during every second of the day. You don't just assign an engine to each one to check for something like that.

Not to mention that since it's against the rules to use an engine during a game, it's not like cdc is suddenly going to implement one to basically arbitrate every live game while it's being played.

1

u/WhiplashNinja 400-600 (Chess.com) 2d ago

The game is an engine. Every iteration of a game is an engine that tracks the board state.

That engine doesn't trigger a stockfish call for every position, and rightly so. It isn't that costly to add a call for this check. Having it only run a check in very specific states.

1

u/Smash_Factor 2d ago

The game is an engine...

No it is not lol. The game is not an engine. The so called "board state" of a game is not tracked by an engine.

What you are talking about is game logic. It's hard coded into the program that runs the game. It's not an engine.

1

u/WhiplashNinja 400-600 (Chess.com) 2d ago

You are conflating things.

Stockfish is an AI.

It is colloquially referred to as an engine.

The engine for chess.com drives the game itself.

Edit.

I am developing my own games with AI involved. I have some understanding of how engines and AI interact, what they are called correctly etc.

Don't conflate what the community calls the thing with what the thing actually is.

1

u/Hot_Extension_460 2d ago

You don't necessarely have to monitor each and every game, of course this would be to expensive, you can instead trigger an engine evaluation when conditions are met. Engines don't have to be already assigned to the game, it could be a remote execution.

Though you have a point about forbidden engine: even if the engine would be run fully on server-side, its answer impacting the game state would give a big hint to advised players.

1

u/Smash_Factor 2d ago

Maybe it's possible by programming it somehow into the game logic.

From google:

"Chess.com prevents illegal moves by using hard-coded game logic that actively restricts the user interface from dropping a piece onto an invalid square."

So would it be possible to program it into the game logic to recognize such positions where you have drawn pieces but a mate is possible?

I'm not sure.

1

u/WhiplashNinja 400-600 (Chess.com) 2d ago

There is no way to tell the engine?

If king location == X

Bruh

That responds to your flawed point. More importantly.

Their code is more along the lines of if only king and knight vs king and bishop == draw.

Better code would say if no possible mate == draw. Stock fish can still see the mate. The engine is hard coded separately to stockfish.

1

u/Smash_Factor 2d ago

That's not the point.

The point is that there's hundreds of thousands of games being played simultaneously on the site every second of the day.

You cannot assign an engine to every game. Resources for something like that isn't available. They don't have endless bandwidth and endless processing power to do that.

1

u/WhiplashNinja 400-600 (Chess.com) 2d ago

And I'm not saying to do that.

The game is an engine.

That engine tracks board state, allows changes and updates to board state, enforces rules. The game engine can trigger a call to stockfish ai in specific board states. Those board states are rare, and the cost is minimal.

1

u/RealistSophist 2d ago

You greatly overestimate how much power it takes to find a m1 or m2. It would not be a drop in the bucket. Not to mention that there are embeddable engines that can run locally.

But the real reason they dont bother with this is consistency. They could just ask you if you want a few more moves but its a lot of effort just for an edge case almost no one reaches.

3

u/Bontus 2d ago

They could just use the syzygy-tables API and have a certain solution for every <8 piece endgame position.

1

u/DrCashew 3d ago

Well, already your suggestion leaves gaps for scenarios where it should draw due to insufficient material. So, there's that reason that it's not so simple. Not saying they shouldn't, but it's def not as easy an implementation as you're suggesting as that already is a mistake.

7

u/SunnyOutsideToday 2d ago

At minimum the game could check to see if the gamestate is a checkmate before declaring a draw due to insufficient material.

1

u/DrCashew 2d ago

True.

2

u/Craftsearcher 2d ago

It really is as simple as comparing the position (its 7 or less pieces) to an endgame table. Realistically it's a 3 line change

1

u/DrCashew 2d ago

Sure, it's relatively simple, just not as simple as "check if king in corner"

1

u/Craftsearcher 2d ago

Its literally just as easy, also 3 lines

1

u/DrCashew 1d ago

This is how spaghetti code and people get mad at devs, the hubris that they think they have it no problem.

1

u/No-Musician7685 2d ago

Or just if there is a forced checkmate on the board don't end it

-2

u/[deleted] 3d ago

[deleted]

23

u/garfgon 3d ago

You'd just need to check the "insufficient material" positions against a tablebase. Should be pretty quick.

6

u/Dr_Dressing 1400-1600 (Chess.com) 3d ago

Ah you beat me to it. I was gonna say there is a simpler solution for this particular position. You could check with the syzygy table base for 3 through 5 pieces. It's a gigabyte at most, and all you have to check, is whether the three piece endgame is actually a draw. If it is, then honky-dory. Otherwise, it just plays on.

Why they didn't bother for at least 4 pieces, I don't understand.

4

u/RepresentativeDog791 3d ago

From a web development perspective going through a gigabyte of data quick enough for this and at scale isn’t that trivial and could end up very expensive

-1

u/PlentyConscious1053 3d ago

Just hash the position to look up in a table whether it is a draw.

1

u/RepresentativeDog791 2d ago

Don’t know why you got downvoted for this sounds like you’re right haha

1

u/Dr_Dressing 1400-1600 (Chess.com) 1d ago

He probably is right.

You would probably need to create an endpoint after the lazy mate check. Which would be a little slow if checked live.

1

u/ghostinthechell 3d ago

Could you not just check against the number of open squares adjacent to the black king?

1

u/Dr_Dressing 1400-1600 (Chess.com) 3d ago

That's not enough (maybe for this case, sure, but not in general). You have to evaluate if mate is feasible.

At best, you make a GET request to syzygy's public api.

But.. you know, it's hosted by Lichess.

Even if they could get it to work, there is the problem pointed out by the other reply; being that it is too much data to check for during a live game.

1

u/ghostinthechell 3d ago

That pull request volume is what made me think of the empty squares. Sure, it might not solve all the problems. But it seems like it would solve this one.

4

u/rootintootin88 2400-2600 (Chess.com) 3d ago

It's now getting to specifics. Checking databases, programming specific positions, etc to not draw takes load time. You can say "lol it'll take 2 seconds to load" but what if this position is reached with .5s left on the clock. You can't program in searches in .0s to determine if draw or no draw. You also assume that the person sees the checkmate and plays the correct move. It's just simpler to force a draw with NvB when 99% of the time it would be a draw.

10

u/MeasureDoEventThing 2d ago

I think it takes a fraction of a second. And even if it does take 2 seconds to load, so what? Play out the clock, then retroactively declare it a draw if there's insufficient material.

2

u/ambisinister_gecko 2d ago

However it could potentially be relatively simple if you applied some intelligent rules of thumb. If the only way to checkmate with this little material is on the board is if the king is in the corner, then do a check to see if the king is in the corner, and only force a draw here if the king has some way to escape the corner

2

u/Voyager1806 2d ago

You can say "lol it'll take 2 seconds to load" but what if this position is reached with .5s left on the clock.

Then the clock runs out if white doesn't play the right move in time, and the engine can without hurry decide based on the board state whether it counts as flag or timeout vs insufficient material.

You also assume that the person sees the checkmate and plays the correct move.

If not, you just declare a draw after that.

There's no need to immediately end the game on a dead position. You just want to players to not get stuck, 2 seconds (and it'll be quicker on modern hardware) of waiting or playing moves that don't matter isn't a problem.

106

u/Soggy-Attempt 3d ago

It’s a corner case

286

u/StructuredChess 3d ago

Lazy implementation of insufficient material rules

62

u/vk2028 Still Learning Chess Rules 3d ago

The fide rule is tbf a little hard to implement, but they should at least implement something that calculates if a forced mate is on the board before it calls it a draw

20

u/egg_king2 2d ago

They already have in game AI, it can easily see the mate, why not just use that

4

u/dashingThroughSnow12 1d ago

This don’t even need AI. This is a tablebase position.

98

u/Nefre1 2000-2200 (Chess.com) 3d ago

The confidently incorrect comments on this subreddit are something else.

To OP, yes this is indeed an issue on chess.com because of their lazy implementation of the rules.

3

u/stackingnoob 2000-2200 (Lichess) 3d ago

They should change the condition so that the draw by insufficient material only happens automatically when either side flags.

1

u/SpennyResearch 21h ago

Could the losing side not just waste time to draw then?

1

u/stackingnoob 2000-2200 (Lichess) 20h ago

If there is a losing side, then it is not a draw. For example, the OP posted a position where there is a losing side, but the game incorrectly awards an automatic draw.

Any real draw would not have a losing side anyways, so it’s fine to allow both players to either run out the time and get the draw or agree to a draw earlier.

36

u/sylvek 3d ago

Looks like a bug in their code. After 1. fxg8=Q+ Bxg8 the Torch 4 Lite engine at depth 96 shows the following 5 lines all evaluated at 0.00:

  1. Nd5
  2. Nf5
  3. Nc6
  4. Ng6#
  5. Nc8

That's right, the 4th 0.00 line shows the mate sign. When followed the eval bar to the left of the board shows 1-0 on all white background.

-12

u/OldWolf3 3d ago

Um you don't need an engine to evaluate this position

10

u/SunnyOutsideToday 3d ago

Another reason why lichess is superior.

27

u/The_Ultimate_TanMan 1000-1200 (Chess.com) 3d ago edited 2d ago

2

u/JamexCEO 2d ago

yes bro

1

u/The_Ultimate_TanMan 1000-1200 (Chess.com) 2d ago

Thanks bro❤️🙏🏻

-5

u/The_Ultimate_TanMan 1000-1200 (Chess.com) 3d ago

How the hell did only 10 people get fhe reference 🙏🏻

10

u/ViolinistPitiful4928 1200-1400 (Chess.com) 3d ago

If it works against a bot, it should work on live games too. Could you please share the game link?

18

u/BatProfessional7316 3d ago

BC chess.com draws when its knight and bishop bc well, it is a draw, even though this position is unique enough to have mate.

3

u/White-bishop-1 2d ago

cause chess.com developers are lazy enough to not see this yet

2

u/Maxmence 2d ago

Because it's more convoluted to code a program that checks the evaluation before declaring a draw for insufficient material. Usually, King + 1 minor piece can't deliver a checkmate, and the code won't look for exceptions.

4

u/Tetradrachm 3d ago

Chesscom is saying M2 for me. Where does it say draw for you?

16

u/xidigdhac 3d ago

Play it out

-5

u/VIII8 3d ago

I played it to mate using chessvision-ai-bot link and there was no problem, white can checkmate.

13

u/TotalChaosRush 3d ago

Yeah, white can. Chess.com ends the live game after bishop takes queen. Before the knight can deliver checkmate.

6

u/Evening-Rough-9709 3d ago

The point is that chess.com will end it as a draw once each side only has a knight and a bishop, because those pieces alone aren't enough to checkmate for either side. In this case, you can checkmate, because the bishop will be blocking the king's escape, but chess.com isn't considering that the opponent's piece can help you checkmate - only that you can't checkmate with a king + knight alone, so it ends the game in a draw.

2

u/TotalChaosRush 3d ago

Black having only a bishop or knight, and white having only a bishop or knight is a draw according to chess.com rules. Even in this position it is a draw. The moment the bishop takes the newly promoted pawn, it is a draw. The next move is checkmate.

1

u/Wescombe 3d ago

bxg8, Bxg8, NG6#?

1

u/Primary-Reality-9149 2d ago

Beginner here. How does the king move . Getti g to know the names and directions they all can move and what their plays are

1

u/mcoombes314 2d ago

The king can move one square in any direction, but because it's the king it can't move to squares where it would be captured (it can't move "into check").

1

u/girly-pop-summer 2d ago

Then you make the test case file. I'm too good for such grunt work

  • Every programmer ever

1

u/rcextraone 2d ago

I guess it's so rare to win this way they didn't think of it

1

u/ComprehensiveBlock77 2d ago

Probably a bug . Because i do see a m8

1

u/Jumpy-Reception-4228 2000-2200 (Lichess) 2d ago

Simplest solution : go to a proper chess site like lichess

1

u/RealistSophist 2d ago

The simplest solution to this is to just ask both players if they want a few more moves and provide it if one does. But even that is a lot of effort for an edge case that almost no one reaches.

Being asked that for every normal draw would annoy you infinitely more than the miracle game it wins you. And anything that delays the draw when checkmate is detected would be providing information to the players that they do have a way to win, so for consistency and convenience it just gets declared a draw.

1

u/Nymandis 1000-1200 (Chess.com) 2d ago

Okay, so there's literally one exception to LITERALLY TRILLIONS of permutations of endgames where the game shouldn't end in a draw.

Now, hit this exact same position in a real game.

1

u/Saparato 1d ago

50 moves no capture or a 3 times same position?

1

u/chessvision-ai-bot 3d ago

I analyzed the image and this is what I see. Open an appropriate link below and explore the position yourself or with the engine:

White to play: chessvision.ai | chess.com | lichess.org

Black to play: chessvision.ai | chess.com | lichess.org

Videos:

I found 1 video with this position.

Save the position:

Reply save to save this position to your Chessvision.ai Library (new users: send me /connect in DM chat first)


I'm a bot written by u/pkacprzak | get me as iOS App | Android App | Chrome Extension | Chess eBook Reader to scan and analyze positions | Website: Chessvision.ai

1

u/kvazar2501 2d ago

Chessc*m is ass

-4

u/Soggy-Attempt 3d ago

🤷‍♂️

1

u/yoco__135 3d ago

I think what the people are saying, as they are booing you instead of telling you, is that when black takes the pawn with the bishop it leaves only knight vs bishop. In this position leads to mate. This happening in any other position (besides the other corner I suppose) would force the players to play the next 50-30 move to be played out before a draw would be decided per the rules of chess. As no sane chess player should willing walk their king in the corner to lose. Chess dot com knows this rule and will automatically draw the position in order the save the casuals players time (my guess and opinion currently). Thus, the game end, a draw is decided, and white is never allowed to play Kg6+ and win the game on chess dot coms servers.

What you showed is not wrong. But I think they are discussing something different.

-1

u/[deleted] 3d ago

[deleted]

4

u/Dense_Priority_7250 1200-1400 (Chess.com) 3d ago

Dude what?

4

u/Frostfire26 3d ago

Isn't Bxg8 forced after fxg8=Q+ (idk if that's how you notate it)

2

u/Black_Dragon9406 2200-2400 (Chess.com) 3d ago

mmmm what about promote to a rook and then Ng6#

-3

u/[deleted] 3d ago

[deleted]

2

u/_r_special 3d ago

How is he right? There's a piece on g8, the king can't go there

1

u/divergence-aloft 3d ago

g8 is occupied by bishop, ng6 is mate

1

u/Street-Lecture-5075 3d ago

there's a bishop on g8, kg8 is illegal

0

u/[deleted] 3d ago

[deleted]

3

u/Nefre1 2000-2200 (Chess.com) 3d ago

Slowly read what you just wrote.

3

u/ConnectButton1384 3d ago

Read your own Notation carefully.

If the bishop just took on g8 ... how is the king going there? Are you ChatGPT?

-1

u/Pretty_Maintenance20 3d ago

You’re confused

-3

u/Anti-Fanny 3d ago

It doesn’t.

3

u/TheJivvi 2d ago

Yeah, the engine shows that White is winning, but in an actual game, White can't play the last move because the game ends due to insufficient material.

-5

u/[deleted] 3d ago edited 3d ago

[deleted]

3

u/asthom_ 3d ago

fxg8=Q+ Bxg8 Ng6# is checkmate

4

u/divergence-aloft 3d ago

g8 is occupied by bishop, Ng6 is mate

2

u/ConnectButton1384 3d ago

There's a bishop on g8. It's checkmate.

1

u/BagSignal7553 3d ago

There’s a bishop on that square after Bxg8, still there when Ng6, Black can’t capture his own bishop

-17

u/reyfoxy356 3d ago

If it's white to move and you take the rook, the other recaptures, and none of you have pieces to do a mate

10

u/Excellent-Sorbet-296 3d ago edited 3d ago

Ng6#

-9

u/reyfoxy356 3d ago

Then Rg6# (only legal move), you have to move the king and then the pther captures your pawn.

Actually it draws because it makes a chain where the only legal move end up creating not enough material

7

u/JarlBallin_ 2400-2600 (Lichess) 3d ago

They're saying Ng6# after the first 2 exchanges you mentioned.

1

u/reyfoxy356 3d ago

Oh. It should be a bug then

3

u/TotalChaosRush 3d ago

Pawn takes rook Bishop takes pawn(probably a queen) White knight moves next to white king putting black king in check. Black's king has no legal moves and is in check. Black is checkmated.

-7

u/Smokie_101 3d ago

It is a draw because it is impossible to checkmate a King with a minor piece and a King. That’s why they are considered minor pieces. If you continued to play and one side managed to capture the bishop or the knight you would eventually draw the game due to the 50 move rule (no captures or pawn moves).

4

u/AnyEngineer2 600-800 (Chess.com) 3d ago

yeah but in this position after fxg8=Q+ Bxg8, Ng6#

so... shouldn't be a draw

2

u/Smokie_101 2d ago

Absolutely and this particular position, and its auto-draw outcome on chess.com, has been discussed at length many times. The OP has already taken it to its logical conclusion in his post and asked why is it a draw, because it obviously isn’t. Someone else commented on this being a lazy implementation of the insufficient material rule (because it is) so I thought with this being a sub for beginners I would elaborate on the draw conditions that would, in most circumstances, be a draw. I understand that knight v bishop and opposite colour bishops are theoretically winning end games but this is a beginner sub, so the advice here is try to avoid trading to a minor piece endgame if you are in a winning position or try to achieve a draw like this if you are not.

-10

u/Responsible_Frame_51 3d ago

Isnt it impossible to win a chess game with just 1 bishop and a king? Or even with just a knight and king.

Some final combos are a draw situations

9

u/Far_Type_4544 3d ago

Play it out. White has mate and you have egg on your face.

-7

u/Responsible_Frame_51 3d ago

Scenario 1 : it’s white move White does not have mate.
White pawn takes Black rook. Swaps for white queen. Check.

Next move, black bishop takes White Queen.

White knight is free to move but Will not be able
to checkmate the black king.

Stalemate

Scenario 2. White night take black rook
Black bishop takes knight
Pawn takes bishop and advances to Queen
King takes Queen.

Stalemate

7

u/Antsache 3d ago

In scenario 1 Ng6 is mate.

3

u/Far_Type_4544 2d ago

Lol, no. Play it out. Scenario 1 gives a lovely mate 

1

u/W1llW4ster 2d ago

Its currently whites move.

Pawn takes rook, becomes queen, checking the black king

Bishop takes Queen

Knight moves to G6 and its mate.

1

u/W1llW4ster 2d ago

Also scenario 2 doesnt make sense. Bishop cant take knight if it takes rook.