how to prevent save cheating? (for games where saving is NOT allowed)

Started by
54 comments, last by TheComet 10 years, 2 months ago

Hi

In many games such as xcom or others, there is a big point in the player not being able to go back if something went "bad". Actions should be permanent. The punishment/difficulty for "failing" something ingame can differ, but generally you don't want the player to be able to cheat.

However it seems to be hard to technically prevent save cheating (the user just finds and backups the "savefile" and restores it later). Any good way to actually stop this from being possible? Hide or nest files or something? I mean, if i save progress in the exe instead of in a separate "savefile" the player can just backup the exefile...

(And plz dont just answer "if the player wants to cheat, let him/her". That doesnt help me.)

Thanks!
Erik

Advertisement

It only takes a single person figuring out how your save system works and telling the entire world about it to ruin any client-side protection you try to use.

The only way to prevent the player from manipulating their save data is to perform all important actions (even gameplay) on a server you control. In other words, the way an MMO does it. The cost of actually doing this scales with the number of players you have, even if the game itself isn't an MMO. It will also piss off the players, because they will have to be online all the time.

It all boils down to: How much effort and money are you willing to spend to stop cheating?

The player has control of the executable and the execution environment. It is physically impossible to prevent while the player is in control. As an extreme example they could run as a virtual computer and if they are unhappy they can roll back the virtual computer to that earlier point.

You can deter savefile cheating by things like encryption on save files, online checkpoints against an online server you control, or perhaps a combination of details saved in multiple places that must all match, but even these can be overcome.

The only way to remove that ability is to move data from the player's equipment to yours. That means at least periodic online play requirements, and you only need look as far as Diablo 3 and the SimCity Reboot to see how well players react to that sort of thing. (There have been thousands of others, D3 and SC are just recent major examples.) There is a very vocal minority who can completely destroy your game's reputation and will happily take hactivist steps like DDoS attacks to sabotage your servers if you don't let them roll back their save files.

I miss the times where games actually came with cheats built-in...

no serverside stuff plz:)

I know its impossible to stop it completely for someone who really wants to mess with the files on their computer. But any concrete tips on making it less easy?

Can i hide files so the user doesnt see them? Or stamp them somehow so copies can be detected ingame and not be loaded?

Thanks again

These ideas will only make it more difficult for the casual user to tamper with your files, and putting more effort into protecting your files may actually be taken as a challenge to be overcome -- if your game is popular these will be bypassed -- but some ideas in no particular order:

  • Hide your files from a casual inspection by storing them in an archive format. You could roll your own custom format, but to save time and effort it's pretty common practice to take advantage of an existing format such as zip or .7z archives, with the extension re-named to deter and misinform casual users; if you're up for it, you might also make some custom modifications to the format. The goal with this is simply that when Average-Joe Gamer browses to the game's directory he doesn't see a list of files to tamper with.
  • Encrypt the data. Obviously because your game will be able to decrypt it this will pose almost no challenge at all to a skilled cracker, but may help to deter Average-Joe. To save your development time it's easiest to just use some simple and well known encryption method; remember that you're only trying to deter the average user anyway, so something more extreme is probably a waste of time and effort.
  • Check if the data has been tampered with when loading by storing special values amongst the real data, hashing the file to check that it hasn't been replaced, etc.
  • Store the data in multiple places and check that all copies match.
  • Store some pieces of data in different places so that any tampering will involve changes to multiple files.

None of these will present any real barrier to a skilled cracker -- your game needs to be able to access the data, and they can simply hijack the game's functions to do so themselves -- but may help to deter a casual user. Note that if your game becomes popular some of the aforementioned skilled crackers will distribute patches or cracks that will let the casual user also by-pass these protections with a simple one-click procedure or file-replacement.

Take some simple measures that don't involve a lot of development effort on your part, but honestly I wouldn't waste a lot of time and effort on this.

...and sorry, I know you didn't want this particular suggestion, but why not let the player cheat if they really want to? If they've paid for your game, let them enjoy it however they see fit! :)

Hope that helps! smile.png

- Jason Astle-Adams

I don't think it's a case of making it less easy for them to do as less desirable. If you allow the player to save whenever and wherever they like they'll always be tempted to save just before a difficult bit and reload if they fail. Instead you could have a limited number of save locations that are sufficiently far apart that going back to a saved game would lose a significant amount of progress. This would at least discourage them from going back to a saved game even if it didn't prevent it.

Thanks guys! Some good points here for sure

Make it possible to get through the game very very easily if you have access to cheats. If the player uses cheats, all challenge is removed and the game is no longer fun. The player cannot easily limit himself to a "fun" amount of cheats because it would be a completely arbitrary limit controlled by the player and again challenge is removed.

The only option left is to play the game without cheats if you want to be entertained.

o3o

Make it possible to get through the game very very easily if you have access to cheats. If the player uses cheats, all challenge is removed and the game is no longer fun. The player cannot easily limit himself to a "fun" amount of cheats because it would be a completely arbitrary limit controlled by the player and again challenge is removed.

The only option left is to play the game without cheats if you want to be entertained.

People have fun in their own ways. Taking fun out of the game on purpose is not a good idea generally.

Breaking a game that was not paid for is one thing, and most players understand that even if they don't like it. But breaking a game as a consequence of natural play deviance doesn't make much sense.

It almost feels like childhood bullies who target any deviance from height to weight to clothing to anything else they can identify and punish just because it is different. I have always felt games should encourage variance and individuality and experimentation, not punish it.

Let someone cheat and break the rules on their own sandbox all they want. If they want to turn their own sandbox into a litterbox that is their choice. In multiplayer you don't want at allow griefing behavior unless it is available to everyone. Savefile cheating usually fits the first case.

This topic is closed to new replies.

Advertisement