News

One market for the world

The market window in game, browsing armour with an auction among the listings

Trade in World of Accords runs through one market for the whole world. List an item at any market hall and every player can find it. Here's why we chose one market, and how the server keeps it honest.

Why one market

We studied how others do it. Ashes of Creation keeps each region's market separate and moves goods by caravan. New World gave every settlement a trading post, then linked them. ArcheAge charges listing fees plus a landowner's tax.

Separate regional markets make geography matter, but they split a small population into thin markets where nothing sells. We're building for about a hundred players sharing a server, so we chose one order book with instant delivery. Geography comes back through tax: the hall where you list sets the cut.

How a trade moves

  • List: the item leaves your bag into escrow, held by the market, so it can't be sold twice, used or destroyed while it's listed.
  • Buy: the coin is taken and the item goes to your bag, or to your market box if the bag is full.
  • Sell: the price, less the hall's tax, lands in your market box, even while you're offline. You collect it at any hall.
  • Expire or cancel: the item goes back to your box.

Buy orders run the other way: your coin is held while sellers fill the order. For now a seller fills an order on purpose; there's no automatic matching yet.

Auctions

A lot can go up with a starting bid and an optional buyout. Each bid is held in escrow, and the bid it beats goes straight back to its owner. A late bid extends the clock, so sniping at the bell doesn't work. Search never shows who the high bidder is; it only tells you when it's you.

Every result carries its end time with the server's clock alongside, so the time left is right on every client, whatever its own clock says.

The server owns everything

Clients only send intent: list, buy, bid, cancel, collect. The server checks that the item is really yours, works out every total, fee and tax itself, and checks totals against overflow before anything moves. A client never sends a balance.

  • Every request carries a fresh id. A repeat gets the first answer and changes nothing, so a resent packet or a retry can't buy twice.
  • You have to be standing at a market hall, and the server checks.
  • Search results carry no seller ids.
  • The store is written beside the old one and swapped in, so a crash never leaves it half-written. Rows that fail validation are set aside for review, never dropped.
  • An append-only journal records every listing, sale, bid, expiry and collection, for support.
  • Unusual trading is flagged for a person to review, never punished automatically.

Alerts

Looking for something specific, like a sword with a strong stat line? Save the search, and the market tells you in chat when one is listed, or the next time you visit a hall if you were offline.

Built for a crowd

A market is one of the busiest systems in an MMO, so its costs scale with what changes, not with what exists:

  • Alerts are indexed by item, so a new listing only checks the alerts watching that item. We stress-tested 25,000 alerts crowded onto our current catalogue: about 0.14 ms per new listing.
  • Matches are batched and saved on a timer, not on every listing, and a player who's online hears about a burst of matches in one line.
  • Searches and changes share a rate limit, and results and search text are capped, so a client can't make the server do unbounded work.

The biggest scaling item left is the store itself. Today the server rewrites one market file per change. When our servers go live it moves into a transactional database, together with player profiles.

Towns and tax

Halls run by the game take a fixed cut, which leaves the economy as a coin sink, alongside listing fees. When player towns arrive, their halls will set their own rate within a band, and that coin will fund the town, so towns will compete for your trade.

Tell us

If you've run a player economy, we'd like to hear what broke first, and what you'd want from a market on day one: hello@worldofaccords.com.

‹ All news