Problem
Most simultaneous-bidding games are either trivially solvable once you know the parameters or completely opaque about why a strategy works, which makes them stop being fun once one player figures out the dominant move.
What I built
A two-player web game on a 19-hex map. Each round, three hexes become available, and both players secretly pick one and submit a bid simultaneously. Before writing any UI, I built a Node.js simulation harness that ran thousands of games across parameter combinations to find stable values for starting reserves, bid caps, and underdog bonuses, so the balance was tested in the abstract before it had to look good.
Hardest part
Tuning the underdog bonus. Too small and the player who falls behind early never recovers, which makes the back half of every game predictable. Too large and the leader's early decisions stop mattering. Finding the band where both states stayed competitive took most of the simulation runs.
What I'd change
I'd add a replay viewer for the simulated games rather than just aggregate stats, since several balance issues were only obvious once I watched what individual games actually looked like instead of trusting the summary numbers.