In the moment, the biggest tell tale sign is that the player is taking a relatively constant time between moves, regardless of the board state. Computers have no sense of any moves being more obvious than another so will take just as long analyzing a position whose next move is obvious to a human as one that requires more thinking by a human.
The end result is humans will vary how long they take to think about a move depending on the specific circumstances of the game at the moment, whereas a computer will take just about the same amount of time regardless.
As far as mirror matching, if you have a database of all games played, it’s a simple matter to see how closely your moves so far match the moves in your database of games.
They measure your play time, and they use engines to measure your “accuracy” (% of your moves that are the best possible solution).
Playing at a mechanically precise rate (despite the obviousness or the difficulty of a position) or perfect play is highly suspicious. Even Magnus Carlsen can’t play the optimal move everytime (according to engine softwares, the strongest of which should have a 96+% winrate against the best humans, according to how the elo rating works).
There are multiple ways in which a website like [chess.com](https://chess.com) or [lichess.org](https://lichess.org) would check for cheating. It might involve checking what kind of moves you are making and how long it takes you to find them. Finding the best move isn’t suspicious. Finding it over and over again in 5 seconds when you’re a 500 rated player is. Also, some moves just aren’t natural for a human player to find, not even for the best of the best without thorough analysis. Finally, they might also check if you keep switching between browser tabs, or how your cursor moves while playing.
That said: this mostly involves non-professional players. For professional players playing in an online tournament, other techniques are used. This mostly involves the use of one or (usually) more cameras to check what the player is doing during the game. When a player keeps looking in a certain direction inbetween moves, that might indicate the use of a second screen where a chess engine is running. This famously happened earlier this year in a match between GM Wesley So and GM Tigran L. Petrosian. The latter was disqualified for violations of fair play regulation. Needless to say, for a high level chess player, such a controversy is not good for your reputation and can get you banned from professional play for life.
One interesting point I read was about ‘natural’ moves rather than optimal moves. For example, if you’re a rook and a bishop up against a knight it would be natural to swap off bishop/knight to get to an end game you know you will win. Going through a complex combination which wins more quickly, but relies on no mistakes in calculation, is an indicator of possible misbehaviour!
A computer can evaluate how good a move is.
In a very raw way: There’s a complex function (we will call it G(b) ) that gives an grade to each possible state of the board (‘b’) . It take in account the pieces that are on board, the position of the pieces, etc. If the value is near 0, it means the game is balanced, if the value is above 0, it means white has advantage, and below 0 mean black has the advantage.
So, the way that computer decides the best move is something like this: Let’s say in the middle of the game, the next to move is the white player. The computer will check all possible moves, and see which one translates to a higher G(b)… BUT WAIT… Each move that white does, gives a different scenario for black, that needs to be evaluated too, so the computer needs to check which move is the best, taking in account the best response of black, and the best response of black for each move needs to take in account which is the best response of white, and it goes on…
It suffices to say that the problem grows really quick. There are some optimizations for this search, but we don’t have computers that can actually “solve” the game. However, estimating the best move by looking 20+ moves ahead is far better than what any human can do.
So, how do we check for cheaters? The idea is giving a grade for each move based on G(b) after a finite amount of moves, and we compare the grade of each move done by the player, with all the grades of the other moves that the player could’ve done, and then you can assign a probability of that being an engine. In other words: If the site sees an unknown person having a performance over multiple games that is far superior than the first rank of FIDE (Magnus Carlsen), and some games in between playing poorer than an average chess players, that’s really suspicious.
Also, we can use the time for each move. That’s a bit more complex, because it isn’t only about checking if someone is taking the same time to do every move (that’s the easy case). Some players will only use help from engine in certain moments, the site needs to identify when this happens. I don’t know exactly the method of each site, but it would be something like comparing the time that player takes to make a move with a database they have, and seeing if there’s anything odd.
Also, I’d like to add that probably machine learning algorithms may have a play in catching cheaters, so there are probably patterns that not even who designed the anti-engine system may be aware of.
Latest Answers