With their large player communities, the economies of some online games have become almost as complex as those of actual countries. Just as hyperinflation can lead to widespread chaos in the real world, it can be a major disruption to an in-game economy. And in a computer game, all it takes to unleash economic pandemonium is one coding error.
This scenario occurred recently in the popular game “Diablo III” following a new patch release, International Business Times reported. A flaw in the game’s auction house – an area that allows users to sell in-game currency, or “gold,” for actual money – allowed players to dupe the game’s server into filling their accounts with nearly unlimited amounts of gold. According to one user post on official Battle.net forums maintained by “Diablo III” publisher Blizzard, many taking advantage of the exploit saw their in-game currency levels skyrocket to 500 billion gold, while one user reached a net worth of 371 trillion.
The best deal ever
According to an explanation posted by user TyroPyro on the Diablo Reddit thread, players posting gold for sale to the auction house could list any amount as long as its real world value was less than $250 – equivalent to around 6 billion in in-game currency – but the maximum total that would be listed in the auction house would be lower (around 1.7 billion for an auction of 6 billion). If the user canceled the auction, the 1.7 billion would be returned to his or her account – along with the unlisted difference. In other words, posting and cancelling a 6 billion gold auction could net the user around 4.3 billion gold.
TyroPyro speculated the cause was an integer overflow bug that failed to anticipate gold trades exceeding the value that can be stored in an int32 field, while other Reddit users suggested the flaw may have been due to the poorly planned use of an unsigned integer. Regardless of the cause, the flaw appears to have been a basic issue that Blizzard could have caught with more careful source code analysis.
“How could something this basic make it to live?” TyroPyro speculated. “I think it was coded at the last minute and not really tested.”
Addressing the issue
Blizzard responded to the flaw by considering rolling back the game’s servers and erasing all progress from a 12-hour period. It eventually concluded that the number of offenders was small enough to address individually. In the meantime, the company disabled the auction house feature.
“We’ve confirmed that we’ve fixed the bug which allowed players to duplicate gold; however, we will be keeping the gold and real-money Auction Houses offline in the Americas until further notice (gold trades will also remain suspended),” a Blizzard representative wrote on Battle.net. “We’ll be using this downtime to perform audits on all transactions conducted through the Auction House as well as trades in which gold was exchanged since [version] 1.0.8 launched.”
To avoid comparable disruptions to their player communities – particularly in cases where in-game economies may correlate with real world ones – game developers should be thorough in catching and preventing software errors. Using tools such as static analysis software, companies can catch such flaws before they go live.
Software news brought to you by Klocwork Inc., dedicated to helping software developers create better code with every keystroke.