Devlog

The Moon took seventeen seconds

Idle Broker has six generator tiers and seven cities. The tiers are the shop you climb; the cities are the permanent multipliers you climb it in. Every city multiplied your income by six. Not one of them touched a single price. I knew that was wrong in principle for months before I found out how wrong it was in practice, and the answer was that the last city finished the entire shop in less time than it takes to read this paragraph.

The complaint that started it

The report was “slow early game, then it rushes”, which is the kind of feedback that is obviously true and completely useless. Slow compared to what? Rushes where? Every idle game speeds up — that is the genre. The question is whether it speeds up on purpose.

So I stopped reading the code and wrote something that could answer it. lib/economySim.ts is a discrete-event simulator that plays a whole run under a stated policy — buy the cheapest payback first, or climb the ladder tier by tier — and reports when each generator was first bought, when it was automated, and when the run crosses one, two, three and five stars. The important part is that it does not reimplement the economy. It imports the same lib/economy.ts the game charges you from. A simulator with its own copy of the maths measures the copy.

What it said

The generator ladder was fine. Past the opening two steps — which are deliberately even, after an earlier fix for a payback inversion — the gaps between tiers roughly double, and the top tier arrives right about at the first star: forty-nine minutes in, against fifty-two for the star. That is an idle curve doing its job. The “then it rushes” was not in the ladder at all. It was that the ladder got shorter in every city:

CityTime to the top tier — beforeafter
New York48m 58s48m 58s
London7m 53s49m 05s
Tokyo33s49m 05s
Moon17s49m 05s

Forty-nine minutes of shop in New York. Seventeen seconds of it on the Moon. Every city multiplied income by six and left the price tags where they were, so each step up the map compressed the whole six-tier ladder by another factor of six. By the last city the shop was not a progression, it was a formality — you bought everything at once because everything was free.

Advertisement

One multiplier, in one place

The fix is small and the smallness is the point. Four functions price things — a generator, a bulk buy, an automation, and the “how many can I afford” calculation behind the MAX button — and all four get their multiplier from one function. So the region factor goes in there, once, and every price in the game inherits it. A Hong Kong desk now costs 36× a New York one and earns 36× as much.

Before committing to the full factor I measured the half-measures, because “scale prices a bit” sounds like the moderate, sensible option:

Price exponentLondonTokyoMoon
0.00 — no scaling (the bug)7m 53s33s17s
0.50 — square root20m 11s3m 12s33s
0.75 — three quarters31m 28s11m 59s3m 12s
1.00 — the full factor49m 05s49m 05s49m 05s

Anything short of the full factor just moves the collapse further up the map. At three quarters the Moon still finishes the shop in three minutes. There is no moderate version of this: either prices carry the city's multiplier or the city eventually erases the shop.

Three things the fix quietly depends on

Each of these is a line of code that looks optional and is not. I am writing them down because the version of me that comes back to this in a year will not remember.

  • The factor is applied after the gem market rig, never folded into it. Rigging the market is a gem purchase that pins your prices to a deep discount for the rest of the run. It replaces the market phase rather than stacking with it — so if the region factor lived inside the same multiplier, rigging would cancel it and hand a Moon player New York prices against Moon income. That is a 46,656× exploit for thirty gems, and it would have shipped as a one-line ordering mistake.
  • Seed capital scales with it. A run opens with just enough to hire one Intern, because the Trade button pays nothing on its own and an empty desk cannot earn. A Moon Intern costs about 525,000 at the opening bell. Twenty-five flat coins against that is not a hard opening, it is a run that cannot be started at all.
  • The cloud-save plausibility floor deliberately does not scale. The server rejects a save claiming a lineup it could not have paid for, and that floor is computed at New York prices. Scaling it would be arithmetically tidier and would reject every save written before this change. It stays a looser bound on purpose.

Advertisement

Then why move city at all?

This is the objection I expected, and it is a fair one. If income and prices both multiply by six, moving is purchasing-power-neutral. What did you buy with those stars?

The star bar. The prestige threshold grows ×3 per region while income grows ×6, and that gap is the entire reward. The shop plays the same length in every city, but the stars arrive about twice as fast in each one. Measured, on the ladder policy: three stars takes 1h 44m in New York, 54m in Tokyo and 30m on the Moon.

That factor-of-two per region is the pacing the map was always reaching for. It just used to be buried under a factor of six that deleted the shop instead.

What it feels like if you were already playing

I want to be straight about this rather than bury it. If you had a deep desk in a late city, this change is a one-time nerf and you will notice it. Your coins, your generators and your income are untouched — but what they buy moves. A Moon desk holding 120 of every generator used to be a hundredth of a second from its next unit, measured, and is now about eight and a half minutes from it.

That is the missing factor arriving all at once, and it lands you exactly where a New York player of the same size stands. It is also a one-time cost rather than an ongoing one: moving city now multiplies income and prices by six together, so a move is purchasing-power-neutral from here on, and after a single prestige everyone is on the measured curve.

No save was wiped and none needed to be. The plausibility floor still accepts every save written before the change, which is exactly why it was left unscaled.

The part I would do differently

The simulator should have existed first. Every number in this post was available from day one — the pricing functions were right there, and nothing about “income scales, prices do not” needed a tester to discover. What was missing was anything that would say so out loud. A balance problem that only shows up forty hours in is not going to be found by playing; it has to be computed.

The simulator now runs in the test suite, and two of those tests exist purely to stop it drifting away from the game: one asserts the ladder is region-invariant, and one asserts the simulator's own price exponent still equals what the shop charges. Without that second one a future change could quietly make the simulator describe a game that no longer exists, which is a worse failure than having no simulator at all. If you want the practical version of all this, it is in the prestige and regions guide; the curve that this one sits on top of is in the prestige curve that collapsed.