🏀 How the simulation works

Every Auctionball match is played out by a possession-based, spatial, Monte-Carlo engine — the same code runs on the server for both teams, and it is deterministic from a seed, so any game can be replayed exactly.

Space is real

Every player holds court coordinates. Shot quality depends on where everyone is standing, not just on who is nominally guarding whom. A help defender who rotates over opens up the man he left — that is where drive-and-kick comes from, and it falls out of the geometry rather than being special-cased.

Matchups decide shots

One-on-one assignments, size and speed mismatches, a rim protector who guts layups at the basket, a hard closeout that smothers a three — each of these moves the number. The make probability for a given attempt is:

pMake = base(zone) × contest × defender × form × fatigue × clutch × synergy

Each term is its own small model, so a shot can be a good look for one roster and a bad one for another out of the same set of five players.

Chemistry is a multiplier, not a bonus

Spacing and gravity, a genuine playmaking hub, rim pressure, interior defense, switchability, ball-dominance clashes between two players who both need the ball, and named historical duos all bend the odds. This is why fit beats raw talent in Auctionball: five stars who all want the same touches will lose to four good players who fit around one.

Fouls and foul-outs

Whistles are distributed across the defenders actually involved in a play — the on-ball defender, help defenders, and rotations — rather than piling onto whoever is guarding the ball. Six fouls puts a player in real trouble and eight ends his night, with a replacement-level bench player checking in to finish. A defender close to his limit stops reaching, which means he fouls less and gives up more, so hunting a foul-prone big is a live strategy rather than a stat-sheet curiosity.

Calibrated to reality

The engine is tuned against real NBA rates — roughly 107 points, 46% FG, 37% 3P, and 78% FT across hundreds of simulated games. Team fouls and free-throw attempts sit close to real league rates too. Calibration is re-run whenever the player pool or the engine changes, so the numbers stay honest.

The short version

About 100 possessions per team. Each possession is a decision that resolves into a shot, a turnover, or a foul. The same seed and the same rosters always produce the same game — which is what makes the box score, the awards, and the win breakdown on the results screen worth reading.