Q:

Demo (and real game) Protection

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:

Slap basic key license protection on it.
Remove asset/config files from demo
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. 

A:

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.

A:

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.

