5.0 KiB
5.0 KiB
Balance guide (M8)
How hard the game is, what makes it hard, and how to retune it without breaking the shape.
Intended difficulty
Hard, but a competent player wins; bold play is rewarded up to a point; extremes end in a fall.
| Player | What it does | Expected result |
|---|---|---|
random |
never touches the budget, coin-flips every card | about 80 % reach the end, grade D |
randomRescue |
same, but reacts when a danger warning opens the emergency session | about 95 % survive |
plannerHuman |
balanced plan: growth sectors up, order up late, taxes up a few points; answers cards with 30 % mistakes | survives, grade B (A in about 1 run in 6) |
plannerOracle |
same plan, reads the real card effects | survives, grade A, S about 1 run in 12 |
planner05 / 15 / 2 / 3 |
the same plan, 0.5x / 1.5x / 2x / 3x as bold | 100 % / 100 % (more A grades) / about 60 % / default every time |
spendthrift, ruin, welfare |
borrow to spend | default in most runs |
starve, deepCuts, austerity |
cut everything | revolution |
tyrant, policeState, militarist |
repression and arms | impeachment, revolution or a bad grade |
neglectArmy |
army at 10 % | coup |
austerityMild, taxMild, policeMild, spendMild, welfareMild |
milder versions of the above | playable (75 to 100 % survive) |
The same table, with numeric bands, lives in TARGETS in tools/balance-check.mjs.
Tools
node tools/balance-check.mjs [seeds] [player,...]plays full terms and prints survival, score, grades, endings and final averages.--checkruns every band inTARGETSand exits with an error when one is out of band (24 seeds, about 30 s).--set path=valueoverrides abalance.jsonvalue in memory:--set gain=3.4 --set debt.premiumCoef=0.0006.node tools/balance-search.mjs [iterations] [seeds]hill-climbs the best two-phase budget (early and late multipliers per sector group and per tax). It shows the ceiling: about 63 to 65 with human-like card answers. Its output was the basis for theplannerplayer.node tools/bal-edit.mjs path=value ...editsbalance.jsonand keeps its compact layout.node tools/card-stats.mjsfor the card pool;node tools/engine-check.mjsfor the engine rules.
Workflow for a change: edit with --set first, read the table, commit the value with bal-edit, run --check, then
go test ./server and node tools/engine-check.mjs.
What makes the game hard (all values in balance.json)
- Drift (
indicators.*.drift, scaled bydriftScale): each indicator's target slides every year (opinion fades, order and stability erode, unrest creeps up). Standing still loses ground, so passive play slides toward a revolution. - Needs grow (
needGrowth, per sector per year): the tick in the ledger moves; a frozen budget buys less quality. - World cycle (
world): a slow global business cycle plus shocks. It moves growth and inflation, andfiscal.growthSensmakes receipts follow growth, so a slump becomes a deficit. Newspaper headlines announce it. - Debt (
debt.premiumCoef,gameOver.default): the interest premium is steep above 100 % of GDP. Default at 165 %, warning at 135 %. Bond-panic and rating cards fire on the way. - Gain (
gain): how strongly sector quality moves the indicators. High enough that the budget visibly matters. - Score (
score.lastYearShare): the last year counts for half of the average, so a boom bought on credit does not pay.
What rewards audacity
- Excellence terms (
indicators.*.excess,vars.growth.excess): extra payoff above a sector quality of 70 to 75 (research, education, infrastructure, industry for growth; health and social for opinion; culture and foreign affairs for soft power). Quality 75 needs a budget of about 1.6x the need, so it is a real commitment. Neglect terms (short) punish the opposite. - Windfall cards (
cri_wf_*): fire only when a sector quality is high for long enough.
What punishes extremes
- Backlash cards (
cri_bk_*): fire on the player's own choices, through the condition keysratio:<sector>(budget over need) andtax:<id>(rate): police state, arms race, tax strikes, capital flight, rating downgrades, hospital wards closing. - Game overs: revolution (unrest above 62 and opinion below 28), coup (army loyalty under 35 with stability under 50, or under 18 alone), impeachment, default. The chance grows each day in the zone (0.004 per day of presence).
- Emergency session: a new danger warning opens the budget ledger at once (at most once per 45 days) so the player can react before the next quarter.
Known soft spots
Sis rare by design (score 73). The best human-like runs reach about 71.- Unrest runs about +0.25 in the card pool because "no" answers lean toward unrest.
- Blanket austerity (x0.75 everywhere) is fatal; targeted austerity (cut culture, foreign affairs, administration, research and raise VAT) is survivable but scores poorly (grade D or F). That is deliberate: austerity costs political capital.