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


106

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


37

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


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


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

The client is in the hands of the enemy. (The Laws of Online World Design) Really, the only way to beat most cheats is to have the client be a "thin client", that is: To only act as an input and output device, and to never give it more information than it precisely needs. This won't stop automation and this won't stop passive information gathering and ...


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


10

None ready that I know of. Commercial (expensive) systems like PunkBuster exist, which constantly scan memory locations for changes, asserting that they haven't changed by impossible amounts or at impossible moments in time. You could implement something like this yourself, by occasionally asserting that the changes to the contents of your variables make ...


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


10

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


8

If you are worried about locally modified code, then how can you be sure that someone hasn't simply modified your notification code to send a static list of MD5 hashes, the same ones you expect? In fact, you don't even need code modification to do this, you just need a fairly basic proxy (assuming no SSL, but even that could be faked with a bit more effort). ...


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

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

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

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


7

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


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


6

I suppose you could have the server send a hash of it's executable to an authentication server, to ensure it hasn't been modified been modified, but that's about it. I wouldn't worry too much about it, if you're going to let players have their own servers let them do whatever they want with the game, they purchased it. You can make it difficult to cheat, ...


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