A 2×2 zero-sum game with illustrative payoffs: when should the kicker go Left or Right, and why is unpredictability optimal?
The science
A zero-sum 2×2 game. The kicker chooses Left or Right, the keeper chooses a side to dive to (Left/Right as seen by the kicker). The four numbers a, b, c, d are the probabilities of scoring for (Left,Left), (Left,Right), (Right,Left), (Right,Right). These payoffs are illustrative, chosen for the demonstration. They are not measured data about any player, team or league.
Mixed equilibrium. If the kicker aims Left with probability p, the scoring chance against a keeper diving Left is p a + (1−p) c and against one diving Right p b + (1−p) d. The kicker maximises the worse of the two (maximin); it is best to make the keeper indifferent: p* = (d − c)/(a − b − c + d). By symmetry the keeper's dive probability is q* = (d − b)/(a − b − c + d) and the value of the game is V = (ad − bc)/(a − b − c + d). In the graph, the equilibrium is the highest point of the lower envelope (the thick line), where the two lines cross.
Numerical check. The closed form is compared with a brute-force search over a 10 000-point grid of p (maximin) and q (minimax); test_numeric.js repeats this for four payoff tables, checks the indifference conditions, a pure-strategy (dominant side) case, and a seeded 200 000-shot Monte Carlo whose goal rate matches V within three standard errors.
Playing against the keeper. “Equilibrium” mode draws the keeper's dive from q*. “Learning” mode dives to the best response to your observed left/right frequency (85 % of the time): a predictable kicker is punished, while the equilibrium mix cannot be exploited. Shots use a fixed random seed so a session is repeatable after Reset.
Honest simplifications. Real penalties also involve height, power, the keeper's reaction time and the kicker's skill; this model reduces them to four illustrative probabilities and two choices. Players here are generic figures.