I am planning to make a small game in the near future. How can I minimize the chances of it being pirated?
Make the distribution of your game as simple as possible and release frequent updates (with free new content)
eg. Angry Birds on the iPhone. Even if somebody pirates the game first, he might decide to buy it just because of the auto update function. (+ the new free content will give a feeling of getting much more for the money and that you are a decent developer)
On the PC I would use steam. It is great for small developers and the only distribution path more convenient than pirating.
Pricing is far less important in my opinion. A game for 9.99$ on steam will be bought far more often than one for 7$ on a private homepage.
And most importantly: don't focus on the pirates and potential losses. Concentrate instead on the paying customers, quality, and increasing the revenue.
Copy protection is useless. Whatever you do, it will be cracked because your product will be in the hands of the bad guys. The only people you will be inconveniencing are the people who purchased your product (look at what happened to Spore).
Besides, pirates are usually the people that buy the most. The best you can do is make your product reasonably priced, don't piss off the consumer, make a good product, and make it accessible (steam, app stores, etc). Last one is very important. People pirate cause its hard or inconvenient to get it legitimately.
Your game will be cracked, and it will be pirated. Having said that... Keeping the pirates at bay is an old article about an old game for an old system, but it still makes for interesting reading, and may give you some ideas to keep a game 'uncracked' for a little while.
This article also covers the basics of obfuscating function calls in c/c++.
Just to add two minor points to others' answers:
First, another reason why your game WILL be pirated is that pirates' resources are greater than yours. Maybe there are a dozen people trying to crack your game, for every one person on your dev team assigned to the task of "copy protection." You just cannot compete on man-hours.
Second, even professional big-budget AAA games get cracked, often within a week or two of release. For major titles, that may be worth the extra expense: an extra week of sales for a million-plus seller is big money, easy to justify spending a few tens of thousands -- not to keep pirates out for good, but to buy an extra few days of release sales. If your game is more modest in budget, and you don't expect to make the majority of your sales on release day, it's probably not a good use of your time from a pure cost/benefit analysis.
Third, remember that SOME people pirate because the company doesn't release a demo, and they're using this as a "try-before-you-buy" approach. It doesn't matter what you think of this practice ethically, but if you release a reasonable gameplay demo that serves this purpose, you will at least cut out one chunk of piracy.
As others have stated, once your game is out, it really does not matter if they have the source code or not; it will get cracked. However, you can do a lot to make sure it doesn't burn you.
The first recommendation I have is for you to make it easier to purchase/download the game than for a pirate to torrent and crack it. For example, steam makes it very easy for me to buy a game, so much so that it takes far less effort to buy a game than to crack it. Therefore, if you make your paying customers jump through hoops to play your game, by putting in some crazy DRM or registration system, you could be shooting yourself in the foot.
Another thing to consider is that you should not think about pirates as lost sales. These people may never have bought your game even if no crack existed. But more importantly, they may actually be helping spread the word about your game to people who may not even know about it. Their friends wont necessarily pirate the game. Also, some pirates may enjoy your game enough to actually consider buying it.
Here's my position on piracy and copy protection, from the standpoint of an end user:
- You can't eliminate piracy. Pirates will eventually defeat any anti-piracy feature included in any game. As such, the only situation where DRM will be effective is against casual users trying to make copies for the purpose of distribution to friends or otherwise, without the specific intention to crack a protection system.
- A corollary of this is that attempting to stop more complex attempts to illegally copy content is useless. Therefore, using advanced techniques beyond what is needed to prevent casual attempts to copy the content is wasted effort and is likely to interfere with the experience of legitimate users. A simple DRM system that only aims to block casual copying attempts is the most that can be considered useful. Alternatively, consider not including any DRM at all.
- Ensure that you do not disrupt the experience of legitimate users. This includes installing any low-level software for the purpose of implementing DRM, as this can interfere with the performance of users' computers. Doing so would only worsen piracy and decrease the perceived value of the game. Using only a simple DRM system, or not using one at all, can minimize disruption to legitimate users.
- If a non-genuine copy is detected, limit functionality to that of a demo, but do not interfere with play otherwise. Many games are designed to covertly disrupt gameplay, such as adding enemies that cannot be defeated, upon detecting that the game is non-genuine. While this can makes pirates less likely to attempt to crack the game, this can confuse users and cause frustration. Instead, notify the user that this copy of the game appears to be non-genuine and and limit functionality to that of a demo. Do not interfere with gameplay in the demo sections, and display a screen at the end of this content similar to that of a normal demo version of the game. This will reduce frustration by making it clear that the game is non-genuine and give players a chance to experience part of the game to encourage buying a genuine copy.
In any case, the best way to encourage purchases of genuine copies is to ensure that the value of the content justifies the cost of the game, both in terms of money and the amount of effort required to obtain a genuine copy. Piracy simply cannot be eliminated.
If you want to add some protection (so only the people who are willing to at least hit google a bit can get your game without paying you) make sure to make it fun.
Add optional community features which require internet or link it to physical goods.
Remember the nifty monkey island pirate wheel? A pirated copy was actually less fun (no pirate game) or more work (search the copied data) than a bought one.
An example: If your game should run offline (yes, I think it should), you could add a physical ID card which is needed to unlock the higher levels. On that you encode name and ID of the buyer over and over again to generate diffent data, a fraction of which the buyer has to type in when accessing the higher levels. This would work with an espionage game (the information could be a list of false IDs). Encoding the real information in the cards makes it less likely that people post their cards online. Once someone buys the game, you send him/her the card.
The most effective type of DRM is to make sure that at least one part of the game is not actually included with the installer and cannot be duplicated by pirates. For example, have all the maps be stored on a server which you maintain and downloaded when the user runs the game. You can make this somewhat more effective by making users sign in with a username and password before the game can download this content.
However, then the game won't run without an Internet connection and you have to maintain the server and pay for this bandwidth. In addition, even this can easily be defeated by a determined pirate.
In fact, almost all traditional DRM methods don't work. The best you could hope for is making it too inconvenient to pirate the game, so it's not worth the trouble.
There is a lot to be said for the honor system. Sure, you end up with some piracy, but there are plenty of businesses (GoG.com, Wolfire, 2DBoy, etc.) which have been very profitable without using any form of DRM.
I recommend implementing AOE III's method of anti-piracy.
When you buy the game, they give you serial codes (the old school, serial codes). Obviously, only after you input the codes, you can play the game. Now, there's a problem with this method. The ever wretched crack. If you can crack it you can play it.
Now that the hacker cracked the game, they can play it, but only to a certain degree. You can't play online without having to re-input your serial codes to make a username & password. But here's the gist, it contacts the servers and checks if the serial code has been used yet!
If AOE III would have used "Part 2" from the beginning of installation, the problem would be solved! No playing the game without contacting the servers. This of course can be a slight problem to some players that don't have internet.
If your a small company don't bother with DRM or copy protection, or if you do just make it a very token attempt.
While personally I don't agree with people calling DRM totally useless because it gets cracked (I do agree that all forms of DRM short of online streaming will be cracked). Financially DRM probably does make sense for large companies, just because those games do get cracked doesn't mean there isn't enough inconvertible to people who are not that competent when it comes to pirating (this can inhibit school yard/soccer mom piracy), or impatient to wait for a crack.
That horrible highly invasive always online DRM for example takes weeks or even months to get cracked as they encrypt the game content with various different keys requiring people to play through them inorder to unlock all the keys. For most major games a majority of their sales are likely to be right after release. Although I think companies selling that stuff should release a DRM removal patch after a few months of being released.
But a small/indie company doesn't have the same business model.
Firstly you require your customers to be happy (large companies don't, they own established brands that you can get elsewhere and they are the only ones that can afford to spend millions of dollars on making highend games). Small companies rely on word of mouth. DRM is bad PR, people hate it. It can only be a bad thing for a consumer (unless you buy into the idea that more games sold end up with games being cheaper as a result but I doubt companies pass on the savings, that charge what they can get away with as they always have). The customers who buy indie games are normally willing to pay to help small devs also tend to be very anti-drm. Form a bond with your community.
Secondly most indie games lack the massive hype that big AAA games can afford to buy. They will probably have a much flatter sales curve, it might start low and go up as word of mouth spreads or otherwise if you don't get word of mouth you will just get a somewhat constant rate of sales trickling along.
Thirdly you just don't have the resources to implement DRM. You either have to code in a hole bunch of copy protection things or pay for an off the self solution. If you do use some kind of DRM just make it the most basic version possible.
For a small game Piracy might actually boost sales. People will tend to pay more attention to something hitting a release site that one of the 10,000 $2 games for sale in some app store.
The best thing you can do to stop piracy is to add online services. Either post frequent updates online, that add new stuff not just fixing minor bugs. Require an online username/password linked to the game purchase/key to start the game (but preferably with some purpose other than requring the login). Add multiplayer, ensure that the server code verifys a game/useraccount is legit with a central authority server. Have a game browser (Gamespy style) that pull in the games from the server. Multiplayer will only help stop piracy if the multiplayer is a big focus of your game. Multiplayer can be cracked but it's generally going to have much less players and more cheats. Allow users to create game content/mods and share it with each other through some site/integrated ingame thing. You can host the servers yourself and ensure the client doesn't have the server code, this is what MMORPGs do, I wouldn't advise it for non 'massive' games.
Another thing you can do is sell through Steam. People love Steam. People love steam sales. You could also try getting into the next Humble Indie Bundle if you make it cross platform.
Sell your game cheap. People will buy a legit copy of a game if its only $5 (unless it looks really basic like a tetris clone), $10 if it seems like a fairly solid game (decent 3D graphics, gameplay, etc...). The problem is what people are willing to pay and what is worth it for the game developers don't necessarily line up but there will be a price point where people who would have pirated it or passed it over will buy, you might make more money selling for less.
Just accept piracy. There is a whole bunch of talk that if you make a really good game then people will buy it to support you rather than hitting a torrent site. Maybe that's true for a small % of the community but pirates don't go by how much they enjoy a game. I doubt Minecraft would have sold as well as it did if it wasn't for the online portion.
Create an online game where most of the game runs on the server.
To pirate your game, players need to create their own server. This means they either have to break into your network and steal your software or create a clone of your whole server software.
Both scenarios aren't that unlikely: They already happened to various companies.
When there is a popular online game, there is often a project to clone the server. But such a project usually takes years before it can offer a game experience comparable to yours, so you have plenty of time to attack them legally or put more resources into developing your server than they can put into development of their clone, so you will always be ahead of them.
But please resist the temptation of doing it like a certain publisher cough EA cough and create a game which is actually completely client-sided and single-player, but got a pseudo server-component tagged on just so you can prevent piracy cough Sim City cough.
- your players will hate you, because it's obvious that the online features are only in your interest and not in theirs
- your server component won't be doing much, so the amateur coders won't take long to replicate its functionality