Ice Hockey

HOME 0 20:00period 1 0 AWAY
you 0.0 m/s · lean 0° · puck 0.0 m/s · shots 0 / 0 · saves 0 / 0 · flex 85

How to play

You are the player in the yellow helmet. Arrow keys or WASD skate and lean; space is a slap shot, E a wrist shot, shift or Q a pass to the nearest team-mate. On a touch screen, the buttons over the rink do the same: ◀ and ▶ lean, skate strides, and pass, wrist and slap are the three stick actions. Three periods, and the clock only runs while the puck is live.

Steering is not a steering wheel. You lean, the blade's rocker bites, and the arc you carve is the rocker radius divided by the sine of the lean. At speed that arc is tight and the lean is deep; slowly, a blade will not carve at all and you have to step the turn. The stick flex slider changes the shaft's rigidity, and it changes the shot because the shaft is integrated as a beam, not because a number is multiplied by it.

About this app

Ice hockey is not anybody's property. There is no original author to credit here the way there is for a video game: the sport is older than any of its leagues, and its rules and its rink are published by the International Ice Hockey Federation. This app replicates the IIHF's Official Rule Book 2024/25 and nothing else. It uses no league's name, no team, no logo, no crest and no player. The two sweaters are red and blue because those were free.

What this app is, then, is a physics replica: three mechanisms that browser sports games normally replace with a number, each built from a published definition and each checked against something it did not produce.

  1. The blade is anisotropic. Along its length it glides at a coefficient of a few thousandths; across its length it does not slide at all until the edge lets go. That is the opposite of an ordinary sliding contact, which would resist the same in every direction. It is also why a skater cannot push backwards to go forward, and has to push sideways against an edge instead.
  2. The shaft is a beam with a published stiffness. A stick's flex number is defined as the pounds-force that bends the shaft one inch, and the design formula quoted with it is the three-point bending stiffness of a beam. So the shaft here is integrated as a beam and the build fails if a stick labelled 85 does not need 85 pounds-force to bend an inch.
  3. The puck slides and spins at the same time. Every patch of a puck's face slides in its own direction, so the drag depends on the spin and the spin-down depends on the slide. The face integral is done numerically here; the closed form and its published attractor were used only to check it.

Credits and sources

The rink, the goal, the puck and the stick's legal dimensions are the IIHF Official Rule Book 2024/25 and the IIHF's Rules for Ice Rinks. The flex definition and the design formula are from the Wikipedia article Ice hockey stick. The measured shaft stiffnesses are Pearsall et al. (1999) and Wu et al. (2003), read through A. Villaseñor-Herrera's McGill thesis Recoil effect of the ice hockey stick during a slap shot. Ice friction is J. M. J. van Leeuwen, Skating on slippery ice, SciPost Phys. 3, 042 (2017) and The friction of tilted skates on ice, SciPost Phys. 8, 059 (2020), with the measured values he quotes from de Koning, de Groot and van Ingen Schenau (1992). Puck-on-blade friction and the anatomy of a slap shot are Plesch, Plesník and Ružičková, arXiv:1903.02635. The sliding-and-spinning disk is Farkas, Bartels, Unger and Wolf, Frictional coupling between sliding and spinning motion, Phys. Rev. Lett. 90, 248302 (2003), arXiv:physics/0210024. CREDITS.txt lists every one with what was taken from it and what could not be reached.

This is an independent reimplementation written from published documents. No code, art, audio or data from any commercial hockey game was used, examined or copied.

What is modelled, what is quoted, and what is mine

Every number this app runs on is in one of three states, and this section says which. A quoted number comes out of a document that was downloaded and read during the build. A reconstructed number is one nobody publishes that I had to choose, and it is marked. A calibrated number was fitted to a published measurement — there are exactly two of them in the whole app and they are named below.

The rink, quoted from the IIHF Official Rule Book 2024/25

QuantityValueRule
Rink60.0 × 30.0 m1.2, “60 m long and 26 m to 30 m wide”
Corner radius8.5 m1.2, “a radius of 7.0 m to 8.50 m”
Boards1.07 m1.3, the ideal height
Goal line4.0 m from each end1.5
Goal mouth1.83 m wide, 1.22 m high2.1, inside the posts
Puck76 mm across, 25 mm thick, 165 g13.1, mass band 156–170 g
Stick1.63 m max, blade 32 cm, curve 19 mm10.1
Ice area1738.0 m²computed from the above

A correction to a published source

The English Wikipedia article Ice hockey rink states that the blue lines are 15.0 m apart and cites the IIHF rule book above. That document does not say so. Rule 1.5 divides the ice between the goals into three zones and gives no figure; the IIHF’s older Rules for Ice Rinks says those three parts are equal. On a 60 m rink with the goal lines 4.0 m from each end, an equal zone is 17.3333 m, not 15.0 m, and the blue lines land 8.6667 m either side of centre. This app builds the equal-thirds rink. I could find no IIHF text supporting the other figure and would not quote a number whose stated source contradicts it.

The stick, and the two load cases that are not each other

A stick’s flex rating is published as the pounds-force that deflects the shaft one inch, and the design formula quoted with it is F = 48 E I d / L³ — which is a beam simply supported at both ends and loaded at midspan, a three-point test. A cantilever of the same span is 3 E I / L³, sixteen times softer, and a shot is a cantilever. Both live in this app under their own names.

The blade

The ice: a bracket, not a number

van Leeuwen’s theory gives 0.0020 for skating conditions and he says himself that it is too low; the only real measurements, de Koning et al. (1992) read through him, give 0.0054 straight and 0.0069 in the curves. A factor of three, and the author of the theory is the one pointing it out. This app uses values inside that bracket and prints the bracket.

The puck, and a typo in a physics paper

Every patch of a sliding puck’s face moves in its own direction, so the drag depends on the spin and the spin-down depends on the slide. This app integrates that over the face numerically. Farkas, Bartels, Unger and Wolf (Phys. Rev. Lett. 90, 248302, 2003) give the closed form and the result that the two motions stop at the same moment, approaching 0.653 whatever they start at. This engine reproduces that to under a per cent, having never seen it.

Checking it turned up something else. The paper’s printed torque branch for e ≥ 1 is a factor of e² too small, and four independent things say so: the paper’s own stated derivative, a direct quadrature of its own defining integral, this engine, and continuity at e = 1. It survived because T(1), T(∞) and even the published e₀ are all invariant under the error.

A puck on edge topples once it leans past 18.2° from vertical, which is why pucks lie flat and why they are frozen before play.

The shot: two calibrated numbers, and one prediction that failed

What is not modelled at all

Body checking; penalties; offside and icing beyond the line test; the goaltender’s equipment as separate colliding bodies; ice wear during a period; the temperature dependence of anything; and the pre-melt film physics that produces ice friction in the first place — the friction here is a coefficient with a disclosed bracket, not a hydrodynamic layer. A wrist shot is given the same one-millisecond collision as a slap shot, where the literature reports a hundred milliseconds of contact; the long push is not modelled.