Too obvious Again, its fairly trivial for a cracker to remove a checksum routine. If the cracker tests his crack and it breaks the program, the cracker says to himself... ahh! There must be a checksum test somewhere. Then its fairly easy for him to remove that test too. This is why I said it makes your job as a programmer much harder too - if it's done properly. The trick is to make the program break in not so obvious ways, such as making a level impossible to complete, but not the first level - make it later in the game. Pop up a message telling the player the game is an illegal copy after an hour or so of play - make sure the message isn't plain text. Use a combination of things. Don't use the same checksum routine for each of these things - use multiple checksums. This is why it makes the programmers job much harder, but its only worth doing if its done properly. It causes QA problems too.
We have both a reg key and a full version to download. If one person puts a full version online, the only protection we have against them is a key. It's worth having both.
The non-obvious part was that mark that makes you unable to install or run the game if it exists. The mark or marks can and should be well hidden. Those later on breaking features will merely delay the making of the proper crack, but then again so will propably anything that you do if the cracker still tries after the software broke.
Here's my favorite antipiracy story - (may be urban legend). The makers of a 3D CAD program put in some subtle changes that reduced the accuracy of each load/save when they detected a crack. The program seemed to work fine - but users ended up with a jumble of vertices if they saved enough time.
IMO that's a very *bad* antipiracy measure as it suggests to the pirate that the program is a buggy piece of crap and no one should *ever* pay for it. Not a good way to convert them to paying customers. Setting things to happen after a delay is a very cool idea, but you need to be certain that it's clear why the effect is occuring.
I have to agree with papillon, but for a different reason. That fact is that real, normal, non-pirate, potential customers can end up with pirated versions of your software -- especially when you target the casual gamers. They don't always know that don't have a legal copy and if your program does subtly destructive or inexplicable things they will just pitch it. You want these people to know that they have an illegal copy and that they should no longer get software from wherever they got their copy. So, I think you want to be very clear about why things aren't working. But as a couple of people metioned, you may not want to pop up a message on startup as it is much easier to crack that way. All that said, I am firmly in the "do no more than neccessary" camp. Crackers will crack and I have more programs to write.
Nobody is talking about commercial solutions such as Amarillo. I used to here people say Armadillo was the only way to go since it saved you so much time and was so cheap. Is this no longer the case? Does it not work as well as it used to?