Skip to content

Balance simulator — findings (2026-11-10) ​

Runs of sim/ against the pure functions in core/. Reproduce with npm run sim.

Three rounds happened on the same day: an initial model, a problem it exposed, and the redesign that fixed it. All three are recorded, because the problem is the most useful thing here.


Round 1 — the skill curve ​

What the first attempt got wrong ​

The initial curve (geometric benefit decay, 0.975 per level) put a single day of training at 84.6% mastery. The entire six-month journey was decorative. Slowing the decay to 0.985 fixed it — but the shape was still wrong against the ladder Jonathan actually wanted.

The curve we have now ​

mastery(t) = 1 − exp(−a · t^b)      a ≈ 0.021, b ≈ 0.356

A stretched exponential, fitted by least squares to five anchors:

Trained forTargetActualMiss
10 minutes5%4.6%−0.4 pts
1 day20%24.2%+4.2 pts
2 weeks50%50.8%+0.8 pts
6 months90%82.8%−7.2 pts
10 years99%99.4%+0.4 pts

Four anchors land within a few points. Six months is the stubborn one: two constants cannot bend enough to hit all five simultaneously. A third parameter would close it at the cost of a curve nobody can hold in their head. Recorded, not hidden.

The consequence that nearly broke a pillar ​

This curve is far steeper than the one it replaced. The veteran gap went from 12 points to 49:

Mastery
Two weeks50.4%
Ten years99.4%

SKILLS.md had been claiming a two-week specialist was "genuinely the equal of anyone in their lane". Under this curve that claim was simply false, and pillar 6 — power plateaus, options don't — was exposed.

The fix is not to change the curve. It is to separate two things that had been conflated:

Mastery is a position on a curve, not a power multiplier.

The mastery range maps onto an effect band of 1.00× to 4.00× — wide, on Jonathan's call, because a decade of training has to be felt:

MasteryEffect
Fresh pilot0%1.00×
One day24.2%1.73×
Two weeks50.4%2.51×
10 years over 10 domains89.6%3.69×
10 years, one domain99.4%3.98×

Most of the band is bought in the first fortnight. One day doubles a fresh pilot; two weeks reaches 63% of the range; the last third costs years. A decade-old veteran is 58% better than a two-week specialist.

This only holds with a rule the simulator cannot enforce: skills never stack. One skill per activity, never two multiplied, or 4× compounds to 16×.

How years actually get spent ​

CareerDomainsMastery in each
2 weeks, focused150.8%
1 year, 2 domains282.9%
5 years, 6 domains688.0%
10 years, 10 domains1089.6%
10 years, 1 domain199.4%

Nobody spends a decade on one domain — there are many and mastering them all is not a plan anyone makes. A decade over ten domains lands where a focused player gets in a year, in ten things at once. Depth is cheap to start and ruinous to finish; breadth is what years are for.


Round 2 — the problem the first economy model exposed ​

The original design priced protection per colony: a rate on revenue, climbing with road distance. The simulator showed it could not deliver what the design promised.

Tax was a share of revenue. The cost of going unprotected — raids, lost trade — was also a share of revenue. So revenue cancelled out of the decision entirely.

Revenue/cycleTax owed at distance 14Unprotected lossPays?
1004635no
10,0004,6483,500no
1,000,000464,758350,000no

Identical at every size. A one-planet operation and a galactic conglomerate always made the same call, so prosperity could not move the frontier. The boundary was pinned to the road network and the risk constants, which made SECURITY-AND-SOVEREIGNTY.md §6's "breathing galaxy" an overclaim.

One genuinely useful result survived from that model: a well-defended colony stops paying sooner than an undefended one, because its own guns substitute for the Empire's. Defence buys independence, not just safety. That property is preserved in the model below.


Round 3 — shared insurance fixes it ​

Protection became a subscription whose cost is split between subscribers:

rate = patrolCost(roadDistance) / subscribers^0.8

The decision now turns on who else is nearby — a quantity player activity moves directly. Measured results, with going unprotected costing 35% of revenue:

Critical mass ​

Road distanceSubscribers needed before it is worth paying
01
43
87
1214
2034
2550

A lone colony can only afford protection near the roads. Beyond that, safety is something a crowd buys or nobody does — which is exactly the limit Jonathan asked for on solo players holding remote systems.

Collapse, not erosion ​

At road distance 10, as a region empties:

SubscribersEach paysWorth it?
2019.9%yes
1230.0%yes
1034.7%yes
841.5%no — drop out
472.2%no

Each departure raises everyone else's bill. Past the tipping point every remaining colony individually wants out, and the region goes dark in a cascade.

Safe space does not erode. It collapses.

And it grows the same way: every colony that subscribes cheapens the subscription for everyone nearby, so prosperity genuinely pushes the bubble outward. The breathing is real now, and it is fast.


Round 3b — coverage and the Ring ​

Two further conditions, answering different questions at different speeds.

Coverage — a system is fully safe only when every revenue-earning colony in it subscribes. Colonies earning nothing are excluded from the count, so a dormant squatter cannot deny the system protection. One earning holdout drops everyone to partial loot, which makes safety a collective action problem with real local politics.

The Imperial Ring — a radius in jumps. Inside it, full coverage buys genuine safety; outside it the navy arrives late and the ceiling is partial loot however unanimous the subscription. The Ring advances one jump per cycle while its edge is more than 90% colonised, retreats when it falls below, and never withdraws past a floor.

Road distanceRing 6Ring 10Ring 14Partial coverageNobody subscribes
6safesafesafecontestedlawless
10contestedsafesafecontestedlawless
14contestedcontestedsafecontestedlawless
18contestedcontestedcontestedcontestedlawless

Coverage is local and fast. The Ring is civilisational and slow. Neither does the other's job, and between them the frontier now has two independent clocks both driven by players.


Still not simulated ​

  • Influence and control turnover — needs several colonies per system and a trade-flow model.
  • Deposit depletion and migration, and whether prospecting stays viable over years.
  • Credit supply over time — whether subscriptions as the master sink converge against NPC bounty faucets.
  • Combat, unresolved in COMBAT.md §10 and unsimulable until it is settled.

Galaxy design documentation. Nothing here is implemented yet.