Skip to content

Dev Log · Anpfiff1, Update, Measuring, Balance

Anpfiff1 2.2.2: a half-time talk that was too strong at first, and a stadium that needed 530 milliseconds per frame

27 September to 12 October 2026:

Anpfiff1 2.2.2 has been on Google Play, Steam and itch.io since 12 October, and the App Store follows once Apple has reviewed it. Unlike 2.2.1 this version has features you can advertise: a new stadium, a half-time talk and an event calendar. In the two weeks in between, around 160 commits were made. This is what could be measured and what we changed afterwards.

The half-time talk was too strong

The idea comes from the World Cup Edition: at half-time you say something to the team, and the second half plays differently. The measurement came before the interface was built. A probe played 2000 games per step between evenly matched Bundesliga pairings with the same random seed and compared only the team with the talk.

The first calibration (morale plus team strength with 15 and 5 points) gave:

  • best talk: +2.50 league points per 34 games
  • worst talk: −1.84 points per 34 games

That was the target of two to three points, on paper. In the game every well-judged talk could have shifted a season. Morale alone was too weak: +0.27 points per season for the best talk, within the measurement noise of about ±0.2.

The calibration was replaced on 8 October. With the final values (team strength 1.5 and 0.5, morale up to 10) the measurement with 1000 games per step looks like this:

  • morale 5, best talk: +0.27 points per 34 games
  • morale 5, worst talk: −1.05 points per 34 games
  • morale 8, worst talk: −0.41, best: +0.48

The noise is about ±0.3 per season. So the talk is not a lever that decides a championship, but a wrong one costs noticeably more than a right one brings. That is intended: if you say nothing you get exactly zero, and without a talk the game is bit-identical to the old version, checked on 160 games.

The event calendar and the wrong hook

The World Cup Edition has days, many of them without a match. Anpfiff1 has weeks, almost every one with a match of its own. So there is one event per week, 36 to choose from in six groups of six. Fitness and freshness work only half as strongly as in the World Cup Edition, form only up to the existing cap, losses without a cap.

Booking does not happen in the weekly chain, as first built, but in advance_week. The reason was a timing error: the youth chain runs after the week advances in a break week, but before it in a league week. An event would have taken effect at a different time depending on the kind of week. advance_week is the one place where every week passes exactly once.

So that the same event does not always win, it wears off: within a window of 8 weeks every repeat costs 0.35 of the effect, for events of the same group it is 0.08 within 6 weeks. Never less than a quarter, and only gains fade, costs do not. A guard with 39 checks secures this, and in the mutation test one of them found a floating-point trap in the list of winter breaks.

The stadium: 530 down to 31 milliseconds

Eight stands became 98 blocks plus a fixed inner ring of 14 blocks, 150,000 seats in total when fully built. When old stadiums are converted, the sums per type are kept exactly up to 120,000 seats.

The stadium is alive: fans arrive on foot, by bike and with prams, and the sprinklers run across the pitch. That was too expensive at first:

  • figures as draw calls: 585 per frame, then 195 as baked textures
  • figures as nodes, drawn once and only moved: 31 instead of 530 milliseconds per frame

A stadium that stutters while you look at it would have been unusable on a weak phone.

Interviews with the result

A player reported that the post-match interview does not show the result at all. Now a result board with club crests, the final score, goal scorers and cards comes first. Questions about the course of the game only appear if the consolation goal or the comeback really happened. On top came 102 new events and 105 corrections from a review pass.

What is not proven

  • The half-time talk was only measured in text mode; in instant mode there is no half-time.
  • The measurements come from Bundesliga pairings, other leagues may differ.
A lever you have not measured is a guess with a button.

Warm regards from the workshopDigitale Manufaktur Rudolstadt