Experienced Points

Experienced Points
Building a Better Kind of DRM

Shamus Young | 11 Sep 2009 17:00
Experienced Points - RSS 2.0

I've decided to sell out. After years of purple-faced railing against DRM, I'm switching sides. I'm going to sign up with the major publishers and help out the pro-DRM forces.

As a gesture of loyalty to my new corporate masters, let me help design the next generation of DRM. No, I don't mean just sitting down and making more SecuROM. We've been doing that for years, and not getting much of a return on it. I'm talking about rolling out some devious stuff that will save us money and be a pain in the ass for pirates.

1. Don't Do the Check at Startup

Crackers are in a hurry. They want to have their names on the hottest 0-day titles. They want to release their version of our game before the street date. They're not in this for the game on the disc. They're not trying to beat our game, they're trying to beat us. (And rival cracker groups.)

As it stands, the process of cracking a game is "easy:" Just try to run the game, find the bit of code that stops the program from running, and disable it. Repeat until the game works. Okay, there are layers of obfuscation and trickery layered on top of that, and it gets pretty technical, but that's the basic idea. Doing the check up-front just makes their job easier, since they can iterate faster. Trust me, as a programmer I would much rather try to crack a CD check that happens at startup as opposed to one that happens at some unknown point two-fifths of the way through the game. And hey, if the full version of the game works for a couple of hours and then fails, it acts kind of like a demo.

2. Be Sneaky

If the game detects they're running the pirate version, then don't just bring the game to a grinding halt and boot them out. That's too obvious. Instead, have the game change subtly at some point. One small studio dabbled with this idea and had the game crash at a level change. That's a decent idea, but in practice it's probably a bad idea to have pirates clogging up our support system. Batman Arkham Asylum did one better by taking away a basic move, thus making a section of the game impossible to beat. That's better than crashing, but I think we can really fix their little red wagon if we make the failure virtually undetectable.

Instead of taking away the ability to jump, just make the controls really unreliable. Have the jump button be responsive only half the time. A pirate will have no way of knowing that he's not done cracking the game. He'll just think the controls suck. It will make the game extremely difficult (a player will only have a 1 in 32 chance of making it through a sequence of 5 jumps), without giving away the trick. Make it so the check causes different failures at different points in the game. Maybe the Wizard can't use spells on the final level, or the auto-save and checkpoints don't work after level six if they're playing as an "evil" character. Or maybe a door will claim to be "locked" and send them hunting for a key that doesn't even exist. There is no way the cracker is going to play the game all the way through with all character classes and all endings if they are too busy analyzing every moment in the game,trying to figure out if they died because of a mistake or because the DRM is screwing them.

The beauty is this: Unlike our previous DRM schemes, pirates will suffer, paying customers won't.

Comments on