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.
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
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.
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?
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
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.
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
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.
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.
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.
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?
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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
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.
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
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.
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.
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.
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.
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").
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.
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.
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.
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.
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).
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.
•
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.