Economy & Markets
1. Summary
The economy is open: any tradable item instance can be sold, bought, bartered, or listed — no artificial trade restrictions.
No interchangeable end-game gear — markets trade specific instances (weapons, armor, accessories) and bulk material lots (18). Two players never converge on the same loadout.
Two complementary market layers in the global world:
- Broker markets — per town/region with dynamic supply/demand and cross-region price quotes
- Player commerce — crafted market stalls (player-set prices) and direct trades
Players arbitrage between regions: list remotely at premiums, travel for better broker quotes, undercut stalls.
Control plane holds authoritative ledgers, price history, and listing state.
2. Design principles
| Principle | Meaning |
|---|---|
| No trade limits | Player freedom; audit for exploits not restriction |
| Supply & demand | Broker prices move on buys/sells and scarcity |
| Location matters | Different regions → different broker prices → travel incentive |
| Player pricing | Stalls and broker premiums are player-chosen |
| Unique instances | Equipment, tools, meals = one instance_id each; no BiS template chase (18) |
| Player food economy | Crafted meals — unique instances; player tier beats settlement rations (15) |
| Settlement shops | NPC workers craft basics onto shelves — stock depletes (18) |
| Schematic blueprints | Player-authored building YAML — validated, tradeable (20) |
| Physical + ledger | Coins have weight; bank for transfers (08) |
3. Trade modes
| Mode | Counterparty | Price set by |
|---|---|---|
| Direct trade | Player ↔ player | Mutual agreement (window) |
| Player stall | Player → buyer | Stall owner |
| Worker broker sell | Employer’s worker → broker | Job config (13) |
| Broker sell | Player → broker → buyer | Area average ± player premium |
| Broker buy | Seller → broker → player | Area bid + premium |
| Bank transfer | Account ↔ account | N/A (currency only) |
All item moves = central-audited transactions.
4. Broker markets
4.1 Per-region brokers
Each town or region hosts broker market instances:
BrokerMarket {
region_id,
broker_id,
material_books: Map<ItemTemplateId, CommodityBook>, // ore, herbs — bulk
instance_listings: Vec<InstanceListing>, // weapons, armor, tools
}
CommodityBook {
last_price, // clearing price
bid, ask, // current spread
volume_24h,
stock_depth, // broker inventory from player listings
scarcity_index, // derived
}
4.2 Price discovery (supply & demand)
When buys exhaust listed stock:
last_pricetrends up (auction-like pressure)
When sells flood the market:last_pricetrends down
Example: No iron ore listings; last trade was 3 silver. New listing at +10% premium (3.3 silver). If buyers take it, index rises; broker quotes shift.
price_delta = f(buy_pressure, sell_pressure, scarcity, time_decay)
new_price = clamp(last_price + delta, floor, ceiling)
Parameters per commodity in ruleset config — not hardcoded.
4.3 Player listings on broker
Players list items for sale at broker without standing there:
| Field | Meaning |
|---|---|
item_instance |
Escrowed to broker (central custody) |
premium_pct |
± vs current area average (e.g. +10%, −5%) |
region_id |
Which broker market |
remote_listing |
Listed in region B while player in region A (same world) |
Remote listing: allowed at higher fees / minimum premium — reflects logistics and risk (08 bank transfers for payment; item delivered via broker pickup in that Area).
4.4 Buying from broker
- Instant buy if stock at ask price
- Partial fills if multiple listings
- Coins: physical at pickup or debit bank + fee
4.5 Selling to broker
- Instant sell at broker bid (below ask) — quick dump
- Listed sell at premium/discount — waits for buyer
5. Cross-region price quotes
Brokers on the magical market network publish read-only quotes across the world:
flatland market quote iron_ore
Region Northhold: 3.0 silver (12 listed)
Region Deepport: 4.8 silver (2 listed) ← scarce
Region Capital: 2.6 silver (400 listed)
Players travel to buy cheap or haul goods to sell where scarce.
5.1 Food & finished goods (decided)
Crafted meals and equipment list as specific instances on stalls and broker (18). Price discovery uses recent sales of similar templates — buyers inspect rolls and enchants before purchase.
| Channel | What's sold | Pricing |
|---|---|---|
| Player stalls | Unique instances | Owner-set — inspect instance_id |
| Broker | Material lots (template book) + instance listings | Supply/demand / owner premium |
| Settlement shop | Worker-crafted basics — finite shelf stock (18) |
Fixed or market-tuned; empty when sold out |
Enchanted items — high-margin player craft (17); each listing is one permanent instance until destroyed.
Quote API:
- Control plane aggregates per region commodity books
- Stale TTL (e.g. 5–15 min game time)
- Cartography helps players find markets (
06)
6. Player market stalls
6.1 Stall as crafted item
Market stall kit — crafted product (09):
- Placed in allowed zones (town market square, player lease plot)
- Opens stall container + UI for owner
- Owner sets per-item price in coin (any amount — no price caps)
6.2 Buyer experience
- Browse nearby stalls (AOI + market district)
- See item, price, inspect stats
- Purchase → coins to stall escrow → owner collects (physical or bank)
6.3 vs broker
| Stall | Broker | |
|---|---|---|
| Price | Owner fixed | Market-driven + premium |
| Presence | Owner may AFK | Always on (escrow) |
| Fee | Plot rent / tax | Listing + remote fee |
| Best for | Rare instances, bundles | Materials, instance arbitrage |
7. Remote listings & arbitrage
Remote broker listing (player in region A, lists in region B):
- Minimum premium config (e.g. ≥ +5% over B's average)
- Higher listing fee
- Buyer picks up in B; seller paid via bank transfer minus fees
Encourages merchant gameplay across the global world.
8. Currency integration
| Action | Settlement |
|---|---|
| Stall purchase | Buyer pays physical coins or bank debit (buyer choice + fees) |
| Broker trade | Escrow coins or bank; branch withdraw for physical |
| Direct trade | Physical items + coins in trade window |
| Remote withdraw | Not allowed — coins physical only at bank branch (08) |
9. Central authority & anti-cheat
| Responsibility | Owner |
|---|---|
| Escrow items & coins during listings | Central |
| Price history & commodity indices | Central |
| Trade window atomic swap | Central |
| Duplicate item prevention | Central mint/burn |
| Area broker UI | Region worker (read cache) |
Region hosts cannot fake sales or mint gold.
10. TUI / agent
flatland market quote <item> [--all-regions]flatland market list <item> --region <id> --premium +10flatland market buy <item> --qty 5 --area wflatland stall open/flatland stall set-price <slot> <price>flatland trade offer <player>
11. Phasing
| Phase | Scope |
|---|---|
| 4 | Direct player trade window |
| 5 | Broker instant buy/sell + area price per commodity |
| 6 | Player listings ± premium; price movement |
| 7 | Cross-region quotes; remote listing fees |
| 8 | Crafted market stalls; plot rental |
12. Open questions
Resolved (2026-07-06):
| # | Decision |
|---|---|
| E1 | Per-commodity escrow cap on brokers |
| E2 | Regional sales tax (gold sink) |
| E3 | No player/guild-run brokers |
| E4 | Commodity futures — not in scope |
13. Design feedback
Open economy + broker indices gives emergence in a single world. Cross-region quotes tie into cartography and travel — knowing where to sell matters (01, 06).
Supply/demand on brokers should move prices gradually with configurable elasticity to prevent single-transaction manipulation while still rewarding scarcity plays (no iron → +10% listing clears → index rises).
Crafting graph & soul-bind scrolls: 09-crafting-and-recipes.html