Recently I posted an article poking fun at Blizzard’s decision to force single-player Diablo 3 sessions to depend on the battle.net servers. In the article I implied that Blizzard’s decision was a result of technical incompetence—that somehow programming a non-networked game is more difficult than programming a client-server game, and Blizzard developers had failed to crack the problem. Diablo 3′s “networked standalone” (clearly an oxymoron) campaigns aggravate me as a player because they make it harder for me to get into the game, stay in the game, and enjoy a smooth experience within the game. I felt that Blizzard deserved some ribbing for sacrificing the quality of my single-player experience in the name of keeping everything networked.
But as a game programmer with experience developing massively multiplayer games, I do understand why Blizzard took their decision.
It’s all about security and the real money auction house.
The Diablo 3 real money auction house is where players trade in-game weapons and artifacts for—you guessed it—their bona fide hard-earned cash. Blizzard gains a portion of that cash, and judging from the amount they’ve spent on Diablo 3 servers, they clearly projected for those earnings to be a major source of revenue.
But players won’t spend their money unless they believe they’re buying something valuable. The items for sale in the real money auction house have to be powerful, game-changing, and unique (or at least rare), or no one will pay a penny.
It’s the good ol’ Supply-Demand-Price triumvirate. An item’s power and prestige defines its demand. Its rarity defines its supply. The intersection of these factors define its price.
Blizzard’s goal is to create a market where the prices are as high as possible. Therefore they must drive up demand and drive down supply. How are they to do it?
Driving up demand is already built into the game. The Diablo franchise has always revolved around the concept of randomly-generated weapons and armor, each having a greater or lesser degree of “oomf”. Players want the items with the most “oomf”—the most “wow”. They want to beat their enemies with them. They want to show them off to their friends. Ever since the original Diablo, every item has come attached with a certain degree of demand.
But what about supply? That’s where it gets tricky.
If you assume that no player ever cheats at Diablo, then supply is also controlled by the game. The game itself generates items randomly according to an algorithm that Blizzard controls. This determines the rarity of items of a given quality.
The quantity of items is also tightly controlled. The game generates items whenever a monster is killed, so the number of items that a player can generate in an hour is a function of the number of monsters that the game generates, the distance between monsters, the speed of the player, and the speed with which the player can kill monsters. So if the only software that can generate Diablo items is an honest, unmodified copy of the Diablo 3 game, then Blizzard controls both quantity and quality—that is, the supply.
The problem—as we discovered at Origin in the early days of Ultima Online—is that there is no such thing as a reliable client. There is nothing that you as a developer can do—no copy-protection, no DRM, no encryption, no code signing—that can prevent a user from modifying or even replacing your client software.
Think of it this way. Imagine that the battle.net servers trusted Diablo 3 clients to inform them when a player gained some new piece of equipment. Maybe the Diablo 3 clients send a certain network packet—a NEW_EQUIPMENT_GAINED packet, let’s say—that informs the server that a new item was generated, what kind of item it is, what features it has, and how valuable it is. So the server listens patiently for clients to send these packets, trusting that they are being created in an honest manner whenever the player actually kills a monster in the game. It then credits the user’s online account with owning that particular item.
Now when the user visits the real money auction house, they can flog this item for a price. If it’s a rare and powerful item, they might get a high price for it, and the user and Blizzard are happy.
But then some enterprising user comes along with a wicked idea. He uses network packet sniffing tools—readily available—to study the dialogue between a real Diablo 3 client and the battle.net servers. Soon he has learned their language—the ports, the passwords, the protocols, the packets—and gains the ability to imitate it. Now he writes a new application that looks nothing like Diablo 3 to a human, but looks just like it to the server. His application is capable of imitating Diablo 3 in an important way: it can sending packets just like a Diablo 3 client. This application is a cuckoo bird, pushing its bogus packets into the server’s trusting nest.
The developer of this bogus client can now do anything. He can claim, “I just got an Assailing Rune Sword of Blight!” He can claim similar items ten times a second.
What if Blizzard adds checks to the server to validate new item claims—to make sure they seem reasonable? After all, a player finding ten Assailing Rune Swords per second can hardly be on the up and up. So Blizzard can detect and limit the number of high-powered items.
But the cheater has a counter-tactic. He can, with care, nudge his client to create items that sit right inside the legal limit. Maybe he gets an awesome weapon just once per minute or once per hour. Maybe he reports to the server a broader, more plausible mix of item quality.
This clever, naughty little user has just hit the jackpot. He has created a way to generate valuable items quickly, automatically, with minimal time, effort, and luck. He now takes those items to the real money auction house, sells them to someone, and takes their real money.
Now, so long as only a few users do this, Blizzard loses nothing. But when many cheaters use bogus clients to flood the auction house with “rare”, powerful items—well, pretty soon, rare is commonplace and valuable is cheap. Auction house prices take a dive, and the entire economy shuts down.
To keep the auction house vibrant, Blizzard must control supply. To control supply, Blizzard must control the generation of items. To control the generation of items, Blizzard must generate them only on their own, trustworthy servers. They cannot trust clients to do it, because clients may do anything.
Therefore, every Diablo 3 campaign that is capable of generating items that may be sold in the auction house must be played entirely on the battle.net servers.
This must include single-player campaigns. Blizzard wants as many users as possible participating in the auction house, so naturally Blizzard wants to include single-player campaigns in the economy. Therefore single-player campaigns must be played online.
That’s why Blizzard makes you play your standalone games on the network even though it harms your play experience. It’s the reason LocalServer technology isn’t a question of technical difficulty. It’s a question of users—at least the ones like me who don’t care about buying or selling in the real money auction house—demanding it.
Because in fact, if Blizzard wanted to, they could make single-player campaigns run independently of the server simply by making items that are gained in a single-player campaign ineligible for trade in the auction house. I, for one, wish they would give us that option.

3 Comments
“they could make single-player campaigns run independently of the server simply by making items that are gained in a single-player campaign ineligible for trade in the auction house.”
That solution would be exploitable as well. Banning offline items from sale wouldn’t prevent people from creating god-like items and using them to kill bosses online for real drops. It would inevitably damage the economy to a similar extent, just not quite as quickly.
To prevent such a scenario Blizzard would need to only allow offline items in offline mode, leading to other problems. Plenty of players (such as myself) would greatly enjoy the lag-free offline experience, but leveling a character to 60 offline would make players less likely to begin playing online since they’d be starting over at lvl 60 with no gear.
That doesn’t even get into the complexities of how to handle gold earned offline (two separate money resources?). In essence, allowing offline play would lock offline players out of the online experience.
On the other hand, I’d love to have my own Diablo 3 local server completely separate from my online account with the explicit ability to create items. They couldn’t be used online in any way, but I’d be able to test specs with expensive gear without spending a month’s worth of gold only to find it doesn’t really work that well. I doubt Blizzard would like that too much though. =)
Interesting read Jeff. I’d be interested in your response (if any) to the following comment by Wyatt Cheng, a senior designer for Diablo 3, made in a recent reddit AMA:
“The auction house has absolutely no effect on drop rates. There are conspiracy theories and misunderstandings but I do want to re-iterate, the is NO interaction whatsoever. Bashiok mentioned earlier that we took the AH into account, so let me expand a little bit on that.
The drop rates were tuned for a player who would never use the Auction House. For the majority of internal development we didn’t have an Auction House, we all played using our own drops only. I’ve personally leveled multiple characters from 1 to 60 internally before the game came out using only drops that I found – we all did.”
To me, the above comment implies an attitude among at least some D3 devs that the auction houses are ancillary to the game’s design. But such an attitude would oppose harming user experience by forcing online-only single-player just to ensure the integrity of the AH. This might lend strength to the theory that ActiBlizzard fiscal interests forced the AH down the throats of the creative side in order to wring more profit out of a game that could make plenty of money from retail sales alone.
I’ve also read speculation that Blizzard reduced the drop rate in order to drive down supply on the auction house relative to what it “should” be if they were tuning it just for standalone. I haven’t played enough of the standalone game to have experienced the sort of wall that some players have reported, where they think they have to buy items in order to progress. In any case, I don’t assume that Blizzard ignored or skuppered the standalone game in favor of the auction house. If I were Blizzard, I’d make the game as fun as possible without the Auction House, treating the AH as a value added thing. After all, if the game simply isn’t fun, players won’t play and that Auction House is moot. But if the game is fun, players can amplify or accelerate their game by using the AH if they want to.
So my point is not that Blizzard reduced the standalone game drop rate in the name of pushing players to the Auction House. My point is merely that Blizzard kept the standalone game online so that dropped items would be invulnerable (theoretically) to cheating and therefore valid for the Auction House.