« Collecting Data from World of Warcraft | Main | Guild Involvement »
May 18, 2005
Thoughts on a No-Cash System
Barry Kearns has posted a very interesting article about how the economy would work for an MMORPG using a No-Cash System. A major goal of such a system is that it prevents twinking, and prevents players from buying game currency for real-world currency on the internet. Whether these are laudable goals is debabatable, but debatable elsewhere.
I find the ideas intriguing, but has at least two flaws: (1) It places constraints on the nature of objects that can be bought and sold, or (2) it won't work, anyway. If we understand these problems better, we may be able to re-design an economy that meets those goals.
Kearns calls this proposal a "continuous double auction with a closed order book." In his example, Ellen has purchased 10000 units of gold from James external to the game and is trying to deliver it. They try to use the commodities market to have James buy 1 of some item Ellen is selling for the 10000 gold, but they are stymied because the system itself is willing to buy items offered for sale at less than 25 gold, and is willing to satisfy demand for that commodity for any buyer willing to pay 75 gold. James can't buy Ellen's item for 10000, because the system itself will sell him cheaper items at 75.
But if I were James, here's what I would have done. It requires two things: one commodity market that is cleared of all buyers and sellers other than James, and that Ellen have enough funds to buy one item in that market. Assuming that James runs a business, and has a source of game currency, he may have to expend some of that currency to keep some market clear, but that's just the cost of doing business.
Once we have the conditions above, Ellen bids to buy one item at 26, and then James offers one item for sale at 26. Next, James offers to buy at 74, and Ellen sells one for the same amount. Ellen now has 48 gold profit, and we repeat the cycle, and she has 96 gold. Now we can do it again with 2 items, so that Ellen is up 192 gold. And so on.
With a clear market and enough cycles, James and Ellen can exploit the system-bounded price range to transfer as much gold as they want (in O(log n) transactions).
Sellable Items Must Be Common. To thwart this more subtle attack, it must not be possible to empty an market. But to do this would place constraints on the nature of objects that can be bought and sold.
For example, on my World of Warcraft server there's usually around 5000 items offered for sale by other players, of which 1500-2000 are "uncommon" armor pieces. (As an enchanter always on the prowl for cheap ways to get enchanting reagents, I happen to watch this market closely.) And after disenchanting about 10,000 items, about 15% of the items on today's market are ones I haven't disenchanted before.
To use the No-Cash system, the game would have to avoid these "rare" objects, which are so common in games like WoW.
All Sellable Items Can Always Be Purchased. This is a side-effect of the system having a sell-to-you price that bounds the highest price that may be paid for such an item. If this price is set very high, then Ellen and James can play their backwards arbitrage in a small number of iterations. When it is set lower, however, then anyone who wants that item can just fork over the bloated price.
Failure to Find the Correct System Buy and Sell Prices Results in Empty Markets. Let's imagine a situation where demand for Heavy Leather is strong enough that the price rises to 15 gold for a stack of it in a free-market situation. But the system price controls bound the price between 8 and 14 gold. The leather gatherers can sell all the leather they want at 14, but if they offer it at 15, the system underbids them. So they have to scratch their heads and ask, "Is it worth gathering heavy leather if I can only get 14 gold for it?" As long as demand stays heavy, and the price bounds stay fixed (which is not guaranteed), the market will stay empty.
Posted at May 18, 2005 10:09 AM
Trackback Pings
TrackBack URL for this entry:
http://blogs.parc.com/cgi-bin/mt-tb.cgi/6
Comments
Asheron's Call had an interesting economy, in that the game's actual currency (pyreals) was essentially worthless. It was so easy to obtain pyreals, that they were only useful in restocking comps and ammo from the npc vendors. Only the truly lazy player would trade goods for currency from another player.
Players of AC1 created their own currencies, using those in-game items that were considered valuable. Over the years, these items would peak in value and then fade away. They included such things as motes, Sturdy Iron Keys, crystal shards, and virindi keys, to name but a few.
The above does not tell you what players will do in a cashless economy. Rather, this is what players have done, in an economy where the cash is worthless. But, I wouldn't let it surprise me if players formed their own economy, comeplete with IGE and Ebay sales, even if developers manage to create a cashless economy.
Posted by: Steve at June 16, 2005 06:21 AM
Thanks for the comments. I have to apologize for not making the time to go back and update the online version of the draft proposal... things have been a little nuts around here lately. =)
We've worked up several different potential attacks against the system (including this one), and believe we have developed mitigation strategies for all of them. The "detailed explanation" was a first-approximation to the minimal types of virtual market trader orders and how they might interact... it's not a thorough treatment of all recommended strategies.
It's true that there is a potential for sustained transfer via this sort of "market pistoning" if you implement only the end-bracket traders. In our current implementation, we go much, much further. I'm not at liberty to discuss some of the proprietary algorithms we use, but I can speak to some general concepts.
This method works only because of the mechanic of being able to arbitrarily and inexpensively "piston" the current market price between two relatively distant price points. In other words, an empty market between two price points gives the ability to generate arbitrarily high amounts of price volatility per unit time.
The first level of protection against this sort of attack is interstitial "inertial" orders. These virtual-trader orders are designed to reduce short-term market volatility. The basic mechanic for implementing them is to place a standing order at every price point above and below the current market price, with an amount that is a non-trivial fraction of maximum player carrying capacity of any given ingredient (50% of player capacity for each percentage point of price might be a good example).
Whenever a sell order is placed by a user, assuming there is no human order at the edge of the current market price, these inertial orders will need to be filled before the market price moves. When a "buy" inertial order is filled on a player sell, the amount of that transaction is immediately relisted as a "sell" order with a slightly higher transaction price... generally in the 1-2% range.
Likewise, a "sell" inertial order that is filled will generate an immediate "buy" order to counter-balance it at 1-2% lower than the transaction price. This mechanic ensures that as the market price swings from one end to the other, inertial transactions don't add or remove anything from the market supply, and the virtual traders generate a net currency drain as each transaction is offset by another transaction with a small marginal profit.
By ensuring that the margin for each transaction is smaller than the commission costs for a successful sale (5% in our system), we ensure that it's not possible to thrash the market price between two very small price differences and slowly bleed money between accounts (the transaction fees per round would exceed the net transferred amount per round, so the receiver loses money rather than gaining it).
By setting the amount of inertial orders to a substantial fraction of the player's carrying capacity, we also ensure that no one player can arbitrarily move the market price a higher amount than the commission fee differential as well.
This leads logically to requirements for "cartel" actions in attempts to move the market, where a large number of RMT accounts all need to work together in order to hold enough of a commodity to move the market price a large distance (and back again repeatedly).
We implement a variety of real-time reactive virtual trader orders to deal with such attempts, as well as a mechanic for dynamic market partitioning (which often breaks the ability to guarantee delivery even with a successful market swing). Dynamic partitioning also allows us to increase per-market volatility without allowing that volatility to guarantee a particular currency delivery.
A first-order approximation for a good partition criterion is total character wealth... so you'll tend to be primarily trading in a market with people of a similar wealth profile to you, and *not* in the same marketplace as someone with enough total wealth to be able to effective attempt to heavily twink a low-level character. Our implementation keys off of a variety of criteria for determination of dynamic market partitioning.
We believe that these measures make it difficult enough to deliver currency in a timely fashion that the transactional friction will discourage RMT from arising. In general, it would be faster, cheaper and easier to gather the currency yourself by playing the game than it would be to try to accept delivery of RMT currency.
Since the only player-to-player tradable market involving currency is the commodities market (and not things like rare items), we ensure that there are no opportunities to use this market mechanism for similar transactions with "rare" items.
Eric wrote:
To thwart this more subtle attack, it must not be possible to empty an market. But to do this would place constraints on the nature of objects that can be bought and sold.
This is true for the concept of player-to-player item sales, and we consider this a feature rather than a flaw. We facilitate a controlled amount of player-to-player gifting, but implement features that ensure that these gifts can't be used as an unreasonable level of currency
trading, or allow an alternate currency to arise.
Players can still sell off excess equipment, but they will sell it to vendors rather than other players. If another player wants it (and hasn't received a disproportionate amount of gifts), you can generally give that piece of equipment to them as a gift. This allows people to help outfit each other (a reasonable and controlled degree of twinking).
Gifted items are always marked non-tradable. This means that no valuable items can be used as currency, since they can never be re-traded. This ensures that there will be no other "alternate currencies" that arise, even if players attempt to make one.
We set drop rates for fairly good equipment to a pretty high rate, and reduce the vendor resale value accordingly (as well as allowing the items to be recycled into crafting ingredients in a manner similar to disenchanting). This means that players have no problems outfitting themselves with more-than-adequate equipment as a natural consequence of adventuring, even if they play solo. Exceedingly rare items that might be unbalancing if gifted are treated as "bind on pickup".
Under this system, players don't sell equipment to each other. They can have it crafted for them if they want to supply ingredients, they can receive it as a gift, they can find it themselves, they can buy it from a vendor or they can receive it as a quest reward.
The net effect is that other players can see that you've "earned" the equipment you have (and can tell if it was gifted to you instead, and achievement is thereby preserved.
As to improperly bounded prices, one of the advantages of implementing such a system is that it helps the developers to easily see useful metrics regarding the supply and demand for different crafting ingredients within their world. Bracketing price endpoints can always be set to dynamically (and slowly) adjust to the new player styles and more realistic market prices, if the developer thinks that's appropriate. They might instead decide that this indicates an unforseen supply or demand problem for that resource, and adjust drop rates or recipes as they see fit.
The proposal name has changed from "No-Cash" to "No-RMT" to more accurate reflect what's being prevented. There's still a game currency present (which has high utility), but the game mechanics strongly resist the ability to gift unbalancing amounts of that currency between players.
Hope this helps.
Barry Kearns
barrykearns@qwest.net
http://vektor.blogs.com
Posted by: Barry Kearns at June 16, 2005 09:39 AM
Link no longer works to http://vektor.blogs.com
Posted by: Dan Hunter at December 6, 2005 10:41 AM
*Sigh*.
And apparently, neither archive.org nor Google cached the pages in question before the links went dead. Google has several other posts cached, but archive.org has phht.
Posted by: Eric Nickell at December 8, 2005 12:04 PM
