Every room is a different shape, at a different distance, with different people in it. That means there is no such thing as a default setting, and it took us longer than it should have to accept it.

What we tried first

Numbers in a config file. A threshold for “standing”, a threshold for “crouching”, tuned in our own space until it felt right.

It worked perfectly in the room it was tuned in and nowhere else. Move the camera two metres back and every value is wrong. Put four hundred people in instead of forty and every value is wrong. The settings encoded a specific room and pretended to be general.

What we do now

Ask the room, and measure.

Have everybody crouch, and capture. Have everybody stand, and capture. Those two readings define the actual range this actual audience produces in this actual room, and the game maps onto that range rather than onto a guess.

It takes about twenty seconds and it doubles as the instruction — the room learns what the two extremes are by doing them, which means the calibration and the tutorial are the same event. That was an accident and it is one of the better properties of the design.

What it does not fix

Calibration maps a range. It cannot widen one.

If the camera is positioned so that crouching and standing look nearly identical, the captured range is narrow, and mapping a full game onto a narrow range makes everything twitchy. We have measured setups where the two states came out under thirty percentage points apart, and no amount of clever mapping rescued it.

The fix there is physical — get the camera higher and more level, crop the analysis to where people actually are. Calibration is not a substitute for a camera position that can see the difference.

When to recalibrate

  • After the room fills. A half-full room and a full one are different pictures. Calibrating during doors and playing after everyone is seated is a common and avoidable failure.
  • If the lighting state changes between calibration and play.
  • If the camera is touched. Obvious, routinely forgotten in a busy changeover.

The lesson

We keep the manual sliders as an override, but we have stopped treating them as the primary path. A number typed into a box is a guess about a room you are standing in, and the room will tell you the answer if you ask it.