161

Do not store those strings, store the (cryptographic) hash of them. A (cryptographic) hash function, like encryption, is a way to turn a string into "gibberish" (called hash), but unlike encryption, you cannot get the original string from this hash (unless you can brute-force it or the hash function is broken). Most (if not all) hash functions takes a ...


105

What you are trying to do is both futile and pointless. It is futile because there is no way to properly hide information which is on the user's machine. Anyone dedicated enough will find it. You can make it harder, but you can never prevent it. If you encrypt it, then you need to store the encryption key and algorithm somewhere. No matter how many layers ...


65

If you absolutely need to control whether the player can see something or not, possibly for multiplayer anti-cheat or if it's key to your game mechanics, then completely obscure them. This way no amount of gamma correction will make them visible. Not the best example, but in Closure, areas not being lit are in complete darkness: ... if you could reliably ...


49

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 ...


38

Obvious answer, there's no way to prevent this. If they can see it with their eyes, they can see it with their phone. However, here's two strategies mitigating this: Don't show the entire maze at once. Scroll the maze, show it only in segments, etc. This will prevent a single picture from capturing the entire maze, however, it won't prevent video and does ...


31

When you look at the countless other questions about preventing cheating in multiplayer games which are on this site you will easily see that there really is no technical measure to prevent client-sided cheating. All you could do is provide less information about the cloaked entity. All the client needs to know to render the distortion effect is that there ...


28

Embrace cheating and modify your mechanics Cheaters gonna cheat - you can't avoid that, and lots of other answers here cover that in enough detail. But, you can certainly edit the mechanics of your game to make the obvious cheating routes like taking a screenshot simply pointless. You don't want your cheat routes to be so easy that a majority of players do ...


28

I think I can offer a few solutions. Set a minimum level to trade. This would essentially prevent players from making accounts just to collect the free stuff, as players will have to put in effort into the account to trade. I'm not sure how your game is set up, but this can be implemented though setting a level cap to build the "trading market building&...


22

If your game is singleplayer: it's not possible, but you shouldn't care. If your game is multiplayer: then you should store all your important state on the server, which is much harder to hack than a local machine.


20

You can't implement a shimmer effect without making it easy to exploit... but what if you used an indirect means of showing that someone is around, a means that also applies to visible players? For example, what if players leave footprints, and "footprint created" messages are sent from the server independent of player location? Every player leaves ...


18

The canonical solution to handling the type of cheating you describe (which I mostly hear called ‘account farming’ in the context of other games) is to de-incentivize having multiple accounts. Obviously make sure your ToS calls it out as bannable, but you also need other things to make it less attractive to do this. Possible approaches I’ve actually seen ...


13

It can't be done, https://security.stackexchange.com/a/4639 is about DRM, but the same applies to anything which the user doesn't want on his computer including Anti-Cheat mechanisms. (Which has the tendency to be even harder to do than DRM.) But why would you, really why would you? It's your customers computer, not yours, the customer does with his ...


13

Server-side hit detection isn't to prevent aimbots, it's to prevent cheaters who simply tell the server "I hit!" regardless of where they are aiming.


11

What I'd suggest is adding a small amount of white noise to the rendered output. In bright scenes this won't be visible, in dark scenes with ordinary gamma setting it's similar to what cameras or the human eye actually do in reality. But for someone who cranks up the gamma, this noise would be a strong nuisance. Not only won't dark objects become properly ...


11

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 ...


11

Option 1: Occupy their hands This might be a bit left-field, but what if you forced the user to keep their hands on the keyboard the entire time? For example, you could give them a task like typing the letters that appear on the screen, or using WASD and IJKL to keep their character balanced. Anything that keeps their hands busy will make it more ...


10

There are a couple of Windows API functions that might do the trick: SetMonitorBrightness and SetDeviceGammaRamp. However, this will be hardware-dependent; probably not all monitors support setting the brightness programmatically, and different monitors may produce different results, etc. Moreover, it doesn't sound like a very good idea. Locking the gamma/...


10

One of the reasons why there are protections is that reading the game state could allow bots to know the state of the game and act accordingly. For instance, grinding in a MMO: if the "bot" knows what mob is around, it can send commands to the game clients to select the mob, hit it until its life is 0, pick up the loot, rinse and repeat. With this, even if ...


8

Whichever you do, it doesn't matter. If you rely on clientside calculation of anything you will get hacked. All the "anti-hacker" tooling has AFAIK been thoroughly penetrated, new versions often themselves being hacked in a matter of hours after release. Given that, browser games are a major PITA IMO (poor usability) though they do offer ease of installation....


8

That can be tricky if the auto clicker has a Random var for the interval inbetween the clicks. There are a few things you can do to detect/stop these guys: 1) Disable the part were the clicking occurs, if people need a bot to do some action it is simply too boring for a human being. (my no.1 suggestion, as it is not in your business to bannish players, and ...


8

Depending on the complexity of your game, verifying if an action is legal or not might require to backtrack large parts of the game. An example: Player A says Player B can't play that card right now because he has no ResourceX. PlayerB says he has plenty ResourceX. Who is right? To find out you would simulate the whole game again from start to finish to ...


8

You might think it's hard, but the way you came up with is the way to do it: send not the points, but e.g. all the moves of the game, and then the server recomputes the game and calculates the gained points (this is just one of a million reasons why developing multiplayer online games is harder than developing single-player games)


8

Scrambling the transmitted score is probably worthwhile. To avoid cheat-engine type stuff, you can always scramble it in memory too. If you're storing seven variables, each of which, %10, is a digit, and you add a random number of 10s to each variable whenever a score changes, then it will be tricky to find a variable that matters. You could also get quite ...


8

Equal value trade system Every item (pet) has a value. Each trade needs both parties to offer similar value. Let's say we have three items: A (worth atm 500), B (worth atm 400) and C (worth atm 60). And let's say that trades are allowed up to a 100 'value mismatch' (this could also be a percentage). This means that A can be traded for B, but C can not be ...


7

Combining Randomness You need an algorithm that allows each player to contribute to the final random number in such a way that he can change the final outcome to every possible value, whatever the others have contributed to the random number. This way, even all other players may try to work together against a single player, but can not decide the outcome (...


7

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 ...


7

You can't. Whatever code runs on the computer owned by the user is under the users control. Anything you program can be circumvented or patched by a determined enough hacker. The only solution to avoid cheating in an online game is by calculating all game mechanics on the server. When the game is offline, then you have no chance at all.


7

Have a launcher application which creates a copy of the actual game executable with a random name and then starts that process. Make sure it deletes all the old copies on the next launch. But what you are trying is futile. Any client-sided cheat prevention method can be circumvented. You can not protect a program from another program which runs with the ...


7

Looks like you have a "nice problem", one that comes with a game getting fame. The solution I've been considering would be implementing a currency, say gold, that you get periodically for logging in and "being active" on the site. If you're currently having issues with users creating "fake" accounts just to get more loot, the ...


Only top voted, non community-wiki answers of a minimum length are eligible