Card Game β Balance & Strategy Analysis
TL;DR
Overnight I shipped the full buzz/rotation/bonus overhaul + a per-game Elo ladder, then ran a 2,400-game bot-vs-bot tournament on the live tuned model to stress-test balance and strategy. The core fixes work: specialists now reliably win their categories (a 94-ess card beats a 68-ess card to the buzz ~100%, up from ~50% in a crowded field), buzzing is genuinely risky (weak cards neg 70-86% on hard questions), fatigue bites (~1 tier lost per 3 questions), and rest-and-return rotation is mechanically real. The tournament surfaces one clear balance issue β aggressive on-category specialists dominate optimal play β and confirms your instinct that captains are power-balanced but flavor-identical (so: abilities, not stat changes). Everything is live at nsba.djiang.xyz/cardgame/play. Details, numbers, and a prioritized tuning list below.
How this was tested
All numbers are from scripts/oneoffs/balance_analysis.py β bot-vs-bot games on the exact live config (resolution_model=field, winner_picks, 10-card decks, 4-seat tables) over the real 198-card pool. Two caveats up front: (1) a bot policy is an imperfect proxy for a strategy β "the rotation bot loses" can mean the bot pilots badly, not that staggering is bad; I flag where this matters. (2) Bots play near-optimally and identically, so they make far fewer mistakes than a human β neg rates and upsets are lower in bot games than they'll feel in your hands.
1. The buzz race β the core fix (before β after)
The problem you kept hitting: mediocre cards out-buzzing specialists, no negs, and implausible timing. Root cause was a single overtuned constant, FIELD_NOISE_SD = 26, bigger than most skill gaps *and* bigger than the aggression shift, so luck drowned skill. Retuned to 10, with skill weighted harder (FIELD_SKILL_WEIGHT 1.8 β 2.6):
Verdict: the buzz feel is fixed. Skill wins by default; stealing is a deliberate, costed risk.
2. Drafting strategy β specialists are strong, maybe too strong
Controlled tables, seat-0 archetype vs 3 generalists (fair share = 25%):
And the free-for-all tournament (12 bots, 2,400 games) tells the same story β the top four are all aggressive on-category specialists (spike 50%, boosteasy 45%, oppaware 44%, mono 39%), the bottom are rounded/rotation play (smartfield 13%, rotation 11%).
Interpretation: your "specialist ceiling > generalist" goal is *achieved* β arguably overachieved. Against good piloting, a specialist steered onto its categories just wins; the "harder to execute / punished off-category" cost isn't biting because the bots steer well and the category-card economy lets them stay on-topic. This is the #1 balance flag (see recommendations). The lever is the category-card economy (make steering scarcer / off-category exposure harsher) and/or energy-round frequency (energy favors generalists).
Synergy is currently a *neutral* draft β a same-team stack realizes ~1.28 shared-team pairs per fielded round (the +18 speed bonus is firing), but it doesn't out-perform a flat generalist draft. It's a fine flavor axis but not yet a competitive one; if you want synergy to be a real strategy, the team bonus needs to be worth more than the raw-strength you give up to chase it.
3. Rotation & stamina β front-load vs stagger
You asked specifically: do you play your strongest four first, or stagger your rotation? The mechanics are healthy β rest-and-return works (26 benchβfield returns per game; a benched star recovers to fresh in ~3 questions; fatigue drops ~1 tier per 3 contests). But the result is counter-intuitive:
Why (and the caveat): with regen this generous, you don't *need* to pre-emptively rotate β you can ride your best four, and only swap a card once it's genuinely worn, because a short rest fully restores it. The rotation bot rotates *too early*, giving up peak-stat rounds to rest cards that weren't tired yet. So on current tuning the answer is "front-load, and rotate reactively" β stagger-from-the-start is a trap.
Is that the game you want? Probably not β you wanted rotation to be a live judgment call, and right now "ride your studs, rest only when red" is close to strictly correct. Two dials: make regen slower (so a rested card doesn't come back fully fresh β staggering to never-fully-fatigue becomes worth it) or make decay hit sooner (so four questions of front-loading already costs you). This is the #2 balance flag. Worth a gut-check in a real playthrough first β it may *feel* fine even if the bots solve it.
4. Bonuses β the knowledge axis works
Bonuses are now a pure knowledge test (no speed): answered by your highest-knowledge fielded card in the category, off its *fatigue-decayed* skill. Difficulty-scaled with a real miss chance:
This is a genuinely different sub-game from tossups and it does what you wanted: a slow, brilliant specialist who loses the buzzer race still earns their slot by converting bonuses. Overall bonus conversion across bot games was 87% (bots always have a good card for the category they steered to β a human off-category will see the misses). Two scope trims the agent flagged: lock-in is declared at commit ("if I win, lock in") rather than a post-win pause, and there's no moderator-reads-a-bonus + huddle animation yet β the timeline's "bonusβ¦" beat plays instead. Both are clean follow-ups if you want the literal version.
5. Card & tier balance β healthy
Field-presence by tier across the tournament (card-rounds fielded): legendary 15%, epic 14%, rare 23%, uncommon 31%, common 17%. Commons and uncommons are not dead weight β they see real play, which is exactly what you want from a 1/1/2/3/3 deck where you can only field 4 at once. No single card ran away with games. Captain field-presence (15%) is healthy too β you field your captain most rounds but not every round, because fatigue forces rotation.
Runaway is moderate: longest single-coach convert streak averaged 3.5 (max 9) per game, and the category-card budget (24/n, spend-till-empty) is doing its job limiting a leader from steering to their strength every round. Not broken, but the streaks are on the high side β if games feel snowbally, tightening the category budget is the dial.
6. Captains β balanced power, identical feel (β abilities)
You nailed this before I even ran it. Power is well-balanced: every captain wins 19-29% when a seat leads with them (fair share 25%), no broken outlier:
That Β±5% spread is *fine* β you can't misdraft a captain. But 7 of the 10 are near-identical elite generalists (OVR 80-87, small stat spreads), differing only in *which* categories, not in *how they play*. Only three have a real identity: VulcanForge (phys/math cannon, dead in bio/ess), ne (chem/phys/math spike), akhil (ess/chem, weak math). That's *why* they feel the same β most of them are the same archetype reskinned.
Fix = abilities, not stats (they're already balanced). Here are ten ability sketches, each tied to a captain's real identity, designed to differentiate *play-feel* without touching the tight power band β for you to approve/reshape later:
These map to distinct roles (burst, endurance, bonus, tempo, control, rotation) so drafting a captain would actually change your gameplan.
7. Bot Elo ladder β recalibrated
The new ladder (/cardgame/ladder) rates you per game vs fixed-Elo bots. The tournament caught that my initial bot Elos were inverted β I'd rated smartfield 1500 (it actually wins ~13%) and spike 1000 (it wins ~50%). Fixed: bot Elos now track measured strength (spike/boosteasy/oppaware ~1450-1500, rotation/smartfield ~1020-1050). Side note: smartfield under-performing its "prices every lever" role is itself a bot-tuning flag β its heuristic is mis-priced for the new buzz model. Not urgent (it's just an opponent), but it's why the "smart" bot is currently a pushover.
Prioritized recommendations
1. Playtest the buzz/rotation feel first β the model is fixed on paper; confirm fatigue at ~Q12 and specialists-win *feel* right in your hands before tuning further. (Numbers say yes; your gut is the judge.)
2. Rein in specialist dominance (#1 flag). Specialists win ~60% vs generalists against good steering. Tighten the category-card budget or make off-category rounds harsher so the "hard to execute" cost actually bites.
3. Make rotation a real decision (#2 flag). Front-loading + reactive rest currently beats staggering because regen is too generous. Slow regen or steepen early decay so proactive rotation earns its keep.
4. Decide the bonus follow-ups β do you want the literal post-win lock-in pause + the moderator-reads-a-bonus + huddle animation? Both are clean adds.
5. Approve/reshape the captain abilities β pick which of the ten sketches to build; that's what breaks the "they all feel the same."
6. Re-tune the smartfield bot eventually so the ladder's mid-tier opponent isn't a pushover.
What's live right now
Everything above is deployed to nsba.djiang.xyz/cardgame/play (and the ladder at /cardgame/ladder, gallery at /cardgame/all). The buzz overhaul, per-card postures, steep fatigue + regen, forced/unlimited swaps, 0-100 freshness bar, knowledge bonuses, post-round breakdown panel, and Elo recording are all in. 889 backend tests pass. The two known gaps are the bonus lock-in pause and the moderator-bonus animation.