# How can I stop players from cheating on puzzle levels by finding solutions on the web?

In a level based, puzzle-like, game, how can we prevent the gamers to be searching on the Internet for solutions to a specific level? I'd like to let players fairly compare their scores.

I've thought about adding some randomness to the levels, but that has the downside of losing control over how hard the level is, and how it feels.

Are there specific strategies to solve this issue?

• Is it worth preventing cheating? When people replay the game they will remember the level (and solution) anyway. Oct 22 '15 at 10:25
• That actually is a non-issue. You are searching for a technical solution to a social problem - an endeavour which is bound to fail. However what should matter is that your customers, your players are happy. And if someone chooses to seek for a solution guide in the web, that's what s/he needs for happyness that moment. Thus if one chooses to search for a solution, it's a willfull decision which makes him happy. Others may willfully choose to not search for it - and are happy about that, too. Disallowing this by scrambled levels won't necessarily make you customers more happy. Oct 22 '15 at 10:26
• @planetmaker What if players want to compare their scores ? What if the game uses in app purchases for "boosters" ? Oct 22 '15 at 10:37
• @AlexandreVaillancourt they surly can be achieved... like adding additional moves in puzzles that limit number of moves (at some cost) or giving a hint if player is in the right path or not? or even giving sample/partial/complete solution to a level. Oct 22 '15 at 13:45
• Planetmaker is right. If your game is designed such that knowledge improves their score, then you must either accept that they will find knowledge elsewhere, or make it so that the knowledge is not available (such as through randomization). Otherwise, the challenge you face is as difficult as "how can I make it so that Bob can decrypt my file, given he knows the password, but someone who knows everything Bob does, including the password, cannot." In cryptography, they literally change the definition of "who someone is" to deal with this, because it is unsolvable. Oct 22 '15 at 18:25

People reading about a game in the net is a problem for all games, not just level-based puzzle ones. For instance a simple search can give you detailed walkthrough/cheatsheet/solutions/guides to any game you can think of. Even games like Fifa or LoL that obviously has no definite solution in the first place. But that being said you can more or less control people checking for online material. Here are the few tricks I've seen being used:

1. As you said adding some random elements to your levels. And it really depends on your game how it can be achieved. For example a game about guessing numbers can choose a random number each run, and give different hints about that hint, while maintaining the general idea of how to solve that puzzle. Another option is to have multiple variations of each level having minor but critical differences, and ask player to solve one of them each time. Obviously it's the best if each player has a single set of levels persistent through his own play meaning a single player shouldn't see two different variations of same level. The list continues and you can think of your own solutions, but this really is the hard answer.

2. Some games offer solution guides themselves, either online or in-game. This will reduce the change of players looking online for solutions, or others offering detailed walkthroughs. An example of this would be "machinarium" in which you could play a short minigame and get the solution to each chapter. You also can purposely miss some few details in the solutions you provide, this will kinda force people to solve the puzzles themselves, while discouraging them from looking online.

3. Perfecting your difficultly curve. Most people don't want to use online guides, They only ask for help if they are forced to. Since playing puzzle games in more about proving yourself you can do it. By perfecting your difficulty curve you can decrease the chance of people getting frustrated with puzzles and thus, reducing the chance of them seeking solutions from other sources.

All that being said, people will cheat, whether you like it or not. But using these methods you can only reduce the number of times they cheat and that's the best you can hope for.

• Puzzle games may come in different forms... like point&click games (in which the first solution fits perfectly) or more traditional puzzles like "cut the rope" or even adventure games like "machinarium". As long as the game is about solving a problem, it can be considered a puzzle. Oct 22 '15 at 11:18
• Regarding the last point in your answer and already knowing this is not specific for adventure games, I will venture and post a link to a really nice look on why games suck or why games don't suck (adventure games to be specific). grumpygamer.com/why_adventure_games_suck Oct 22 '15 at 15:26
• A key to this: none of Ali's solutions stop people from cheating. They merely encourage people to not cheat. That is why they can work, while approaches to stop cheating fail. Oct 22 '15 at 18:26
• @PieterGeerkens every game of chess might start similarly, but they don't progress similarly. This means puzzle games are inherently different from chess. And even consider a game of chess, if you are playing, and some other player dictates your every move, THAT IS CONSIDERED CHEATING. That's what happens with looking for solution online. You don't look for just a hint, when you look you find the entire solution, and for most games there is only one solution. Oct 23 '15 at 21:38
• @PieterGeerkens There's a key difference between chess and most puzzle games: chess is designed to have two players competing against each other, most puzzle games are based on one player solving a pre-determined puzzle. If you want to compare puzzle games to chess, the knight's tour is a much better comparison. Oct 25 '15 at 11:08

If a player cheats, it's likely either because they're frustrated with a particular puzzle (and want to continue progressing) or they're disinterested in a particular puzzle and just want to get it over with. Either case may be indicative of a problem with the particular puzzle's design.

It helps a lot if your mechanics allow for more than one solution to the same puzzle. A good example of how this can play out in a positive way is the game SpaceChem, made by Zachtronics. There are actually two separate score metrics (often with competing requirements, meaning that optimizing one requires reducing the other.) Because there are so many different solutions to each puzzle, copying a solution off the internet really doesn't impact much (just changes the histogram slightly for how many players achieve each score.) Of course, some of the puzzles in the game are fiendishly difficult, so maybe it's best that players can cheat if they want to.

On a side note, the bigger issue in the above is validating that the solution is actually a real solution to the puzzle and not just a faked set of score data. The developer has a dev post on this where he describes a server-side validator that checks each solution against a model of the game logic prior to accepting the reported score. This might actually be of more concern for you (if you want to allow score comparisons) than whether players can duplicate eachother's solutions.

• "Either case may be indicative of a problem with the particular puzzle's design." I feel one thing needs to be stressed real hard - you can't make a game where every single level is liked by ever single player of the game who likes the game in general. There will always be people who prefer one kind of levels over another and unless your game is one short level long you can't get everyone happy. So don't go around changing levels if out of many people who play the game only one has problems with it! But do change if there are more dislikers. Oct 23 '15 at 8:30
• When multiple solutions to the puzzles exist, extra points for a new solution (i.e., never posted before) come to mind. To reward creativity. Maybe a gallery with community voting on known/spectacular solutions is a thing to consider. Depending on the type of the puzzles... Oct 24 '15 at 17:55

Possibly not the answer you might seek. However that problem does seem like a non-issue. You are searching for a technical solution to a social problem - an endeavour which is often bound to fail.

However what should matter more is that your customers, your players, are happy: If someone chooses to seek for a solution guide in the web, that's what s/he needs for happyness that moment - also those websites are free advertizement for your game. Thus if one chooses to search for a solution, it's a willfull decision which makes him happy. Other players may willfully choose to not search for it - and are happy about that, too. Thus comparisons of the speed in which fixed level-based games are played-through inevitably can be cheated or skewed by players finding solutions prior to actually playing it.

Further, disallowing this by scrambled levels won't necessarily make you customers more happy.

If you want to allow a universal comparison you have to go for really randomized levels - but then the scores of course are also not directly comparable as one random set might turn out easier than another. Of course you can still increase a difficulty during different levels by adding further elements which constrain solutions and as such will pose a greater challenge than available in lower levels

• "but then the scores of course are also not directly comparable as one random set might turn out easier than another." Technical solution to this issue: run an algorithm to test various solutions and then have the score based on how many solutions there are and how short/simple the solution is. For example, for maze games a combination of Djkstra's algorithm (to find the shortest solution) and counting the number of branching paths would provide a measure of complexity. Oct 25 '15 at 11:04

2 parts to my answer: one actually addressing the question and one suggesting the question needs questioned.

Potential Solution

One idea that springs to mind is holding regular 'blind level contests'.

The general premise is that you have a separate score board only for these contests where by once a month the newest contest level is made available and players update their game to install it. Scores for this level can then only be submitted for N amount of time after the update, say 30 min - 1 hr depending how complex the game is.

You could take this a step further and have multiple level releases throughout the day, some sort of aggregated scoring at the end.

It goes without saying this depends greatly on the business model of the game and whether it will have regular updates / releases or whether it is meant to be fairly static as in released and forgotten about. However this style of contents should allow your core players who will care about how they compare to others to take part and find out.

Philosophical note

Is looking up the solution online really cheating?

If I want to be the best at something, say Mario Kart, then I'm going to do all the research I can to find out everything I can about the game so that I am the best. If I put in the effort to find out the shortest routes, the quickest characters, the best items and so on and use this knowledge to beat all others then why am I a cheat just because I didn't work it out myself?

To take it back to your game consider Portal, a level based puzzle game. If I want to be the fastest at it then it is just common sense to see what the current fastest player is doing and try an improve on it. I wouldn't say this is cheating.

You see further standing on the shoulders of giants after all.

One way to reduce the effect of the solution's availability on the score is to count time spent on each level and use it when calculating the score.

Examples:

• remove X points every second
• add bonuses: create time intervals, e.g. if the player finish the level between 0 and 1 minute, (s)he win Y points, and less points between 1 and 2 minutes, etc.

With these method, a player with the solution will be able to get an high score only if (s)he's quick, so the score is not based on the solution only, skills and quickness of action are needed too.

• This isn't going to stop players looking up solutions online, this just means they'll be looking for the quickest solution instead of just a single solution. Oct 25 '15 at 11:00
• @Pharap yes, but they won't be able to reproduce the solution quickly if they are bad at playing.
– A.L
Oct 25 '15 at 11:02
• At which point the 'puzzle' game is no longer a 'puzzle' game, it's a 'skill' game. Oct 25 '15 at 11:15
• @Pharap yes, it's not a puzzle once you can find the solution in a book or online.
– A.L
Oct 25 '15 at 11:19

A potential solution to this would be to anonymize the levels and swap out the order, so they can't say "Level 10", or "The final encounter", they'd only be able to provide screenshots.

Of course with that solution, eventually the community would sort out their own nicknames for levels based on anything they could.

You could try doing something like a hint system, so that instead of getting frustrated they could get a hint from in-game at the right time, knowing that it won't be giving away too much and that they'd feel good for not cheating. You could even disable the hints for extra points.

My advice would be to randomly generate your levels, but take some sort of special measures so that each level is an appropriate difficulty.

For example, suppose you can create an algorithm for estimating how hard a particular random level will be for a human to solve.

Further, suppose that the player will play ten puzzles.

Whenever the game loads, generate ten puzzles, and then sort them using score from the hardness estimating algorithm, so that the player gets the easiest puzzle first, and so on.

Alternatively, there may be a way to control the puzzle difficulty when randomly generating it. For example, for mazes, some generators have a user selectable "branch factor" which controls how likely a corridor is to split.

This is a problem that don't realy have a solution. If people want to cheat it they will! It as simple as that.

Why people cheat level? There is a couple of reasons. First the level might be too hard for them or versu the previous one. It might just be something they can't concieve correctly how to solve, what ever.

There is a simple solution that can benefit you and your players, just let them skip it. Why cheat it when you can simply skip the too hard puzzle and come back at it later without blocking your progress in the game?

Why it benefit both of you? The player can obviously keep playing and you get a direct feedback about that particular puzzle. If X% of the player skip the level Y you can see that a majority of people find that puzzle too hard. If they just cheat it you would never know this. This let you adjust the difficulty of your game based on the feedback users give you while they benefit from their actions. Win-win!

You could make the puzzle appear random by tying it to the machine's MAC address or similar piece of data. That way, you can control the difficulty, but unless/until someone figures out both what the key is, and the algorithm, it will be impossible to go online to get the solution.

• You don't have to go through that much trouble. you can simply generate a random number, on your apps first run, and save that random seed for later use. Of course there are also some games that won't benefit from similarity between different plays, and pure randomness suits them better. Oct 23 '15 at 10:59
• Using the MAC address would be a bad idea because some MAC addresses would naturally produce more complicated puzzles. It's a good gimmick for a one-off puzzle, but not something you'd be able to keep drawing upon as a constant supply of new puzzles. Oct 25 '15 at 11:20
• @Ali.S The original post did not want a random number. This might be close, but if the goal was to make it repeatable by a player (or at least a system), this would handle it. @ Pharap you can hash the MAC address to get as small of a seed as you want. And it doesn't read to me like the original request wants a constant supply of new puzzles. Oct 27 '15 at 1:48

I felt compelled to write something. I do online riddles all time, have written them, and care very deeply for the development of intriguing riddles. I have to say that the accepted answers to this as mostly garbage. In my findings, numerous people cheat--it's just the human condition. People get stuck and it's a test of their own honor. At least 50% and probably close to 90% cheat at some point in the completion of riddles. There is a significant difference in asking for a hint and there exists sites of just riddle solutions.

Unfortunately I don't wish to be incredibly explicit here because part of beating cheaters is being sneaky about what it is you are doing to nab them. My general suggestion is--cheaters give up really easily and are lazy, change the answers (the methods of solving are usually elaborate--keep those the same). Also, charge a very small but some kind of fee/donation to play. The first x levels can be free, just at some point make sure your audience is the audience you want. (i.e. free of cheaters) Perhaps even tie this to a user account and log what they guess as answers so when they guess answers that make absolutely no sense (but match a list of answers from before) now you know who cheated. When people have skin in the game they feel less likely to cheat and cheaters want a free lunch--if it stops being free now they're not only feeling bad for not being able to solve it, they also have no interest in paying for something they get no value out of anyway. That's the best suggestion I can give that requires the least effort.

In short, adding some processes to capture cheaters and ridicule them is a good strategy.

I will never understand the need to cheat at a game, especially riddles because the entire thing is a journey--there is no time limit, everyone solves it differently, and the entire 'game' and fun is the process of moving logically (or illogically as the case may be) to the solution. I had a friend that would literally buy a new game and immediately cheat at everything...so a lot of what has been said as other answers here just don't fit the psyche I see and have to deal with when designing stuff like this.

You can make the puzzle search resistant by avoiding key words associated with the puzzle. You can practice disinformation by posting fake solutions to the puzzle in all the usual places so anyone looking for the solution finds a flawed solution and wastes their time till they give up without ever finding. Basically you create a haystack of fake solutions to bury the valid user posted solution so finding the real solution online is a harder puzzle than figuring out the game problem solution.

• This won't work. Once the general internet population figures the solution out, it is going to be spread around the internet. Fake solutions posted by one guy (or gal) will never overpower the sheer magnitude of the internet crowd. Basically, if the answer exists, it can be found by google. Fake solutions or not. Oct 25 '15 at 16:43