Home » Has piracy ever resulted in a developer getting shut down?

Has piracy ever resulted in a developer getting shut down?


After a little running around the internet I found an interesting article that shows a good example of how pirating can affect a game directly and shutdown a project.

iOS Game, Battle Dungeon, Forced To Shut Down Due To Piracy

In this article, Hunted Cow, the developers behind the iOS game Battle Dungeon ended up shutting down their servers. The reason they gave as quoted:

“Unfortunately we have taken Battle Dungeon down for the forseeable
future. This was due to high levels of server load created by large
numbers of pirated copies of the game. The high load revealed
technical issues which we don’t feel we can fix to the level that our
paying customers deserve.”

I found this interesting because it shows that the piracy directly affected the performance of the servers rather than the revenue the developers were receiving to continue with development. Essentially (for those just wanting to skim the article) the pirated copy of the game hit the torrents of the web and multiplied the number of active players on their servers so drastically it reduced performance to a non playable standard. This resulted in them shutting down the project on December 3rd 2012.

Since then they have upgraded their server hardware and rereleased the app on the iTunes Store on April 8th 2013. However the piracy is what caused them to make these changes, costing money to company, down time of more than 4 months for the paying players and a reworking of their website which would have taken up valuable resources from their planned work.

Piracy may not affect companies directly from losing money from the initial sale, but as with Hunted Cow it can really set you back and potentially enough to shut you down. Hunted Cow were able to readjust and solve the problem after it happened, potentially with user based access to servers being validated for paying customers – however that is my own assumption.

It is something that you can prepare for in many different ways (DRM, payment authentication, server load access restrictions) and still be affected in ways you won’t predict. Do your best to estimate what can happen to your services with extra pirated copies (extra load on servers, potential player griefing etc) and account for it as best you can within your budget so it doesn’t affect your fair paying customers.

I’ve never heard of this happening as a loss of sales. There are situations where a company has had a direct loss of money that can be attributed to piracy.

Project Zomboid faced issues with this a few years ago when their updater was cracked. The updater was hacked to allow pirates to download the latest release of the game from Project Zomboid. Since Project Zomboid was using Amazon Cloud services to distribute their updates, the additional downloads were costing them money. This resulted in them taking the game down for a while.

This example, including the example in Blue’s answer both show situations where, if the conditions were right, it could have caused the game company to go under.

These examples show that when a company offers a service as part of their business (online servers, or even direct download updates), this service can be taken advantage of and cost the company more money than it generates.

These examples show that it’s possible to lose money directly as a result of piracy. This means it is possible to go out of business as a direct result of piracy, but as with both examples, the companies can take measures to avoid the continued “unauthorized expenses”.

A case where it didn’t take down the studio, but it must likely hurt sales and cost money:

Demigod by Stardock was pirated before launch and had a massive server load – 18,000 validated users and 140,000 concurrent users. This prevented everyone from playing:

“Our stress tests had counted on having maybe 50,000 people playing at once at peak and that wouldn’t be reached for a few weeks by which time we would have slowly seen things becoming problematic… So during the day today, people couldn’t even log on, and in some cases, the Demigod forums, which use one of the affected databases for some piddly thing were even down,” he wrote. “Even getting the game running was a pain today because a simple HTTP call to see what the latest version would get hung leaving people looking at a black screen. Stuff of nightmares.”

The game took a huge hit in reviews – it was a multiplayer game where the multiplayer didn’t seem to work.

As I remember, Stardock had to call people in over the weekend ($ for overtime), they had to spin up the servers sooner ($$ and time), and they had to sink more man hours in patching (probably would have happened anyway, but maybe not on “no one goes home tonight” urgency).

Related Solutions

Recursive to iterative using a systematic method [closed]

So, to restate the question. We have a function f, in our case fac. def fac(n): if n==0: return 1 else: return n*fac(n-1) It is implemented recursively. We want to implement a function facOpt that does the same thing but iteratively. fac is written almost in...

How can I match values in one file to ranges from another?

if the data file sizes are not huge, there is a simpler way $ join input1 input2 | awk '$5<$4 && $3<$5 {print $2, $5-$3+1}' B100002 32 B100043 15 B123465 3 This Perl code seems to solve your problem It is a common idiom: to load the entire...

Javascript difference between “=” and “===” [duplicate]

You need to use == or === for equality checking. = is the assignment operator. You can read about assignment operators here on MDN. As a quick reference as you are learning JS: = assignment operator == equal to === equal value and equal type != not equal !==...

Compiler complains about misplaced else [closed]

Your compiler complains about an misplaced else because, well, there is an else without a preceding if: // ... for (j=1; j<n-i; j++) { if(a[j]<=a[j+1]) { // ... } // END OF IF } // END OF FOR else { continue; } // ... The else in your code does not follow...

Bootstrap – custom alerts with progress bar

/* !important are just used to overide the bootstrap css in the snippet */ .alertContainer { border-radius: 0 !important; border-width: 0 !important; padding: 0 !important; height: auto !important; position: absolute !important; bottom: 15px !important; left:...

How to Garbage Collect an external Javascript load?

Yes, s.onload = null is useful and will garbage collect! As of 2019, it is not possible to explicitly or programmatically trigger garbage collection in JavaScript. That means it collects when it wants. Although there is cases where setting to null may do a GC...

Math programming with python

At first, what you are looking for is the modulo operator and the function math.floor() Modulo from wikipedia: In computing, the modulo operation finds the remainder after division of one number by another (sometimes called modulus). for example: 12%12=0...

Android slide over letters to create a word [closed]

Here some advice you can use: First for each cell you can create an object that represents the state of that cell: class Cell { char mChar; int row,column; boolean isSelected; } then you can create a 2D array of your cells Cell[][] mTable = ... For views you...

Sum two integers in Java

You reused the x and y variable names (hence the variable x is already defined in method main error), and forgot to assign the ints read from the Scanner to the x and y variables. Besides, there's no need to create two Scanner objects. public static void...

Extend three classes that implements an interface in Java

Using this simplified implementation of the library, using method() instead of M(): interface IFC { void method(); } class A implements IFC { public void method() { System.out.println("method in A"); }; } As akuzminykh mentions in their comment You'd write a...

How to set the stream content in PHPExcel? [closed]

Okey, First thing first PHPExcel_Worksheet_MemoryDrawing() can't solve your problem if you insist to use stream content and pass that to your worksheet your PDF will not render your image. But you can use `PHPExcel_Worksheet_Drawing()' if you want to render...

How to remove all files from a directory?

Linux does not use extensions. It is up to the creator of the file to decide whether the name should have an extension. Linux looks at the first few bytes to figure out what kind of file it is dealing with. To remove all non-hidden files* in a directory use: rm...

Hacker used picture upload to get PHP code into my site

Client side validation The validation code you have provided is in JavaScript. That suggests it is code that you use to do the validation on the client. Rule number one of securing webapps is to never trust the client. The client is under the full control of...

First Time HTML5/CSS Site

Semantically, I would suggest using HTML5 elements more. For example, instead of... <div id="header"> <div id="logo"></div> </div> Use instead: (the ID can stay if you want it to) <header> <div id="logo"></div>...

How classes work in a CSS file? [closed]

In your first example: .container.inner_content.text_section Match any element that has all three classes .container.inner_content.text_section { color: red; } <div class="container inner_content">one class</div> <div class="container...