TABLE FOOTBALL - credits, sources, and everything that is reconstructed ======================================================================= WHAT THIS IS ------------ An independent reimplementation of the sport of table football, playable in a browser. It is not a copy of any product, any table, or any other game. All code and all art here are original. In the United States this game is usually called FOOSBALL. That word is a live United States trademark, so it is not used as this app's name - but it is what you were looking for, and this is it. THE ORIGINAL ------------ Table football has no single inventor, and the app says so rather than picking one: * Harold Searles Thornton, British patent GB 205,991 - filed 1921, granted 1923. The earliest known patent for the game. * Lucien Rosengart popularised it in France in the 1930s, where it is called "baby-foot". * Alejandro Finisterre patented a version in Spain in 1937. * Lawrence Patterson brought it to the United States in the 1950s. The sport's governing body is the INTERNATIONAL TABLE SOCCER FEDERATION (ITSF), founded in France in 2002. Its ruleset is what this game implements. THE RULES - SOURCED, CITED BY NAME ---------------------------------- SMR ITSF Rules of Table Soccer - STANDARD MATCHPLAY RULES, Version 2.0, December 2023 (published as "Standard Matchplay Rules 2024"). https://s3.tablesoccer.org/organization/ITSF/rules/Standard_Matchplay_Rules_2024_en.pdf CLA ITSF Rules of Table Soccer - CLASSIC MATCHPLAY RULES, Version 1.0, December 2025. https://s3.tablesoccer.org/organization/ITSF/rules/Classic_Rules_2025_en.pdf SUM ITSF Summary of Rule Changes 2024. https://s3.tablesoccer.org/organization/ITSF/rules/Summary_of_Rule_Changes_2024_en.pdf LEG ITSF Rules 2016 (superseded). Used ONLY where the SMR is deliberately silent. https://s3.tablesoccer.org/organization/ITSF/rules/Legay_Rules_2016_en.pdf Index http://www.tablesoccer.org/rules/ RULES ARE NAMED, NOT NUMBERED. SMR section 1.3 says so in the document itself: "Rules and penalties are named, rather than numbered." So every rule in this app is cited as `SMR
/ Rule: ` and never by a rule number, because there are none. Implemented and enforced, each cited by name: SMR 5.2 False Start, Wrong Figure, Incomplete Opening Sequence SMR 5.3 Delay of Game (3 s per restart stage; 5 s after a warning, reduced from 10 s in 2.0) SMR 6 Time Limit on Goalie Rods (15 s), on 5-rod (10 s), on 3-rod (15 s). THREE rules, not one: the 3-rod's expiry gives a GOALIE ROD possession award and the other two give a 5-ROD award. CLA collapses all three to 10 s. SMR 7.1 Point Scored, Between Points (5 s), Between Games (90 s) SMR 7.1.2 Time-out (30 s, two per team per game), Time-out Limit, Double Time-out, Premature Transition, Disallowed Time-out, Charged Time-out With None Remaining SMR 7.2 Dead Ball, Playing the Ball Dead, Flex Infraction SMR 7.3 Ball off Table, Airborne Catch, Illegal Aerial SMR 10 Illegal Spin - "more than 360 degrees either before or after making contact" SMR 11 Restricted pass - the 5-rod-to-3-rod and goalie-rod-to-5-rod table SMR 12 Three Walls, Trapped Ball Influence, Trapped Ball Transition SMR 15.2 Reset, 5-rod Reset, Self Reset SMR 15.3 Jar SMR 17 Penalty Shot, Penalty Shot Limit SMR 18 the penalty definitions, including Continue CLA Illegal Rotation (360 degrees REACHED, where the SMR needs it EXCEEDED) THE ITSF PUBLISHES NO TABLE OR EQUIPMENT DIMENSION STANDARD ----------------------------------------------------------- This is worth stating plainly, because it decides which figures below are sourced. The ITSF rules index (above) lists Standard Matchplay, Classic, Legacy 2016, 2-Legs, Rollerball, Scoreboard, Referee Code, Anti-Doping and the Race-to-N team formats. There is NO table standard, no equipment standard and no homologation annex. SMR 2.0 contains no length, no mass and no dimension of any kind - searched for mm, cm, inch and gram, the only numbers in the whole document are times, counts and the 360-degree spin threshold. The superseded 2016 rulebook says why, in its "MATERIALS AND HARDWARE / TABLE" section, verbatim: "The Official tables are voted by ITSF General Assembly. This choice of table can be modified according to the agreements between the ITSF and manufacturers and partners." The ITSF approves table MODELS - Bonzini, Roberto Sport, Garlando, Tornado, Leonhart - and those models genuinely differ in geometry. Any single set of dimensions is therefore a CHOICE OF TABLE and not an ITSF rule. GEOMETRY - WHAT IS SOURCED -------------------------- Ball diameter 34.5 mm Bonzini, "B90 ITSF Competition": the official ITSF-B ball, Ball mass 18.75 g "Diameter: 34.5 mm", "Weight: 18.5 to 19 g" (midpoint used), Ball material composite plastic, yellow. https://www.bonzini.com/en/content/14-itsf-competition Playing surface 120 x 70 cm de.wikipedia, "Tischfussball", section Masse: "Die Goal opening 20 x 8 cm Spielflaeche betraegt ca. 120 Zentimeter Laenge und 70 cm Figure height 70 mm Breite ... Die Tore sind ca. 20 cm breit und 8 cm hoch, die Figuren ca. 7 cm hoch". Every figure there is given as "ca." and is treated here as nominal, not exact. Rod order and goalkeeper 1 / defence 2 / opponent attack 3 / midfield 5 / figure counts opponent midfield 5 / attack 3 / opponent defence 2 / opponent goalkeeper 1 en.wikipedia, "Table football": "The following arrangement is common to ITSF competition tables". Eleven figures a side, twenty-two in all. Match format LEG section 2: "a match shall consist of the first player or team to win 3 out of 5 games. Each game shall consist of 5 points. The final game of the match shall be to 5 points with a 2 point margin up to a maximum of 8 points." The CURRENT ruleset fixes NEITHER number - SMR 2 defines only "points target" and "games target" and leaves both to the tournament director - so these are labelled as the 2016 defaults, not as ITSF constants, and they are parameters in the engine. GEOMETRY - WHAT IS RECONSTRUCTED, ITEM BY ITEM ---------------------------------------------- Each of these is a choice. Each says what constraint it was derived from. 1. ROD POSITIONS ALONG THE TABLE. Nothing fixes them. Reconstructed as eight evenly spaced rods with a half-step margin at each end wall: x_i = -L/2 + L(2i+1)/16, a pitch of 150 mm. 2. FIGURE SPACING ALONG A ROD. Also unfixed. Reconstructed from the one requirement the rules imply without stating it - the 5-rod is the passing and blocking rod and must be able to cover the whole width - so an n-figure rod gets a pitch of width/n. That single choice makes every rod laterally contiguous, which the reachability oracle then PROVES rather than assumes, and it is why the dead bands in this table are purely longitudinal. 3. ROD TRAVEL. Derived, not chosen: a rod slides until an outermost figure would leave the playfield, so travel = W - (n-1)*pitch - 2*figure radius. A 5-rod therefore has 124 mm of travel and a goalkeeper rod has 684 mm - which is how a real table behaves, and is a consequence rather than a number anybody picked. 4. FIGURE SHAPE. A capsule of radius 8 mm - the same capsule the physics collides against, so the picture and the physics are one object. 40% of the figure's height is above the rod axis; the foot clears the playfield by 2 mm, which has to be positive and small or the figure could not turn a full circle and the spinning rule would not exist. 5. WALL HEIGHT 80 mm, taken equal to the sourced goal height so the goal opening spans the full height of the end wall. ROD RADIUS 6.5 mm - SMR 2 makes the bare rod a contact surface, so it has to have one. 6. EVERY COEFFICIENT: restitution and Coulomb friction at the figures (0.42 / 0.35), the walls (0.55 / 0.18) and the playfield (0.30 / 0.24), rolling resistance (0.014), the rod's top slide rate (2.6 m/s) and rotation rate (40 rad/s) and their accelerations. 7. THE STATIONARY THRESHOLDS. 20 mm/s and 1.2 rad/s. SMR 2 makes a ball with ROTATION a moving ball, so both are needed. And HOW LONG "IMMEDIATELY" IS: 0.25 s. The rulebook hangs "stopped", "pinned" and "adjusted" on the words "not been immediately played" and never quantifies it; this app quantifies it once and every rule reads that one number. 8. THE OPPONENT'S REACTION TIMES: 380 / 230 / 110 ms. Anchored on simple visual-motor reaction time in a human being about 200-250 ms, so "club" sits there and the other two bracket it. THE DEAD BANDS - A REAL PROPERTY OF THE TABLE --------------------------------------------- A figure can only reach the strip of table its rod sweeps. Over a full turn the figure's capsule sweeps a DISC of radius (leg + figure radius) about the rod axis, so the ball - whose centre sits at 17.25 mm - can be touched only where its distance to the axis is at most leg + figure radius + ball radius. In closed form the longitudinal half-reach is reachX = sqrt((rFoot + figR + R)^2 - (axisZ - R)^2) = 52.87 mm against a rod pitch of 150 mm. So between every pair of consecutive rods there is a band 150 - 2(52.87) = 44.26 mm wide that NO FIGURE ON EITHER SIDE CAN REACH AT ANY LATERAL POSITION, plus a 22.13 mm strip against each end wall: nine bands, 354 mm of the 1200 mm length, 29.5% of the table. That sounds like a modelling error and it is not: * The limit is a hard consequence of the ball being small and low. Reach goes roughly as 2*sqrt(leg * ball radius); covering a 75 mm half-pitch would need an 81.5 mm leg on a 70 mm figure. No table football figure can reach the middle of a gap - try it on a real table. * THE RULEBOOK CONFIRMS IT. SMR 5.1.1 and 7.2 give a dedicated restart location for a "Dead ball BETWEEN THE 5-RODS" - a named row in the restart table for a ball that has stopped in the strip between the two 5-rods, which is exactly the widest of these bands. The ITSF would not need a restart rule for a place that could be reached. The bands are drawn faintly on the field, because a player who can see them understands immediately why a ball goes dead. WHAT DIFFERS FROM A REAL TABLE ------------------------------ * NO CURVE. A ball spinning about the VERTICAL axis on a flat surface experiences no lateral force - the model is exact about this - so there is no "banana" shot. The real effect comes from surface and aerodynamic behaviour that is not modelled. Horizontal-axis spin is modelled fully: a brushed contact leaves the foot turning and the skid-to-roll transition is real. * SINGLES ONLY. The doubles-specific rules - switching positions, a partner's distraction, one player leaving the table for a penalty shot - are not implemented. * NO REFEREE JUDGEMENT. Jarring, resets, distraction and playing the ball dead all turn on a human's reading of intent and impairment. Their penalty machinery is implemented and tested exhaustively, but nothing in the game declares them, because nothing here can honestly judge intent. The rules they would apply are in the engine and in the oracle. * THE OPENING SEQUENCE IS PLAYED FOR YOU after a restart - SMR 5.2 needs three contacts in order before the ball may be transitioned, and asking a player to perform that by hand on every kick-off would be a chore. The rule is still live: rotate the rod and knock the ball out of its reach during the sequence and Incomplete Opening Sequence fires as written. * The ball never leaves the playing area upward except over a wall; a ball lofted straight up and caught on the cabinet top is modelled as leaving the table rather than rolling back. * Figures are capsules with a head and a foot marker, not moulded figures. ART, CODE AND DEPENDENCIES -------------------------- All art is generated by tools-images.py (Python, PIL) from the same rod layout the engine uses. The renderer is hand-written WebGL2 with no libraries; the only vendored code is a 130-line 4x4 matrix helper written for this app. No CDN, no external font, no external image, no network calls of any kind at runtime. Nothing is stored on your device except the chosen opponent level, ruleset and camera tilt, in localStorage. Licence: MIT, see LICENSE.txt.