Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I feel like I've been playing against it a lot in chess.com, with the tremendous amount of cheating that is going on online, every 1 out of 6 or 7 games is an engine user (I know because I report them, and they get banned).

It's great to have a better engine, but I feel that would benefit the most the online chess community is not a better engine, but an open source cheat detection system, if that's even possible.

I wouldn't know how to build one, but I think that is a lot more important for chess right now, still it's great to have a better engine so congratulations and thank you to the Stockfish team.



It's odd that it would be 1 out of 6 or 7, because when high elo streamers like Hikaru or Chessbrah are doing speed runs, they very often go on a 100 win streak, which sounds exceedingly unlikely if the odds of facing an engine user would be 1 out of 6/7.

An engine user would definitely beat them, unless they were using it sparingly of course, which can be, but I don't think it would be that obvious for you in this case as well.

There are examples where they face an engine and it's obvious, but it doesn't seem 1 out of 7 times.


I guess the problem is that most users that play with an engine don't play bullet/blitz.

I do meet a lot of engine players on 3 minute blitz but then I just do very fast bullet moves and all of a sudden I'm losing with a 90 second advantage that cannot be recovered if the user persists on playing with an engine.


Maybe, but there are also few rapid "speed" runs, like from Daniel Naroditsky, while he has also faced cheaters, it doesn't seem 1 out of 7.

And Daniel Naroditsky definitely would have good internal cheating detection even when the user does it sparingly, as he can basically understand most lower rated opponent moves, and if it seems too good for this rating, he can know this from just few moves.

Check Daniel's rapid speed run account: https://www.chess.com/member/ohmylands

145 wins and 3 losses. The 3 losses had, were lost purposely, if you look here in 3 or 4 moves with 5 accuracy, for whatever reason (to drop ELO?). https://www.chess.com/games/archive/ohmylands?gameOwner=othe...

If there were 1 out of 7 opponents using an engine, he would never have 145 wins against 0 losses.

And again for bullet and blitz there are also quite many examples with 100W to 0L.

If you'd look at all the speed run videos Daniel has done, it definitely doesn't seem 1 out of 7.

Daniel also posts all the times he's facing a cheater to youtube, same with Chessbrah and others as it makes for a good content, good views as people are always interested in seeing a GM playing against a cheater.


Different crowds probably.

Not sure what the aim of cheating is, probably going from a rating of 1500 to 2000 and the status that it brings. In the end you still win 50% of the games, just against higher rated players.

Playing against a GM would reveal your cheating instantly, it seems. It's like robbing the police station :)


People like steamrolling. It's part of why higher rated players smurf (for theirs and/or their audience's enjoyment) and do 'speedruns' in chess and most online games with ranking.


Hikaru and Chessbrah are playing at GM level. It'd be difficult to cheat at this level. Every player tends to recognise every other player, and it takes time to climb to this elo. A far more representative example would be to observe games from a NM or IM. These guys often bump into cheaters. 1 in 6/7 isn't unrealistic.


> playing at GM level

Not always. Hikaru does speedruns[1] using an alt acct with entry-level ELO to race to ELO 3000. I've watched a fair bit of this, and seen him encounter the odd cheater or suspect game, but much nearer 1% than 10% of the time.

1: e.g.: https://www.youtube.com/watch?v=iOd222WIEk8


I don't disagree with what you said, but for context: when these players do speedruns they typically start from 600 ELO and work their way back up to GM, so they face players at every level as part of that 100-game streak.


>It's odd that it would be 1 out of 6 or 7, because when high elo streamers like Hikaru or Chessbrah are doing speed runs, they very often go on a 100 win streak, which sounds exceedingly unlikely if the odds of facing an engine user would be 1 out of 6/7.

I would guess that even with the engine you would take some games to rank up to that high so if chess.com is good at banning cheaters most of them would probably get caught sooner.


Yes, but those streamers often start from 500-600. And often when they do actually face those cheaters, they have gone undetected for 100+ games, maybe at 2000 elo, and they seemingly only get banned because of the publicity they face against the streamer. Meaning chess.com cheating detection by itself hasn't managed to detect them for so long, and who knows how many are there wild in the open managing to do more than 100s of games, without facing any publicity and doing it a lot more intelligently than the obvious ones against the streamer.


Even against engines, a pro player will often win due to the other player running out of time due to the time loss in every move from copying the engine. You often see the game being slightly equal with the pro player slowly falling behind but then as the time starts to run out for the cheater they completely fall apart.


But those pros will usually make some sort of subtle (because they don't want to openly, straight up accuse unless chess.com has actually banned the opponent after) comment that is clear they think they are playing against a cheater, but the odds are definitely not 1 out of 7. I have been addicted to YouTube chess videos for quite a while now...


Maybe it's not an engine but a GM on a 'speedrun'. I am pretty sure I couldn't tell the difference. :)


Speed runs are 3min game, or even less.

It's much hard to cheat in 3minutes games. The chess engine takes somes time to think about the next move


Chess engines destroy humans at speed chess. The time use creeps in if you're using a low-tech method of cheating (i.e. manually punching moves into your engine and the website).


AFAIK cheaters still manually input moves into engine, so cheating on 3min blitz against a super GM won't so be easy.


I've built a cheat detection system for chess few years ago. Our client paid for creating a chess portal to play chess for money (not an idea I'd put my money into - and it's been dead after few months). Anticheat engine has worked like that:

- simulate a game using stockfish

- for each move (except few moves at the beginning) compare the move made by player with the list suggested by engine - if the move chosen by player is on the list generated by engine, than give that player some points (depending on the position of the move on the list)

- do some math considering player's ELO and some other stuff (I can't remember exactly).

Definitely not an ideal solution, but also open for improvements. Btw it wasn't my idea - chess players provided the exact algorithm, so it must have been known.


I mean, such a system already exists when players do analysis of their matches. The thing that makes a move identifiable as a blunder is that a chess engine evaluating the board before and after the move.

It's also worth keeping in mind that you will sometimes see players match the best engine move 95% of the time or more at the 800-1000 elo's and they're not cheating, it's just their opponent is blundering and the next move is obvious.

So specifically, you have to find when players matched up with engine moves, where the engine decided on an optimal move by looking far into the future.


And after a player has been labeled as a cheater, start matching them with other cheaters exclusively.


A small problem with using Stockfish is that cheaters may use other programs in order to not play like a top engine. For example, Stockfish would laugh at some old versions of Houdini, but Houdini still outplays any human easily.


Just wanted to propose this approach. But I wouldn't call it cheat detection. It's more of "make sure my opponent is not better than X". It could even be integrated into the game by showing the players "forbidden" moves, which are too good for the current game-level and are therefore not allowed to be played.


At what rating do you play? Around 1200 on chess.com? I don't see cheating as a big problem online for two reasons but I only play on lichess, not on chess.com.

First of all it's not that bad to play against a cheater once in a while. If you compare it with other games, playing against an engine is a huge disadvantage but will not fundamentally change the structure of the game. You are still playing chess, but against a superhuman opponent. You don't want to play against the computer but it's not as bad as the other player abusing a glitch in the game.

Secondly, I'm guessing that cheaters will mainly play at the entry level strength (1200 on chess.com) and a bit above that. If you are seriously cheating you will be caught very quickly. So maybe if you change your rating you might encounter less cheaters.

Edit: I just looked at your comment history to find out what your rating is and apparently you are playing (for an online game) with extremely long time controls? That's probably the reason why you are encountering many cheaters. The player pool for long online games is much much smaller, so you will automatically have more cheaters who just recently signed up for the game.


> If you compare it with other games, playing against an engine is a huge disadvantage but will not fundamentally change the structure of the game. You are still playing chess, but against a superhuman opponent

It wastes your time. Playing against a human is a different experience. If you actually wanted to practice against an engine, you would do so knowingly. With some possible benefits such as takebacks etc. (since computer is not a rival, just a training tool).

It wastes your rating points - if you play rated games. Obviously not everyone does, or cares about their online rating; but I do to an extent. For one, while rating isn't a goal in and of itself, it's still a convenient form of tracking my progress, and cheaters distort this measure.

Finally, it wastes your nerves. However insignificant this may be in the scheme of things, I think that most people still dislike being cheated or lied to (in any way or form) simply out of principle, and find that frustrating.


Your rating is recalculated when a cheater is found.


Eventually, sure - if they get caught (as opposed to eg. just get bored and leave the platform before it happens)


I thought something like lichess actually compares the player's moves against something like Stockfish and if it matches too closely, they flag that user.


> I feel like I've been playing against it a lot in chess.com, with the tremendous amount of cheating that is going on online, every 1 out of 6 or 7 games is an engine user

This statement seems a bit funny because in order to have a good idea that they cheated, you would have also had to been analyzing the game with the chess engine.

Regardless, unless you truly an amazingly player, nearly any chess engine made in the last 15 years will destroy you and incremental improvements on stockfish have absolutely not effect on that.


> This statement seems a bit funny because in order to have a good idea that they cheated, you would have also had to been analyzing the game with the chess engine.

You analyze the game after it is played. When your opponent managed to have a 99.9% accuracy in a 1500+ ELO blitz/rapid game, it's highly unlikely that they managed to do that without some computer assistance.


You have to be a bit careful there.

I'm 1500+ ELO, play blitz/raipd, and get 100% from time to time.

It's usually because I played some book moves and then my opponent fell into an opening trap that I knew and they didn't [1] and I knew exactly how to play for the win to checkmate, because I've done it before many times and remember the post game analysis from them. I didn't come up with the moves on the spot.

[1] I get tons of wins with this one, especially since Queen's Gambit came out on Netflix. https://en.wikipedia.org/wiki/Queen%27s_Gambit_Declined,_Ele...


How do you figure out they're using an engine? Are there obvious human moves and AI moves?


Sometimes yes, computers play a certain way and make moves that simply aren't intuitive to humans, especially not lower rated players.

However the most obvious cheaters are more easily given away by time between moves. When they take the same time between every move whether it be a deep positional move or an obvious recapture, you can be quite sure something fishy is going on. Sometimes they can have literally 1 legal move and still take 10 seconds to find it.

A good player using an engine sparingly however would be very difficult to spot in online chess, especially in a single match.


> Sometimes they can have literally 1 legal move and still take 10 seconds to find it.

Perhaps a nit-pick: they need to discover the legal move, and discover that no other moves are possible, right? As a rather basic chess player myself, I can imagine I might spend some time on this depending on the situation.


I think the idea is that an experienced player would recognise this situation immediately (usually there is only one legal move because you are in check, or there is only one move that doesn't put you in check), or even ahead of time (knowing that their opponent's move brings them in check) and just play the only possible move straight away.

Of course a beginner would take some time to spot this, but it's unlikely you would confuse a beginner for a cheater, since a beginner will likely make many sub-optimal moves and spend lots of time thinking in general.


Depending on the situation, the chess website/app might show you that there is only 1 left. Already, when in check, you can't play a move that doesn't stop or cancel that check.


Sounds like bullet chess is the only answer


I don't want to advertise cheating or give any info about cheating, but a "good" cheater can also cheat in bullet and may be even go more undetected if they were to mix moves well.

Note: I have not cheated myself, but I can definitely see a way it can be done. I'm not sure if it would be good of me to describe the process of course... Just think what input you can have and what output you can get if you were to do this programmatically and you can very well imagine if it's possible, there are also existing tools for that. You don't have to open a chess engine in another window and manually do the movements, if you know how to script.

In bullet, I think may be, you could technically even use something to do "anti blundering", meaning you will blunder a lot less, because engine will just check whether it would be an obvious blunder, and block your move. May be you just allow few blunders, and I imagine it would be undetected. Sorry, again for brain storming about that. It is fascinating topic though. Engine could be running on a lower depth and it could be more sort of positional engine that does not do magical engine moves, but is trained on human players and using neural network mostly. Maybe it will just help you do theory openings. And you won't be able to charge anyone for cheating for following opening theory.


At the end of the day it's akin to the "true randomness" problem. How do you prove a random numbers generator isn't truly, or fully random? Or that chess moves are "truly human", and not computed by an engine. You can only approach this probabilistically.

I also think the cheating detection algorithms can be beated, and I believe I could do that. Why do they still serve their purpose, more often than not?

To me, it's inherently linked to the very nature of online cheating. It's essentially a futile, nonsensical activity. The only gratification is an illusion of intellectual superiority, whose worthlessness is so transparent that it can only attract people who don't get to experience the sense of intellectual superiority pretty much anywhere else. As harsh as it may sound, your average cheater is rather stupid. That's why it isn't really difficult to catch 90% of them.

I don't rule out there are some cheaters who do it out of intellectual curiosity, but that would be a statistical outlier.


My ideas based on what you've said now are simply don't play ranked matches online, just develop your skills against humans and engines.

For real ranked matches, participants must have 360 webcams and so on showing they aren't cheating


Well, obviously it's impossible to know with 100% certainty. Some heuristics include:

* Some cheaters will just 100% match the best engine moves. If a player consistently does exactly what Stockfish would do that's an obvious giveaway.

* Some cheaters will be manually copying moves between the chess website and their engine; in high-speed games ('blitz' and 'bullet' chess) their abilities plummet when there are only a few seconds left on the clock, because they can't copy fast enough.

* Similarly, a player who takes 5 seconds a move whether they're pounding out a basic book opening or making an inspired move in an extremely complicated situation will raise suspicion.

* Some cheaters will just be improbably good for their known background. A few weeks back some billionaire beat five-time world champion Vishy Anand in a charity game (where Anand played a bunch of different games at once) which is the chess equivalent of Mark Zuckerberg outrunning Usain Bolt.

* Chess engines will sometimes make moves that even the top humans fail to see. All the action is happening on the right of the board, and some innocuous move on the left of the board produces a perfectly executed forced mate in 15 moves? Some people will look at that suspiciously.

Of course, a sufficiently careful cheater could cheat without triggering any of these heuristics - a player who only relies on the engine for one or two key moves can easily be undetectable.


I guess a basic implementation might compare the moves performed by the player under evaluation against the move that an engine would suggest?

Presumably an excellent player might often make the same moves as an engine, so this measure alone isn't going to be perfect. But it could be a starting point. You might also look at the player's historical performance and watch for suspicious changes, or perhaps look for patterns in the time taken to play the move?


It's hard because often cheaters will play 'clean' until they get behind or to a particularly ambiguous spot, when they will cheat for one or two moves.

The really hard part of chess is what to do in the mid game, once you're off your scripted opening, there is still lots of material, and neither player has any significant vulnerabilities. A computer is useful here.


You could even just use computer to do near perfect theory openings and you can not charge any one for cheating here, and you can still gain more ELO there. There's so much variance you could do. One does not have to alt tab to input and mirror chess engine moves with Stockfish. You can use neural network only, which is trained on human players, and have a programmatic way for AI to have suggestions on where to move show up on your screen. Time delay being pretty much non-existant, and maybe even good script can pre-move very obvious things for you. Maybe the AI will give you 3 non blunder moves, and you can yourself choose which makes the most sense or just block you from obviously blundering, but maybe like only 90% of the time.

I don't like giving out ideas here, but I feel like these are obvious ways one could cheat and go undetected.


> You could even just use computer to do near perfect theory openings and you can not charge any one for cheating here, and you can still gain more ELO there.

That would be hard to distinguish from someone memorizing an opening book. So hard to detect.


On lichess, it’s possible to compare your current game against a book. I feel like it’s really improved my understanding of opening theory.


I guess you could compare the outputs for different engines with that of a "suspicious" player - if their moves match exactly, flag them, if it happens too many times, ban them. Something like that.


Someone who plays a lot against a computer will often pick up the computer's style.

But sometimes a computer will make odd moves no human would ever make. I've been playing against an ios stockfish app to relearn how to play, and when it gets behind it starts throwing material away to delay the inevitable; a human would more likely keep the material and hope the opponent doesn't see the path to victory.

One way to detect use of an engine is to look for moves like this, though if it could be done algorithmicly then that same algorithm could be used to make the engine play more like a human.


Why not just pair them with an engine? If they win they are cheating.


Maybe you could evaluate based on changes in player's performance or ELO. If they rapidly begin advancing, it could be more likely they are cheating.


There is such an open source system: https://github.com/clarkerubber/irwin. It seems that the last commit was some years ago, so it's either very stable or no longer used. At any rate, this is what powers anticheat on lichess.org.


Why do people bother using an engine? Is there money on the line? It just seems pointless to cheat at a hobby.


Good luck. Those of us in other gaming spheres have been running up against this problem for aeons now. We're not winning. I can only imagine that detecting cheating is even harder in chess.


How can you tell it's an engine user?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: