9
\$\begingroup\$

In a few months I plan to start showing off the (hopefully commercial) game I'm working on to the public (internet). The thing is, besides screenshots and a trailer (of say feature functionality), how does one properly go about making a demo that can be protected?

Let me explain a bit. The game is a cross-platform RPG of a sort. Right now, the way I have the game coded is that it reads in map, character, etc data from files and that decides everything which allows me to expand the world/story just by config files and adding assets.

Meaning, my worry is if I make a demo version of the game, which is say the real game but then all the assets/config files/etc are removed so that its just a demo with the very first map/level. Is there a way to protect against someone just then putting out the datapack of the real game (when released) and now suddenly anyone with the demo EXE can play the real game?

The demo protection is kinda my first priority as I want the demo out there for a while before the real game is released. I can always decide on what protection methods I choose from the real game later (before release, but still later.. )

I guess it boils down to is there any real way to protect the game anyway (I don't want to restrict users to having to do any online checks because this game will be cross-platform and not require internet to play it). Last thing I want to do is mess with legit users. And I'd like to leave the assets open if possible since that just means easily patching folders and allowing modders to mess around a bit.

I mean, even if I set up a basic key license system, whats really stopping 1 person from uploading their key and a copy of the game somewhere? I've seen people talk about doing frequent updates so that the binary changes and they have to re-crack the game. But, who needs to crack the game at all when you can get 1 legit copy and then spread it around?

I'm not sure if maybe I'm missing something, I'm just trying to make sure I'm not. Does it really just boil down to:

  1. Slap basic key license protection on it.
  2. Remove asset/config files from demo
  3. Hope for the best

Any and all advice is appreciated! I'm very new to all this ; - ;)

Sorry if this is a duplicate! Couldn't find much on the demo concept.

\$\endgroup\$
2
  • \$\begingroup\$ Release it as an executable that will only read the first level file and none of the others? It's a demo not the final product. Maybe you could elaborate as to why the demo executable will suddenly have full capabilities by adding a "data pack" whatever that is? It honestly sounds like this concern is as legit as "what if someone releases the full game to somebody else" which would result in this question being about piracy in general and not just protecting your demo from being illegitimately upgraded. \$\endgroup\$ Sep 25, 2013 at 14:54
  • \$\begingroup\$ Code really is the full game, unless I wanna do a branch or something. I mean I have a lot of the functionality done and the demo I create I want to be something that even after release users can download and play with before they even buy. So I guess it is the same as the full game in a sense. I'm still wondering if I'm on the right track with those 3 last bullets points, aka there isn't much you can do. Just do those and hope for the best. x: \$\endgroup\$
    – Zyaga
    Sep 25, 2013 at 14:58

2 Answers 2

12
\$\begingroup\$

Have you considered hardcoding something like a time limit into the demo version of the engine?

The thing is, no matter how much you protect your demo, the game will be pirated somehow once it comes out. Whether it's by using the demo or just by using the main game, it's going to happen if the game's popular enough.

People who don't want to pay for your game won't pay for your game.

People who do want to pay for your game will pay for your game.

This applies to anything from the smallest indie game to the the largest triple-A title - about the only way to get around it is to make connecting to your servers not only mandatory but gameplay-related, i.e. an MMO, rather than the silly Assassin's Creed always-online DRM. Since you've already said that's not an option, I suggest you embrace it.

As an independent developer, the best way for you to get more sales is to get more eyes on your game. People that aren't inclined to piracy will play your demo and then either buy the game or not. People that are inclined to piracy may play your demo, find the assets as you described, and so on, and then still may or may not buy the game.

\$\endgroup\$
6
  • \$\begingroup\$ This is pretty much as I expected. It's slightly disheartening, or rather just sucks that that is the case, but thats just the way it rolls! I think what I may do is branch the code just slightly so you can play the default save (no load menu available at all) and then hard code that if the game doesnt recognize the main map (which has all the basic/main features available in it), then it will exit. Someone could crack it and get it to play the real data, but at that point they'll just put the real game out with serial and be done. :P \$\endgroup\$
    – Zyaga
    Sep 25, 2013 at 15:11
  • 2
    \$\begingroup\$ Even if they don't buy the game, they might have friends who see the game, like it, and then buy it. You won't be able to stop piracy (not even big budget anti piracy solutions have really been able to stop it), so I suggest you don't worry too much about it. To avoid making it too easy, you can hardcode something into the demo exe so that it only reads the first map no matter how much is there, or a time limit like @Amadeus9 said, but then you can only hope for the best. \$\endgroup\$
    – Christian
    Sep 25, 2013 at 15:14
  • \$\begingroup\$ Thanks @Christian ! More feedback that that is the correct way to go! ^_^ \$\endgroup\$
    – Zyaga
    Sep 25, 2013 at 15:19
  • \$\begingroup\$ @WeakDev, all good points here. Those that have gone down the "overly restrictive" route have only hurt their customer base. The pirates are the ones' having the easy time as all DRM is circumvented within 24 hours. Concentrate on the quality of the game and your target audience, and you can't go wrong :) \$\endgroup\$
    – Moo-Juice
    Sep 26, 2013 at 7:20
  • \$\begingroup\$ I wouldn't get too down on yourself, Weak Dev. First of all, I think you're taking a pretty great step toward alleviating piracy by offering a demo at all. I think a big reason for indie game piracy is the lack of opportunity to try it out before taking the plunge to buy it. I think it's pretty common for non-demo games to be pirated as a kind of trial. Buying is not at all out of the question if the person has a positive experience. \$\endgroup\$ Oct 1, 2013 at 21:38
5
\$\begingroup\$

Not sure what you meant by "branch" in your comment, but it's possible to make two different executables (demo and full version) from the same source code tree using conditional compilation. You can make a compile-time option to include only the ability to play the first episode. (For example, in C++, you might use #ifdef commands around code intended only for the full version.) You could have the demo version produce at least the following gameplay effects:

  • The first episode's assets are stored in a zipfile, and the demo version checks for a digital signature on this zipfile before starting. To use mods, players would have to pay for the full version.
  • Reshuffle the encoding of opcodes in your scripting bytecode when compiling the demo.
  • Completely remove the handlers for one or more script opcodes used only in later episodes. This will cause set pieces in later episodes to fail even if the file modification check and the opcode encoding are patched.
\$\endgroup\$
1
  • 1
    \$\begingroup\$ One more trick would be to hardcode the MD5 / SHA hashes of each individual demo level file into the demo version. This has the advantage that, whereas just changing a single hash / signature key is fairly easy with a hex editor, increasing the number of hashes (to increase the number of playable levels) is somewhat trickier, at least if there's lots of other data following them. \$\endgroup\$ Feb 22, 2014 at 19:29

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .