Hiding savedata to prevent save backup

Started by
24 comments, last by jbadams 6 years, 8 months ago

Hi

Im making a rougelike with permadeath and want to make replacing the savedata harder (a little bit) to prevent backing up the game state. Its a simple binary file and i dont need encryption.

NOTE: i dont want serverside solutions or to discuss why i want to prevent savegame backup.

1. Just name the save "sound.bak" or something. Really simple but also very easy to "crack"!

2. Save the data so some silly folder like "C:/appdata/flashdata/fakecompany/sound.bak". But ugly to create folder on the users computer and what if this folder is cleaned out (since its not supposed to be affiliated with the game)? Then the user will loose the progress.

3. Save a timestamp to the savefile and keep a registry of the timestamps somewhere. If the savefile is replaced they will mismatch and you can refuse to load that savegame. But if the player backups the registry then? Which means i have to "hide" the registry file as well.

4. Similar to no3 but using windows registry for some timestamp check. Would this improve anything?

5. Any way to just make the file itself harder to see in the folders?

What would you suggest? Or something else? Im aware a cracker would find a workaround in minutes but i just wanna make it less tempting for an average player.

Thanks!
Erik

Advertisement

The only thing I can think of is to make it harder.

You dont want to be writing over actual data/exe (might damage them by malfunction) files, so dummy ones will have to be created/used.

Huge files (or very numerous small ones most of which you just 'touch' to fake their modification) that are too onerous to copy/restore - how big is too big though (wasted space)?? The save data itself should be encrypted to make it hard to spot within other files..

Combining some file stuff with registry entries to make it more complicated (have to save/restore more than a few things for it to be 'valid') might disuade some people not to bother (and some follow-the-leader pattern between the elements that randomizes which of serevarl of the ~87 dummy files (with changing filenames/subdirectories) need to be copied/restored to get all segments of the save data (add in some encoding of the registry data to not give easy clues). Mutating directories within the game's own base/root directory hopefully wont flag antivirus scanners etc...

Registry entry shell game might likewise be part of it (and leave a progression of the old no longer used entries to muddy attempts to trace the registry data) -- but remember the more complex it all is the more likely it will get whacked if the user turns off in the middle of a 'save' or does restores of various kinds.

Thats all just to make it harder. A dedicated cheater will figure out what changed, BUT will it be worth their time to routinely cheat if you have some mutations thrown in so they can't write a simple batch program to do their copy &restore ?? Doing it by hand every time might get 'real old, real fast' to many potential cheaters.

--

Funny is having dummy save data that looks right, but isnt actually used just to throw the dumbest cheaters a loop, and (heh) online forum 'cheat help' telling them that those ARE the right files.....

--------------------------------------------[size="1"]Ratings are Opinion, not Fact

You will only annoy your users by trying to force your will onto them.

The moment you save the data is the moment the user will be able to copy it, so maybe just dont.

Though the more you annoy them the less they recommend your game, so maybe just let them as its only a singleplayer game.

I would say don't put your time and energy into solving problem that may not exist. Ask yourself - is it really key feature of the game to not allow users cheat? Why? Do you have some sort of global leaderboard that you need to ensure is honest?

Some people just like to cheat. It is fun for them and as long as they affect only their own experience (AKA game is not online) you better make it easier for them to backup save and put your time into something else (content, performance, ....)

Any local solution wouldn't work with risk of user breaking their game or even OS - messing with registry may be risky, especially if done by kid who just "read somewhere" what to do.

Your players will love you more for good game than for "good save hiding feature". And if it's obvious you have roguelike game with permadeath most will just play it that way.


NOTE: i dont want serverside solutions

That's all very well, but anything that you do on the client will just be a momentary roadblock to an experienced techie. And once one person figures it out and posts it on the web, then... you are done.

There are good reasons that Diablo's hardcore (permadeath) mode is saved to the server.

Tristam MacDonald. Ex-BigTech Software Engineer. Future farmer. [https://trist.am]

What if I change hard drives and can't find your save files to properly copy them over? Do I file your game in the "broken" bin, and tell all my friends to steer clear of it?

Anything you put on the local machine can be undone, without exception.

People will even go so far as rolling back a disk image, or restoring from system restore or backup.

There simply is no reliable way except going to a server which you said you don't want to do, was there a reason for that?

So... many people log in just to state EXACTLY what i wrote in the post i have no interest in and already know. Not very useful.

Im asking for simple hiding tricks. Comments on the ones I suggested or other ideas are useful.

@Brain

I dont want online simply because thats more mess (and possibly costly) than I prefer to handle for this feature:) Also it forces the player to have internet connection/be online.

If I was to do this, I'd start with a fixed size save game data file with a fixed number of save slots. This one file will store the save game data.

When saving to that file, you can also create a hash based on some of the save data. This hash could be stored in a separate file in a different directory (i.e. standard user folder) or stored in the registry. A timestamp could be part of the hash. Then when loading, you could compare the hash to the save data, and in event of mismatch disallow the loading of the data.

Obviously anyone who figures out that data is stored in two places can get around that. But you did say you only want to make it more inconvenient for the average user.

And for the record, I also think this 'feature' is a bad idea. It seems like something that would just annoy people, so not sure why you want to include it.

@Shpongle

Yeah that seems to be the best method.

I just dont want to leave the data to obvious to meddle with (not to INVITE the player to take the easy way out first thing). I dont see how it would annoy any player just playing the game. You can still save ingame, you just have to go an extra mile (or meter) to meddle with the game data.

This topic is closed to new replies.

Advertisement