Research
Making the snooker real
There is a snooker club in Oakhaven called The Baulk Line, and one of its eight tables can be played. This page is about how much work that sentence is doing. Every dimension the rulebook actually specifies, the table matches exactly — and three of the numbers everybody quotes turn out not to be in the rulebook at all. The balls are driven by a sliding, rolling and spinning physics model with ball-on-ball throw, not by a canned animation. And before a line of the scoring was written we put 298 claims about the rules of snooker through an adversarial review, of which 34 came back wrong. The corrected rules are published in full at the rules of snooker, checked.
None of this is visible while you are playing, which is rather the point. What follows is the working.
The table is not “about right”
A snooker table is one of the most precisely specified objects in British sport. The rulebook gives the playing area, the ball diameter, the cushion height as a fraction of that diameter, and the spot positions in inches from named edges.1 Those numbers are the whole game: the pockets are barely wider than the balls, and a centimetre anywhere changes which shots are possible.
So the geometry lives in a single file, snooker_table.json,11
and nothing else in the project is allowed to hardcode any of it. The Blender script that builds the
mesh reads it. The physics model reads it. The verifier reads it. The table you walk up
to in the club is generated from the same numbers the solver collides against, which
means the green you see and the line the ball actually bounces off cannot drift apart.
| Measurement | In the game | Official | |
|---|---|---|---|
| Playing area | 356.9 × 177.8 cm | 11 ft 8½ in × 5 ft 10 in | agrees |
| Ball diameter | 52.5 mm | 52.5 mm | agrees |
| Ball mass | 142 g | nominal 142 g | agrees |
| Baulk line | 104.79 cm from centre | 29 in from the baulk cushion | agrees |
| The D, radius | 29.21 cm | 11½ in | agrees |
| Black spot | 146.065 cm from centre | 12¾ in from the top cushion | agrees |
| Pink spot | 89.225 cm from centre | midway, blue to top cushion | agrees |
| Blue spot | centre of the table | centre of the table | agrees |
| Apex red | one ball diameter off the pink | as close as possible without touching | agrees |
| Rack row pitch | d × √3/2 | a touching triangle | agrees |
Where the rulebook rounds to the nearest millimetre and the figure underneath is imperial, the game holds the imperial value. The baulk line is 29 inches from the bottom cushion, which is 736.6 mm; the book says 737.
Three of the numbers everybody quotes are not in the rulebook
Checking a table against the rules turns up something you would not guess from how confidently these figures circulate. The cushion nose height and both pocket mouth widths are not specified by any snooker rule.
The word “nose” does not appear in the WPBSA rulebook at all; its only height clause is floor-to-rail, which is furniture. And the current Section 1 rule on pockets reads, in full: “There shall be a pocket at each of the four corners of the table and one each at the middle of the longer sides.” No width, no radius, no undercut. There used to be a clause deferring pocket openings to templates held by the governing body. It was deleted in the August 2019 restructure.2
So these three are ours, taken from the best sources available, and they are labelled that way rather than dressed up as official:
| Quantity | In the game | Basis |
|---|---|---|
| Cushion nose height | 33.34 mm | 0.635 × ball diameter, from the World Pool-Billiard Association equipment specification — a pool body’s figure, scaled to a snooker ball.8 |
| Corner pocket mouth | 86 mm | Tournament convention, measured at the right datum. Tight, deliberately. |
| Middle pocket mouth | 96 mm | Convention, and the weakest of the three: the only attested middle figure we could find is 4 inches, measured at the top of the cushion rather than at the mouth. |
The nose height is worth dwelling on, because the one peer-reviewed source that is specifically about snooker disagrees with us. Mathavan, Jackson and Parkin measured cushion impacts on a Riley Renaissance and then on the official World Snooker table, and put the nose at seven-fifths of the ball radius — 36.75 mm, against our 33.34.9 That is not a rounding difference. It moves the contact normal from 15.7° to 23.6°, which changes how much a ball hops off the cushion and how much spin it keeps.
We have kept 33.34 mm, for a reason that is itself in the rulebook: the English cushion has a flat face rather than a rounded one.10 A flat band about 9.5 mm deep centred near 33 mm spans roughly 28.6 to 38.1 mm, and brackets both candidates — so the effective contact height inside that band is a modelling choice rather than a fact. It sits in the source as a tuned constant with a stated range, not as a specification.
The number nobody typed in
The cloth is not a rectangle. A rectangular cloth would leave a triangle of green across each corner pocket, sitting exactly where the hole should be, and a ball would visibly roll over eighteen square centimetres of baize on its way into a pocket it had already legally entered. So the cloth is an octagon, chamfered across each corner on the fall line — the line the physics model pots a ball on.
The size of that chamfer is derived, not chosen. It falls out of the pocket geometry
as 6.0796 cm. Which means the chord it cuts across the corner — the
actual width of the opening — is that times the square root of two:
6.0796 × √2 = 8.598 cm
Our corner pocket mouth is 86 mm. Nobody entered that into the cloth. It is what the geometry produces when the cloth is cut on the same line the solver pots on — the art and the physics arriving at the same number from opposite directions. That is not agreement with a rule, because as above there is no rule. It is the contract agreeing with itself, which is the property that actually stops the green you see drifting away from the line the ball bounces off. The builder asserts it on every run, and the mesh refuses to build if it ever stops holding.13
The balls are not on rails
Every ball carries a position, a velocity, and a three-axis spin. The spin matters: two of its axes are the rolling spin and the third is the vertical-axis spin that makes side work. A shot is described by power, an aim angle, and where on the cue ball the tip strikes — and that contact point feeds straight into the model rather than being translated into a canned outcome. Above centre gives topspin, below gives screw, and off to one side gives side.
Miss the centre by too much and the model miscues, exactly as a real tip would, at a limit taken from the physics of a leather tip on a polished ball.
| Constant | Value | What it does |
|---|---|---|
| Sliding friction | 0.200 | Cloth against a ball that is skidding rather than rolling. Sets how far a screw shot drags before it takes. |
| Rolling resistance | 0.010 | Twenty times smaller. Why a rolling ball travels the length of the table and a sliding one does not. |
| Spin friction | 0.044 | Decay of side. Why side dies on a long shot and survives on a short one. |
| Ball-on-ball restitution | 0.950 | Snooker balls are hard. Very little energy is lost in the collision itself. |
| Ball-on-ball friction | 0.060 | Throw. The reason a cut shot does not go where the geometry says it should, and the reason side transfers to the object ball. |
| Cushion friction | 0.140 | The swing a ball takes off a cushion when it arrives carrying side. |
| Jaw restitution | 0.600 | Deliberately deader than a cushion. This is why a ball rattles in the jaws and stays down instead of springing back out. |
| Cue tip restitution | 0.750 | Leather on a ball. |
The cushions get deader the harder you hit them
A cushion is not a constant. Rubber loses more energy the faster it is compressed, so
the restitution starts at 0.88 for a ball arriving slowly and falls by
0.0006 for every centimetre per second of approach speed, with a floor at
0.68. Roll a ball gently into a cushion and it comes back well. Smash it and
it comes back tired. Players know this without ever putting a number to it, and a table
where it is not true feels wrong in a way that is hard to name.
The bounce is also applied in the right place. A cushion nose meets a ball
0.709 cm above its equator, not at its centre, so the impulse arrives off-axis
and produces forward roll as a consequence rather than as an added fudge. An earlier
version added that roll as a separate term and quietly created energy on every cushion.
The one piece of exact arithmetic in the whole integrator
Almost all of the model is stepped forward in small increments. One part is not, and it is the part that would otherwise break everything.
When a ball is sliding, the friction that converts skid into roll is fierce: the slip speed falls at roughly 687 cm/s², so three centimetres per second of skid is gone in four milliseconds — less than a single physics step. Step over that with ordinary arithmetic and the slip overshoots zero and reverses, which means the ball is now sliding the other way, and shots never come to rest.
The direction of the slip is constant while a ball slides, which means the moment it starts rolling can be solved rather than searched for:
t_roll = u / (3.5 × μ_slide × g)
The solver integrates exactly to that instant and then switches to the rolling branch. The rolling branch decays the spin rather than assigning it, because writing the rolling constraint directly creates a small amount of energy at every crossing — measured at 1.9×10−4 joules per step, which is nothing until it happens a thousand times.
Sixty-one checks, and the ones designed to fail
The physics exists twice: once as a Python reference model, and once as the Blueprint the game actually runs. The Python version is the specification. The Blueprint is verified against it — not by eye, but by marching both forward side by side and comparing the numbers.
The reference model runs 19 checks of its own, including two that are worth naming because they are the classic traps of rolling-ball physics. One asserts that a struck ball settles at exactly five-sevenths of its initial speed once it stops sliding, which is a result you can derive on paper and which a subtly wrong integrator will miss. The other asserts that the total energy in the system never rises, anywhere, ever.
The Blueprint is then checked against it in 61 comparisons: seven strikes, both racks, the stop scan, 400 substeps of the integrator marched in lockstep, ball-on-ball at 0°, 30° and 55° with throw and side transfer, short and long cushions, 45° rebounds with and without side, a corner jaw hit dead-on and at an angle, all six pockets, and ten frames of the adaptive substepping loop.
Every one of those suites carries controls that are supposed to fail. A test that only ever passes proves nothing about itself.
So the pocket suite includes a ball at the centre of the table and a ball just short of the fall line, both of which must not be potted — without them, a pocket routine that swallowed everything on the table would pass all six positive cases. The miscue suite includes a shot that must be clamped. The integrator suite includes a check that the ball genuinely travels and genuinely spins up, so that a model which did nothing at all could not sail through a comparison against another model doing nothing at all.
A pocket that swallowed the ball and looked like it could not
The corner pockets were rebuilt this week, with real holes cut through the cabinet, a tapering throat, and the curved leather plate that stops a ball skating off the table. Then the cushions were re-covered in baize, which on a real table runs over the rubber and stops at the pocket.
After which the corner pockets looked closed. A triangular spur of green appeared across each mouth, and a ball rolling into one appeared to be rolling into a wall.
It went in. It always went in. The balls here are driven by the solver rather than by the engine’s own physics, and a ball is potted the instant its centre crosses the fall line — so nothing modelled beyond that line can stop one, and no shot was ever affected. What was wrong was entirely what you could see, which is its own kind of bug: the game was behaving correctly and telling the player it was not.
The first diagnosis was that this was a colour problem — that the cheeks of the pocket jaws had been clothed when they should have stayed timber. That was wrong twice over. A photograph of a real table settles the first half: the jaw cheeks on a real snooker table are cloth, tapering to points at the mouth. And the actual measurement settles the rest.
This is the clear width between the two jaw cheeks measured at the height of a ball’s centre — which is above the cushion nose, where the cheeks have already begun to fall away from one another. That is why the first figure is wider than the 86 mm mouth quoted earlier: it is the mouth plus the nose set-back, and the two numbers are measured at different heights for different reasons. The mouth is the width a ball must pass; this is the width the ball’s widest part actually sees.
on the fall line 9.382 cm 1 cm past it 7.512 cm 3 cm past it 3.771 cm 5 cm past it 0.031 cm
The two jaw lines converge at 43° and cross about 4.6 cm past the fall line. So the drawn mouth closes to 0.031 cm while a ball needs 5.25 — and every ball sailed straight through it, because by then the solver had already potted it and the geometry was decoration. Recolouring the cheeks would have left the picture exactly as wrong and broken a correct surface on the way past.
The reason it took a measurement rather than a look is worth recording. The obvious way to probe a pocket is to fire a ray along the pocket axis from the fall line — and at a corner, that puts the origin of the ray off the table entirely. Every ray escapes into open air and reports a clear mouth. The instrument agreed with the bug.
The fix leaves the physics untouched. All eighteen cushion segments still exist and the solver still collides against every one of them; the eight corner jaw segments are simply no longer drawn, because they only occupy the space beyond the line at which a ball has already been potted. Eighteen segments collided against, ten drawn. The verifier now sweeps a ball-sized gap through every pocket on every build, with a bare-cloth control.
Then we went and read the rulebook properly
Geometry and physics get you a table. They do not get you snooker. Snooker is a rule set with a reputation for being simple to watch and unexpectedly deep to codify, and the parts that are hard to implement are exactly the parts a casual player never thinks about: what counts as a snooker, when a free ball is awarded, what a foul is actually worth, and what happens at the end of a frame when the scores are level.
So we researched it before writing any of it, across eight lines of enquiry — scoring and frame sequence, fouls and penalty values, free ball and snookers, table and equipment specification, expert break building, safety play, how other billiards games model an opponent's skill, and the language a referee actually uses. That produced 298 rule claims, each carrying a source — and the rules themselves, checked and grouped for reading, are now a page of their own.
And then, because a confidently stated wrong rule is worse than an admitted unknown, every claim that was not fully sourced first time — 40 of them — went to a second reviewer whose instruction was to refute it, defaulting to “wrong” unless it could find primary-source support.
| Verdict | Count | Meaning |
|---|---|---|
| Confirmed | 6 | Verbatim correct against the primary rulebook. Two of those six were flagged as correct but materially incomplete. |
| Corrected | 33 | The substance survived but detail was wrong, missing, or misattributed in a way that would have produced wrong play. |
| Refuted | 1 | False. |
Thirty-four of forty. That ratio is the single most useful thing this exercise produced, and it is why the research happened at all.
Five of the corrections, and why each one matters
The rulebook renumbered its own fouls. A citation to “Section 3 Rule 10” means different things depending on which edition you are holding — and there are not two numberings but four, verified by extracting the text of the actual PDFs. In the current book, Rule 11 is the enumerated list of fouls and Rule 10 is only the procedure that follows one. A developer who checks a contents page, sees “10 Fouls”, and implements from there gets the wrong rule.2
“Snookers required” is the wrong phrase, and it is load-bearing. A player may not concede a frame unless penalty points are required — not snookers. The snooker wording is superseded, and the difference is not cosmetic: concede is the one button that can silently delete the most distinctive phase of snooker, the long grind where a player behind plays for fouls rather than pots.3
The points-available arithmetic had a hole in it. With R reds
left, the maximum a player can still score is R × 8 + 27. That is the
number every scoreboard uses to decide whether snookers are needed. It is also wrong the
moment a free ball is on the table, because a free ball can add to the total — and
the failure is silent, because the number it returns looks perfectly plausible. A player
sixty behind with six reds left is told they need snookers when they do
not.4
The miss rule lost a clause in 2019 and the internet has not noticed. There used to be a score-based exception covering the case where the points available equal the points difference. It was deleted. The live rule turns on a strict inequality where the old one turned on an inclusive one — one character of difference in a foul handler, which decides frames in precisely the tight end-of-frame positions that snooker is judged on.5
And one claim was simply false. A widely mirrored account of “American snooker” holds that fouls are always worth seven points, among other differences. Followed back, all four of its rule differences rest on a single footnote pointing at an archived page headed “Billy Aardd’s Club American Snooker HOUSE RULES”, which states on its own face that the rules are used by one student pool room in Socorro, New Mexico. It is not a governing body's text and never was. A flat seven-point foul would destroy snooker's entire safety economy, because the whole tactical game rests on fouls being worth four unless a higher-value ball is involved.6
None of these are exotic. Every one of them is the kind of detail a snooker game ships wrong, and every one of them changes a number on screen in a situation the player will eventually reach. They were found by making a reviewer argue against the research rather than summarise it.
The reference the review kept coming back to
Where sources disagreed, the primary document won. The current rulebook was pulled
directly rather than quoted second-hand, and identified precisely enough to be checked
again later: MD5 eccd17794ef9ed58f7a99c0d6be59aea, last modified 26 March
2026, still the live edition on the governing body's site at the time of
writing.1 Several claims that read as settled fact online
turned out to be quoting editions that have been superseded for years.
We also went looking for a second governing body to check it against, and there is not one. The International Billiards and Snooker Federation publishes no independent English rule text — its rules page carries amendment notes from 2014 and a link onward that is dead.7 The World Snooker Federation, World Seniors, World Women’s Snooker and the disability tour all run the same WPBSA book. That is worth stating plainly, because “both governing bodies agree” is the sort of reassurance it would have been easy to write without checking, and it would have been false.
What this is for
The table, the cloth, the pockets, the cue and the ball physics are built and in the game. You can walk into The Baulk Line, pick the cue up off the rail, and hit a ball — and when it hits another ball it will throw slightly, and when it comes off a cushion carrying side it will swing.
A scoring system is intended, and will be built on the research above.
Beyond that there is nothing to announce and no date. This page exists because the research was worth writing down, and because the next person building a snooker game in a game engine can have the thirty-four corrections for free.
The pockets are barely wider than the balls. That is the whole game, and it is why a centimetre anywhere matters more here than almost anywhere else we have built.
References
Primary sources are the governing bodies’ own rule texts. Where a claim rests on a secondary source, it is marked as such.
- World Professional Billiards and Snooker Association. Official Rules of the Games of Snooker and English Billiards. Revised September 2024 (the 2024–25 rulebook).
- WPBSA, op. cit., Snooker Section 1, Rule 1(g) (pockets); Snooker Section 3, Rule 11 (“Penalty Values”, the enumerated foul list) and Rule 10 (“Fouls”, the procedure that follows one).
- WPBSA, op. cit., Snooker Section 4, Rule 2.
- WPBSA, op. cit., Snooker Section 3, Rule 12 (Free Ball), with Section 2 definitions.
- WPBSA, op. cit., Snooker Section 3, Rule 14 (“Foul and a Miss”), with Rule 14(b) on replacing the balls.
- “American snooker”, Wikipedia.
- International Billiards and Snooker Federation, rules page.
- World Pool-Billiard Association. Recommended Equipment Specifications, effective November 2001.
- Mathavan, S., Jackson, M. R., and Parkin, R. M. “A theoretical analysis of billiard ball dynamics under cushion impacts.” Proceedings of the Institution of Mechanical Engineers, Part C: Journal of Mechanical Engineering Science, 224(9), 2010, pp. 1863–1873.
- WPBSA, op. cit., English Billiards Section 2, Rule 4 (“Cushion Faces”).
- Project source,
ArtSource/snooker_table.json. - Project source,
ArtSource/snooker_physics.py. - Project source,
ArtSource/snooker_play.py.
Elsewhere
- The rules of snooker, checked — the British game as the governing body actually states it, with the corrections marked.
- Proving a roulette wheel is fair — the same treatment for the wheel at Last Tenner Bets.
- How to win at rock paper scissors — the evidence on how people actually play, and the opponent we built from it.
- The Baulk Line — the club itself, as a place in the town rather than as a physics problem.
- The devlog — the day-to-day version, written as tutorials, with the faults and the fixes.
- Second Chance — the game this is a very small corner of.