Economic Zones

Every faction on Blacklight is its own economic zone, with its own money, prices and output, measured continuously rather than once a night.

A faction is a zone

The economy does not treat the server as one big market. It divides it into zones, and every faction is exactly one zone. A zone carries its own money supply, its own velocity, its own price level, its own real output, its own employment count, its own trade balance and its own debt ratio. Two factions can be booming and shrinking at the same time on the same server, and the numbers will say so.

Alongside the faction zones there are two sentinels. WORLD catches flows that belong to the server rather than to anybody in particular, and it is shown to you on the world view of the dashboard. SYSTEM catches legs with no player behind them at all; nothing on any screen reads it, by design.

The rule that decides which zone gets the entry is where the activity happened, never who the actor belongs to. If you are a member of one faction and you mine, sell or pay a fee inside another faction's claim, the output and the money leg are booked to that claim's zone. Your membership does not follow your pickaxe around.

Much of the machinery described on this page is marked in the source documentation as code-written and not server-verified. The formulas, limits and card wording are taken from the code as written. Treat the exact live figures as something to check on the dashboard rather than something this page can promise.

What a zone measures

The dashboard shows a fixed set of quantities per zone. Some are counted directly, some are derived from the counted ones, and three are honestly labelled as not measured at all.

QuantityWhat it countsHow it is arrived at
Money Supply M(z)Coins actually sitting in the zone's potsA recount of real pots, not a running total. Wallets, accounts, savings and the treasury are added up.
Velocity VHow often the zone's stock of money changes hands per day(faucets + sinks + trade) / max(M, 100). The 100 is a floor so a nearly empty zone cannot divide by almost nothing.
Goods Produced (Y)Real output, valued at base pricesValue added from block drops, mob loot, fishing and NPC deposits, appraised through the base-value oracle.
Cost of Living (CPI)What a fixed basket costs against the zone's own baselineA basket of five seeded goods priced through the zone price level, scaled so the baseline is exactly 100.
Money GrowthNet new money per day relative to the money that already exists(faucets - sinks) / M(z), expressed per real day and clamped at plus or minus 25 percent per day.
InflationHow fast the cost of living is actually movingA compound per-day rate taken from the zone's own stored cost-of-living series, over a window of up to 7 days.
EmploymentDistinct active earnersMembers with at least one pay or production event inside the structural window. Rebuilt from live events, so a restart restarts the count.
Trade BalanceExports minus importsA transfer across a zone border books an import on the payer's zone and a mirror export on the payee's, so the whole server sums to roughly zero.
Debt RatioMember debt against member wealthdebt / max(1000, wealth). Structural rather than simulated, so it shows whether or not the simulation is armed.
Capital Stock, Investment, Inventory StockNothing yetThere is no durable-asset valuation, no capital-formation source and no per-zone item inventory. The dashboard prints "not yet measured" rather than a zero that would read as a measurement.

Two things do not get counted, and both are deliberate. Forged gear produces zero output value, because bl_forged_* items carry no base price and inventing one would be a balance decision rather than a measurement. NPC output is booked to the zone, not to the NPC's owner, so a lumberjack does not inflate its owner's personal production record.

Cost of living starts at 100, and only against itself

The cost-of-living index is the one number on the dashboard most likely to be misread, so the card says the awkward part out loud.

Each zone captures a calibration exactly once: the first time it shows genuine real output, its price level at that moment is recorded and kept. Everything after that is measured against that captured moment. Until the capture happens the price level is pinned at neutral and the index reads exactly 100, which is why a brand new faction and a hundred-member one both start at 100 regardless of how much money is in either.

That makes the index honest about time and useless about neighbours. If your zone reads 128 and the faction next door reads 96, that means yours is 28 percent above its own baseline and theirs is 4 percent below its baseline. It does not mean bread is more expensive in your territory. The two baselines were captured on different days against different economies, and comparing them would be comparing two rulers with different zeroes.

The dashboard states this on the card itself, and the cross-zone comparison features that would have implied otherwise were deliberately not built. There is no cross-zone cost-of-living ranking and no "trade route" advert pointing at a price gap between factions, because both would be fabricating a signal the measurement cannot support.

DetailValue
Basket size5 seeded goods: relic coin, rift shard, hemp leaf, cannabis bud, dried cannabis
Index at the baselineExactly 100, shown as an integer rather than a decimal multiplier
Price level band0.2 to 5.0, so the index cannot run away in either direction
Comparable between factionsNo, and the card says so
Comparable against the same faction last weekYes, and that is what the Inflation card reads

Measured continuously, not at midnight

The economy used to recompute once per real day. Mining ten thousand iron moved the market tomorrow, and every metric stepped at midnight. That is gone. Nothing is recalculated on a schedule any more.

Raw quantities are updated the instant an event happens. Each tracked quantity is a single number with a timestamp and a half-life: writing means "decay to now, then add", reading means "decay to now, then return". Because a read performs the same decay step a write does, a read is always current and no background task is needed to keep it that way. There are no day buckets, so there is no midnight cliff and no question of which day a trade landed in.

LayerHalf-lifeWhat decays at that rate
Flow meters30 minutesTrade, production, faucets and sinks, labour, and per-item supply and demand
Structural marks2 hoursThe earner-presence marks that the Employment count reads
Guard rails12 hoursThe anti-exploit caps on how much one player can push through a market

The guard half-life is long on purpose. A decaying meter is a leaky bucket: its capacity is the burst you are allowed and its refill is the sustained rate you are allowed. A 30 minute guard bucket could not express "a large single trade is fine, eight million a day is not", so the guards run at twelve hours while the meters that feed prices run at thirty minutes.

Derived values are computed when you look and remembered for about a second. The heavier structural sweep over a faction's members is remembered for thirty seconds. A price quote only needs the price level, so it never pays for the structural work at all. The consequence worth knowing: a zone nobody is playing in costs nothing. The old design paid for every faction every day whether or not anyone was there.

Every flow figure is a per real day rate, not a window total. The card says "this zone produces 4,000 a day", not "12,000 over three days", which keeps the numbers comparable across zones of different sizes.

There is a visible cost to all of this. After a restart the accumulators are empty, so velocity and money growth read 0 and the price level sits at neutral until activity refills them, which takes roughly one flow half-life. The captured calibration survives a restart precisely because it is not a live signal.

Prices hold while the server is quiet

Decaying meters have an obvious failure mode: leave the server alone overnight and everything drifts back to neutral, so the gold price collapses to base simply because nobody was online. A market clock sits under the meters to stop that.

The clock maps wall time to market time. While the market is active it runs at full speed. While it is not, it runs at 5 percent, so an eight hour night costs the market roughly 24 market minutes. Prices hold. An abandoned market still drifts to neutral, but it takes about a month rather than a night, and that slow drift is deliberate so a manipulated price cannot be frozen in place forever by logging off.

What counts as active is the part that had to be corrected. The first version idled whenever the player count hit zero, on the assumption that an empty server produces no events. That assumption is false here: the payout scheduler, company payroll, consignment settlement, savings interest, loan amortisation, hourly NPC upkeep and autonomous NPC production all keep emitting with nobody online. Events arriving at their real rate while the clock decays at 5 percent settle at twenty times their true value, and the Money Growth card duly read a wildly overstated figure. The clock now idles only when nothing has emitted for 300 seconds, which makes the original assumption literally true instead of merely assumed.

Not everything moved onto market time. Anything where money genuinely accrues in real time stayed on the wall clock: savings interest, loan interest, dividends, the Writ Fund decay, the anti-exploit caps and both circuit breakers. What moved is the measurement layer, meaning the zone flow meters, per-item supply and demand, liquidity and the per-actor share contributions.

The dashboard carries a Market Hours card explaining the state, and the verdict card adds a line saying the market is quiet and prices are holding while the clock idles.

The 8 percent per minute limit on price movement

Because prices now respond instantly, they need a limit on how fast they may respond. Every price surface has a circuit breaker set at 8 percent per minute. A quote may move at most (1 + 0.08) ^ minutes elapsed upward, or the reciprocal of that downward, from the value it was last quoted at.

The important word is rate. The allowance is bought with time, not with transactions, so trading faster does not help you. A thousand trades inside one minute still only buy one minute of elapsed time, and the price moves by the same 8 percent it would have moved for a single trade. A genuine supply shock is not suppressed, only spread across the minutes it needs.

The mirror of that rule is worth knowing if you sell. An item nobody has quoted accrues allowance the whole time, so the first quote after an hour lands wherever the fundamentals say it should, with no catching-up period. The same breaker also guards the world commodity spot index, which is why another player buying out a bank's shelves on the far side of the map cannot take the index across its whole band in one step.

Two further guards sit alongside it.

GuardWhat it doesWhy it is shaped that way
Circuit breakerCaps price movement at 8 percent per minute of elapsed time, both directionsBounds the rate rather than the count, so it cannot be outrun by trading faster
Liquidity rampIn a thin market the price signal scales toward neutral instead of switching offA ramp has no threshold to cross, so any trade moves the price a little rather than nothing at all until some sample count is reached
Per-actor shareNo single actor may hold more than 25 percent of either side of a market's signal, plus a fixed absolute allowanceThe share rule alone would latch shut on an empty side and pin the good at half price forever. The allowance means below roughly four participants everyone gets an equal finite voice, and above that the share rule binds

Prices are derived at the instant they are taken, so a label and the charge that follows it can differ by the time between them. Three things bound that: every surface has the breaker, every screen showing a moving price repaints once a second, and the worst case divergence works out to roughly 0.13 percent. It is a real cost of a market that moves, and it is bounded and stated rather than hidden.

Which prices this actually moves. The zone price multiplier reaches the server-priced surfaces: the /shop charge path, the builder NPC's material purchase, their matching menu labels and the internal basket. Player-set markets are untouched, so a price you set yourself in a market or a regional shop stays exactly where you set it.

The identity check that can actually fire

A measurement system that only checks itself against itself proves nothing. The zone accounts carry one cross-check, and its whole value comes from what it deliberately refuses to do.

Once per cycle, per zone, it stands two sides against each other:

  • The goods side, the sum of value added, fed only by production events.
  • The spending side, consumption plus investment plus government spending plus net exports, fed only by money events.

The two sides share no calculation term, and that is the point. The obvious way to write the check would have been to compare nominal output against the spending side, with nominal output defined as real output times the price level. But the price level is itself money times velocity over output, so the whole thing would collapse into money times velocity being approximately equal to faucets plus sinks plus trade. That is a tautology. It would be true every time, it would detect nothing, and it would look like a working safeguard on the screen. Keeping the two sides independent is what lets a genuine gap show up.

A relative divergence beyond 15 percent flags the largest zone and its dominant term for a staff look. The docs are careful about what that means: value added is priced at base values while the money side is nominal, so a genuinely high price level can also open a gap. The flag says "investigate", not "proven bug". A one-sided gap, meaning production with no paying route behind it or a payment with no production behind it, trips it decisively.

You will not normally see this. It writes at most one audit line every ten minutes and it is not a player-facing card. It is worth knowing about because it is the reason the numbers on the dashboard are checkable at all.

Reading a card

Every card on the dashboard carries the same five lines, in the same order.

LineWhat it gives you
WHATWhat the number is, in plain words, with no undefined jargon
NOWThe current reading
MOVESWhat makes it go up and what makes it go down
YOUWhat it means for you, and honest about agency: several cards say outright that they measure rather than judge, and that the reading is information only
RAWThe underlying numbers and the formula, including which half-life and which denominator the card used

The names are translated out of the textbook. "Output Y" is labelled Goods Produced, with the symbol kept in the RAW line for anyone who wants it. The CPI card is labelled Cost of Living and carries the basket size, the rule that 100 is the zone's own baseline, and the statement that it is not comparable between factions.

Money Growth and Inflation are separate cards

They answer different questions and they divide by different things, so merging them would blur both. The dashboard keeps them apart and each card names its own denominator, along with a note that the family is not expected to agree.

CardWhat it divides byClamped
GrowthCirculating wealth plus the treasuryNo
Money GrowthM(z), the zone's money supplyYes, at 25 percent per day
InflationElapsed time. It is not a money ratio at allNo, and it needs samples at least 12 hours apart to report

Money Growth says how fast new coins are appearing relative to the coins already there. Inflation says how fast the basket is actually getting more expensive. A faction whose income doubles overnight will move Money Growth immediately; Inflation moves only if the cost-of-living series moved.

When a card refuses to answer

A card that cannot honestly report a number says so rather than printing one.

What you seeWhat happened
too small to measureThe zone's money supply is below the floor of 100 coins, so the percentage would be a divide-guard artefact wearing a percent sign. The card names the floor instead of printing a saturated number.
off the scaleThe true rate is beyond what the card can show, so it stops at the limit and tells you the real figure in the same breath. A headline pinned to its own bound is the bound, not a measurement.
measuring, needs more dataThe cost-of-living series does not yet hold two samples far enough apart to support a daily rate.
not yet measuredCapital stock, investment and inventory stock. There is no source for these, so nothing is rendered.
a dashThe measurement is not armed on this server, so the card shows a dash rather than a fabricated zero.

The Faucets and Sinks cards name their top sources by display name rather than by internal tag, so you read "job and sale pay" or "Writ Fund" instead of an identifier. The verdict card compares net new money against goods produced and says which way it is leaning, and it carries one clause explaining a discrepancy players kept finding by hand: the faucet count books Writ Fund coins when they are created, while the money supply counts them only when they are claimed, so faucets can lead M without either number being wrong.

Where to look

CommandWhat it opens
/economyThe dashboard for your own faction zone. Aliases /eco and /econ. Everyone can use it.
/economy with no factionThe world view instead of a refusal: global money supply, seven-day faucet and sink buckets with their ratio, the world zone's cost of living and inflation, the commodity spot board, a Market Hours card and a pointer to joining a faction.
/economy explainA written walkthrough: what faucets and sinks are, what "goods" means, how Cost of Living, Money Growth and Inflation differ, why prices move, why prices hold overnight, and what you can actually do about any of it.
/faction economyThe same dashboard from inside the faction menu. Members only, because it is a faction subcommand. The standalone /economy is the universal door.
/bank balanceYour balances, with a line pointing at /economy.
/f infoFaction summary, with a one-line economy reading and the same pointer.

Bedrock players get a native form rather than a translated chest menu, built from the same card data, with the same five lines folded into each button. The screen is read-only in both clients: clicking a card does nothing, because there is nothing on it to change.

Java players connect on blacklight-network.de. Bedrock players use the same address on port 19132.