protecting data folder

Monkey Forums/Monkey Beginners/protecting data folder

adekto(Posted 2014) [#1]
i like to secure my image data so that its not just in a folder and not anyone can see, edit or steal sprites from my games.
how can i do this?


Gerry Quinn(Posted 2014) [#2]
On some platforms the images will be baked into the app, but then again there are probably tools for extracting them.

Scrambling your images in some custom way would be a deterrent. Whether you feel it's worthwhile is up to you,


Jesse(Posted 2014) [#3]
Wondering! How many games out there use someone else's assets? Or gotten away with it?
biggest fear for me would be if somebody use my assets for prototyping! ;).


TeaBoy(Posted 2014) [#4]
I think your probably be fighting a losing battle, although does it really matter if someone uses
your assets for prototyping? biggest compliment if you ask me.

Perhaps give everyone the right to use your assets that way your advertising your game
at the same time ;)


therevills(Posted 2014) [#5]
I've released several commercial games and I dont protect my media.

And if anyone really wanted to get to your media I'm sure they would be able to no matter what kind of "protection" you do ;)


ImmutableOctet(SKNG)(Posted 2014) [#6]
Here's my take on this: There are many ways people will get your assets, so why bother worrying about it? My mindset is technically a bit better oriented around online multiplayer games; but why shouldn't your game be modified by others? As purely a base to work off of, simply check the (Probably MD5) hashes of each file (Salted, usually) against a pre-generated table. From there, if a file has changed, just tell the user the game is running in a modified mode. And for online multiplayer, only allow modified versions to play together (Pretty much with no warranty). This way, people can mod your games, but they won't be able to mess with other users who haven't. Of course, this is only the bare concept, plenty of work would need to be done for security reasons. But, I think you get the idea. With singleplayer games you really don't have to worry about this.

As someone who's been modding games, making custom content for games, and overall reverse engineering for about ten years, I don't see why my games should go against my own ideals. I don't see anything wrong with people modifying my games for personal uses, or even more-public uses. This is basically a less extreme version of the open source mindset. Why shouldn't someone be able to swap out the music in my games? Why should someone have to pay for a soundtrack if they're content with ripping the audio themselves? This is a bit of an odd one, but on the topic of music and such; I honestly think people should be allowed to "rip" any audio they want from a game. If the composer releases their soundtrack(s) on Steam or any other service, that's fine. I honestly think the quality of the release and the act of supporting the composer would easily let this succeed, even if people could get their hands on the audio in the game. Crypt of the Necrodancer (Which was made using a modified version of Monkey) is like this.

To this same extent, I don't see anything wrong with just letting people pirate the games I create. Sure, piracy isn't exactly great, but it's going to happen anyway. People are willing to pay for a quality product. Those who have the money will buy your game. And with services like Steam, there's incentives to paying for the game. Plus, most people who enjoy a game want to support its developers, even if they're unable to.

What I'm trying to say is: Don't worry about this stuff, unless you're building an online multiplayer game, or require complete software conformity in some way. Let people modify your game as much as they want.

I became a programmer not only because I liked games, but because I wanted to know what made them tick. I wouldn't dare stop someone from tinkering with my software. Plus, if people are modifying your games, not only should you be flattered, but you should look into solutions to help them modify it more legitimately (Scripting for example). Companies like Valve have already shown this idea has been a successful venture in many areas. And their openness to mods has done great things for their communities. Valve specifically has many roots from mods.

To tell you the truth, I'm probably just going to go the Doom/Quake route and release the source code of my games after they've been out for a while. And like Doom, the assets would be what you're paying for (Pretty much like Monkey's setup with 'mojo' on non-free targets).

If you honestly want to be that paranoid about DRM and such, you can look into a third party tool. Probably something like GameGuard; even though it's an abomination on Windows. Or something less crazy, like Valve's anti-cheat functionality, though I'm pretty sure you'd need to release on Steam for that. Or you could always use a more restrictive version of my route, but instead of letting people play with their mods, just lock the user from playing. Personally, I hate that idea. Not only will it be cracked pretty easily, but I really feel you wouldn't be giving people their money's worth. Plus, it'd be even more of a hassle to write.

I'd recommend not caring about these things, you're better off letting people do what they want. And of course; modding and pirating are two different things. But there's really not much of a way to have one without potentially having the other.


ImmutableOctet(SKNG)(Posted 2014) [#7]
Sorry, double post; see my other post.


Soap(Posted 2014) [#8]
http://www.xentax.com/ is a community dedicated to getting into protected data. They see it as a fun challenge.


adekto(Posted 2014) [#9]
wel it seems i will be only releasing on protected platforms then


Soap(Posted 2014) [#10]
To be clear, there is no such thing really as protected platforms (except for maybe services like onlive which stream games) just that some ore less convenient than others. Anyone can get any data made public. ipas and apks alike can all be gotten into. You can obfuscate your assets on any platform, but it would only stop the novice who isn't motivated enough to figure what you did.


Gerry Quinn(Posted 2014) [#11]
One thing I would like to add: I don't know if you are an experienced graphic artist, adekto, or more of a programmer like myself. I have found I tend to overvalue my programmer art, simply because it was hard for me to make! Objectively, there is better out there for them to steal! If you are in the same boat, don't worry about your sprites.

As for Jesse's issue, why would it matter if they use your assets for prototyping, so long as they replace them in the release version?


mr_twister(Posted 2014) [#12]
I agree with the "if someone wants to steal your art, it will be stolen regardless of the kind of security mechanisms you put in place" thing you've all been pointing out.

However, that doesn't mean that making their task a tad harder isn't worth the effort. I mean, you can't just take the "we are all going to die one day so why bother visiting the doc?" approach here.
If you can protect your assets somehow, and the solution doesn't impact the game experience or the performance and it wasn't particularly hard to develop then why not?

I DO worry too about people "stealing my graphics", but my biggest concern is "spoiling" game content to the player, actually.
How so? Well, for instance a game I'm currently working on has some "secret characters" and hidden easter eggs that would stop being secret if players were able to look at the sprites and assets before even running the game... so I actually created a mechanism for encrypting the images this game uses (at least for Desktop and Android).

What you need to do, basically, is to create an encryption scheme (how simple/advanced/secure it is, is completely up to you) that allows you to encrypt and decrypt data from memory (for instance from standard DataBuffers).
Then, you'll have to make your own version of a few mojo functions, more specifically LoadSurface and the family of LoadImage functions so they accept DataBuffers instead of file paths. This is actually easy as you can read/write databuffers almost like if they were files.

After you have done that, the only thing left to do is loading your encrypted file in your game, unencrypting it to a data buffer, and passing it to your DataBuffer-ready version of LoadImage and family.

That should do the trick.


golomp(Posted 2014) [#13]
APK are not protected. Flash is not protected, Exe files neather. In fact when something is Java based you can be sure there is a way to access sources. If you really want a good protection system you can include it in a code communication protocole with -for example- a matrix entry point (and manage your own server). (i posted a contribution on it several weeks ago).


Jesse(Posted 2014) [#14]
@Gerry
I don't really care. I was being sarcastic. Note the wink.


Gerry Quinn(Posted 2014) [#15]
I missed the wink!


Salmakis(Posted 2014) [#16]
If you see someone using your own made and copyrighted work, call your lawyer and maybe get some extra bucks :)


golomp(Posted 2014) [#17]
Or consider it's a kind of advertising... After all it means your work is very good...