• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
suliman

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

55 posts in this topic

"There is no lock that can't be picked. There is no cipher that can't be deciphered." The only thing you can do is make cheating a tedious bore so the average player will prefer working within your game parameters instead of trying to circumvent.
0

Share this post


Link to post
Share on other sites

Thanks all, but i repeat:

 

1. No serverside stuff, too messy and complicated.

2. I dont care about hackers, im not even a pro myself, i just want to deter casual users from being lazy and cheat past hard parts of my game (and make carefulness part of the intended gameplay)

3. Therefore, no encryption needed. I use a binary savefile, thats good enought. 

4. I already said saying "let players do whatever they want" doesnt help me.

 

Hawkblood: Wouldnt you just backup that file as well? And if you want to return to a previous state of your campaign you return the backed up savefile AND the file keeping track of the timestamps?

Edited by suliman
0

Share this post


Link to post
Share on other sites
The player would have to KNOW about the time stamp in the first place. Remember, the average gamer wouldn't normally think of keeping track of such things. You also make another layer of difficulty by storing the savegame time stamp info in a file that's not in a folder the player would think to look in (not the "savegame" folder).
0

Share this post


Link to post
Share on other sites

Thanks all, but i repeat:
 
1. No serverside stuff, too messy and complicated.
2. I dont care about hackers, im not even a pro myself, i just want to deter casual users from being lazy and cheat past hard parts of my game (and make carefulness part of the intended gameplay)
3. Therefore, no encryption needed. I use a binary savefile, thats good enought. 
4. I already said saying "let players do whatever they want" doesnt help me.
 
Hawkblood: Wouldnt you just backup that file as well? And if you want to return to a previous state of your campaign you return the backed up savefile AND the file keeping track of the timestamps?


NTFS ADS is likely the only thing that will work for you. The fact that the alternate streams are not copied along when the main file/folder is copied is what will produce the behavior you want.
0

Share this post


Link to post
Share on other sites

I think the more pertenent question, from a game design standpoint, would be if it is a signle player game, then why care? You are only being evil towards the player. It should be an option, not a requirement. The player is not your enemy, they are your friend. If they want to cheat, then so what. The only person it affects is themselves. Save yourself the trouble and time and just simply don't worry about it. That's my opinion at least

0

Share this post


Link to post
Share on other sites


The player is not your enemy, they are your friend

I have played some games that I cheated on. I regretted it and lost interest in playing. It's like reading the end of a book and deciding that the ending sucked, so the rest of it must suck as well. Never mind the fact that the parts before the end could have easily turned you misconception of "suck" into "genius". But because you never read those parts, you decide getting the next book in the series isn't worth it. This would be the fault of the individual, but that doesn't stop their opinion.

 

It really depends on how much effort you want the player to go through to cheat-- not "keeping the player from cheating".

 

That being said, I have also played games that had bugs causing the inability to continue without some sort of "cheat" or "work around". But the OP is more of the question of "save game integrity".

0

Share this post


Link to post
Share on other sites

So, its impossible to provide security where a malicious user has control of the machine, and while I know that you said you don't want to be told to just accept it, you have no other choice. In a single-player game where there is no interaction between players, then there can be no harm in accepting it, a player cheats and that affects their experience but not the experience of others. Its on them, and there's nothing that can be done about that.

 

However, if there is even brief or tangential interaction between players (even something as simple and occasional as connecting to a server to get the current high-scores list) then you have a starting point as a baseline. One could imagine a scheme that ties the high-score to a time, and obfuscates through encryption both the high score list and the save file (which is checkpointed against the highscore timestamp). This will not outright prevent disconnected cheating, but it will make it a lot of trouble, and for their efforts the dishonest player is still prevented from manipulating their way onto the high score table. This is reasonable security. and if the player never connects to the online highscore table, the program can be made in such a way that it simply reverts to their own personal high-score table--and in this way it respects their right to consume your game without being encumbered by DRM or other activation schemes. One could imagine more complex peer-to-peer schemes that might work similar to crypto-currencies like bitcoin.

0

Share this post


Link to post
Share on other sites
Let them cheat their way through and then they don't feel like playing it again after the first round
OR
prevent them from cheating their way through and making them have hard fun while playing it and maybe thereby giving it good replay value (if the game was designed well) . . .
. . . i choose the latter.

@suliman: aren't the hackers the people that crack your game and give the cheats to the lazy, 'cheat-through' players?
0

Share this post


Link to post
Share on other sites

I'd probably just put a hash for the save file in the registry. Yes, your users could backup the registry entry, but I wouldn't care. (Though I guess I also wouldn't even bother preventing cheating so maybe this isn't good enough for you.) Anything beyond copying files will exclude your regular lazy users from messing around, while many people who know about the registry might also know about things that are more complicated than that, too. I wouldn't really try to compete with the hackers, especially without a server. It'll never work.

 

However, I didn't know about that ADS thing, and if it's simple to implement, I'd try it.

 

If you did use a server, you could simply store hashes instead of whole saves. Still, I wouldn't want to make a game that required an online connection or potentially delete people's saves if they're some issue that prevents the server update when the save game is modified. Any kind of write-in-two-places solution might have to deal with what happens when your game crashes during a save. That's another reason I wouldn't bother with this. Any bug in this system will make people quit your game and complain online about it.

0

Share this post


Link to post
Share on other sites

Let them cheat their way through and then they don't feel like playing it again after the first round

I wouldn't try to simplify fun as a consequence of challenge. I have played hours and hours of GTA using cheats, and I still love playing it, with or without those cheats.
Not even starting to talk about elder scrolls games, which I ended up memorizing several console commands...

Challenge is fun, but so is experimentation. Usually, games have enough challenge, but not enough experimentation; onboard cheats adds a lot of experimentation to a title.

The only thing you can do is make cheating a tedious bore

I am one of those who finds changing games' rules quite fun. If, by any means, there is a protection to bypass, I'd probably have an even better time.
In my case, the only way to make exploiting boring is making it easy. Edited by dejaime
0

Share this post


Link to post
Share on other sites

Let them cheat their way through and then they don't feel like playing it again after the first round
OR
prevent them from cheating their way through and making them have hard fun while playing it and maybe thereby giving it good replay value (if the game was designed well) . . .
. . . i choose the latter.

@suliman: aren't the hackers the people that crack your game and give the cheats to the lazy, 'cheat-through' players?

 

[b]OR[/b] they fail and fail and fail and since they can't do anything but start over or give up, they give up and call your game crap out of frustration.

2

Share this post


Link to post
Share on other sites

However, I didn't know about that ADS thing, and if it's simple to implement, I'd try it.

Doesn't work. A skilled hacker knows to look for alternate data streams.
 
Trivially, the RAR compression format knows about ADS. Compress the files with RAR before moving the file out of NTFS format and the data is preserved.  There are also a large number of utilities that will split and merge ADS if you need to transfer the files through other means.


While I agree that it's pointless to try to implement foolproof client-side protection, no utility I've tried on Windows (7zip, WinRAR, Windows built-in .zip) has correctly detected my test ADS on my folder. I haven't tried ADS-on-file.

(Edit) Nevermind, missed some required command line arguments. Now it's finding it properly. The option is also available in the GUI in the 'advanced' tab as "save file streams". Edited by Nypyren
0

Share this post


Link to post
Share on other sites

Let them cheat their way through and then they don't feel like playing it again after the first roundORprevent them from cheating their way through and making them have hard fun while playing it and maybe thereby giving it good replay value (if the game was designed well) . . .. . . i choose the latter.@suliman: aren't the hackers the people that crack your game and give the cheats to the lazy, 'cheat-through' players?

OR they fail and fail and fail and since they can't do anything but start over or give up, they give up and call your game crap out of frustration.
Actually, 'fail and fail and fail' won't really be possible in my games, neither will checkpoints nor cancelling autosave be possible. You fail, you face the consequence, move on and . . . There'll be different things in my games and if isn't implemented before i start making my games, it'll be new things.
One more thing, shouldn't the player play within the developers programming? If not, i would have loved to keep going straight in the gtavc but unfortunately, you get magically turned around in the water.
Should you let them implement what you didn't program into a game? What if what they implement your idea for a sequel?
I'm just asking.
-2

Share this post


Link to post
Share on other sites

 

 

Let them cheat their way through and then they don't feel like playing it again after the first roundORprevent them from cheating their way through and making them have hard fun while playing it and maybe thereby giving it good replay value (if the game was designed well) . . .. . . i choose the latter.@suliman: aren't the hackers the people that crack your game and give the cheats to the lazy, 'cheat-through' players?

OR they fail and fail and fail and since they can't do anything but start over or give up, they give up and call your game crap out of frustration.
Actually, 'fail and fail and fail' won't really be possible in my games, neither will checkpoints nor cancelling autosave be possible. You fail, you face the consequence, move on and . . . There'll be different things in my games and if isn't implemented before i start making my games, it'll be new things.
One more thing, shouldn't the player play within the developers programming? If not, i would have loved to keep going straight in the gtavc but unfortunately, you get magically turned around in the water.
Should you let them implement what you didn't program into a game? What if what they implement your idea for a sequel?
I'm just asking.

 

 

Often times, this kind of thing, in the form of modding, props up games and gives them life far beyond the finite amount of content that you can provide.  There are still people buying Half-Life 2 (2004) and Rome Total War (2004) & Medieval Total War (2006), at least in part because of the community-created mods that exist for these games.  Hell, half of the Valve IP is derived from popular Half-Life mods: Counter-Strike, Day of Defeat, Team Fortress.

 

Sure, an active modding community places more strain on you to produce a better product the next time around.  But you could also look at it as free A/B testing, and at worst, even if a mod becomes much better than the content that you created(not an uncommon situation... I don't think any of the games I play regularly are unmodded), users still need to purchase the base game to run the mod.

Edited by ericrrichards22
2

Share this post


Link to post
Share on other sites

 

 

Let them cheat their way through and then they don't feel like playing it again after the first roundORprevent them from cheating their way through and making them have hard fun while playing it and maybe thereby giving it good replay value (if the game was designed well) . . .. . . i choose the latter.@suliman: aren't the hackers the people that crack your game and give the cheats to the lazy, 'cheat-through' players?

OR they fail and fail and fail and since they can't do anything but start over or give up, they give up and call your game crap out of frustration.
Actually, 'fail and fail and fail' won't really be possible in my games, neither will checkpoints nor cancelling autosave be possible. You fail, you face the consequence, move on and . . . There'll be different things in my games and if isn't implemented before i start making my games, it'll be new things.
One more thing, shouldn't the player play within the developers programming? If not, i would have loved to keep going straight in the gtavc but unfortunately, you get magically turned around in the water.
Should you let them implement what you didn't program into a game? What if what they implement your idea for a sequel?
I'm just asking.

 

 

If they want to change the game that they bought from the original, I don't care (speaking of strictly single player games). They are increasing their fun. Sure, I put out a game and I intended it to be played a certain way, but if they change it to make it more enjoyable for themselves then who am I to deny them that?  That would be like deriding anyone who ever writes any fan fiction. They are taking something you made and making it more enjoyable for themselves.


You are treating the player as an adversary instead of a partner.

As far as implementing my idea for a sequel, they are more than welcome to do that. However, their version of a sequel could be vastly different than my idea of a sequel, and if I the, the original creator of said universe, denounced it, then I doubt anyone would put any credence to it. It could even be spun off as a sort of split in the timeline. It would force me to do a better job. It would be like if someone made a Mass Effect 3 that doesn't have a balls ending that turns the entire series to poo soup. Also, see fan fiction example above.

2

Share this post


Link to post
Share on other sites
Cheating is something an individual decides on a personal basis. This is not something the programmer can absolutely prevent. Playing a game within the designed parameters usually gives the best gaming experience (usually). It certainly gives the player a more “pure” experience of your creation.

We have morphed this post into an existential discussion of “should we allow them to cheat”, not “how to stop them from cheating”. The truest answer to the OP is: You can’t prevent, you can only deter.
1

Share this post


Link to post
Share on other sites
I've been reading this post and thought I'd give my 2 cents.the original poster was asking about how to prevent save cheating, basically not allowing the player to save just before a hard task to stop the player from replaying that part if he or she made a mistake. It's impossible to stop this for a experienced hacker with time, but I think the original poster just wants to target the typical user so the comments left by others seem good enough.

When it comes to whether or not any of this kind of cheat prevention is needed, it depends on the design. Honestly, if they save just before something difficult so they don't have to replay the entire level each time, is it really cheating as they still need to complete the level. Altering the save file to skip things should always be prevented is a whole other story.

If the levels are short not being able to save makes sense as the user won't have to redo hours of work. In this case, simply don't allow saving mid-level. The save file always points to the beginning of an unstarted level.

If the levels are long, let them save whenever. I remember years ago when I played Final Fantasy 7. I always saved before hard parts because if I didn't and had to start over, i'd have quit the game. But I ended up finishing the game twice, the second time trying to 100 percent the game.
0

Share this post


Link to post
Share on other sites

Often times, this kind of thing, in the form of modding, props up games and gives them life far beyond the finite amount of content that you can provide.  There are still people buying Half-Life 2 (2004) and Rome Total War (2004) & Medieval Total War (2006), at least in part because of the community-created mods that exist for these games.  Hell, half of the Valve IP is derived from popular Half-Life mods: Counter-Strike, Day of Defeat, Team Fortress.

 
Sure, an active modding community places more strain on you to produce a better product the next time around.  But you could also look at it as free A/B testing, and at worst, even if a mod becomes much better than the content that you created(not an uncommon situation... I don't think any of the games I play regularly are unmodded), users still need to purchase the base game to run the mod.

 

No modding support will be in my games.
Isn't modding cheating? I read that users have no right to mod a game except the game devs add support for it.

-1

Share this post


Link to post
Share on other sites
I think this is more like the player doesn't have a "save" option-- the game just saves at certain set points in the game. The OP (I think) just wanted to know how to prevent those automatic save points from being "backed up" by the player. If you have the option to play a "hard core" mode where "dead is dead", then this is a legitimate concern to the programmer.
0

Share this post


Link to post
Share on other sites

No modding support will be in my games.

Isn't modding cheating? I read that users have no right to mod a game except the game devs add support for it.

 

You are correct that users have no right to mod a game, they also have no right to not mod a game. They can either do it or they cannot do it. They couldn't sell it or distribute it legally without permission from the copywright holders of the software that they based their mod on (as far as I understand). This does not stop them from doing it for themselves.

Modding could possibly be in the form of creating/performing a cheat. In the context of the discussion, it is cheating. What I am saying is that in a strictly single player game, where what one player does in their game has NO bearing whatsoever on a player playing their copy of the game, cheating is irrelevant and you are wasting your time trying to prevent it. The only one you are satisfying with your attempts to prevent cheating is yourself.

 

The idea of creating a game is to make something that someone will have fun with. I fail to see the problem of players altering a game so that they enjoy it more is a bad thing, and such alterations have zero affect on the other players of said game. I see it as a good thing. Are they altering the experience I planned for them? Yes. Is this bad? No.

 

You are trying to give a ball to a group of kids so they can play basketball, but get upset when they decide to kick it around and play soccer instead so you run out and say "No! You must play the game I want you to play, basketball!". I give them a ball with the intent for them to play basketball, and when they start playing soccer I would be estatic because they are having fun with something I gave them.

My point with all this is to save you time by having you not worry about something in your design I think you should not worry about and to help you create a game that will be more fun for people. I think you have placed your game/idea on a pedestal and think it a kind of personal insult to yourself and your creative idea for anyone to not interact with it in the way you want them to.

0

Share this post


Link to post
Share on other sites

1. Make it so stupidly freaking complicated that people will look at it and say it's not worth the time.

2. Online database - save and load to/from it, and only to/from it - permitting that your server software doesn't get leaked or something and someone goes and makes their own server emulator...

 

You could like, encrypt the save data with a key - don't forget to generate 500 thousand keys at this point and maybe 500 different operations that looks like save-game encrypting, then maybe make it so that it loads the key from a bunch of randomly injected assembly code in the class that starts up the game, or the menu or whatever from the last time you saved, into an empty key object in memory somewhere, which is used to load the save...

 

hmm. I guess when you save, it could create like 5,000 "fake keys" along with it, where only a few of the injected commands actually build the real key...

 

I don't really know, this is just some crazy idea that would fall in the "stupidly complicated" category. I guess there's no way to really stop people from reloading old saves unless you ran the actual game from the server...

0

Share this post


Link to post
Share on other sites

In the past what I have done to prevent saving is having a separate file that acts for a "checksum" to check if the file has been altered. You may also wish to compress a file or store it in an obscure location. You can use ids within the save that make no sense for a human to read. If you want to go REALLY far then you could add them all together.

 

As far as it goes for databases, at least when I am writing php code for websites I try to keep the least amount of information as possible on the client side. A good sample I guess of keeping your business side of your application separated from you client side would be cakephp's Model-View-Controller architecture that I believe Iphone also uses.

 

Hope this helps someone. Honestly I hate cheating in games and I try to keep things away from players unless it can be intentionally modded.

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0