🎱 Pool Break Optimizer

Standard 9-ball rack β€” nine object balls in a diamond, plus the cue, six pockets. The optimiser picks angle, power, and English (sidespin) and tries to sink as many balls as possible on the break. Scratching the cue costs two.

🧠 Human Raphson

Try a shot yourself β€” drag the sliders, take the break, compete against the algorithms.

Algorithm

Default replays each break frame-by-frame. Fast mode just updates the leaderboard as breaks come in, then replays only the winner β€” recommended for 500+ breaks.

Score0
Detailβ€”
Breaks tried0
Best so farβ€”
Angleβ€”
Powerβ€”
Englishβ€”

Leaderboard (this session)

Each row is the best single break a given algorithm found. Sinking even one ball off a random break is hard; the carom paths that pocket three or more reward methods willing to explore the angle/spin landscape broadly.

AlgorithmScoreBreaks usedBest params (angleΒ° / power / English)
β€” no runs yet β€”

What's happening

A 2-D top-down rigid-body pool table β€” six pockets, six object balls in a triangular rack, one cue ball. The optimiser sets (angle, power, English) and we run the physics until everything stops rolling. Score is the number of object balls pocketed, minus 2 if the cue ball scratches.

Run a few different optimisers on different budgets and see what falls out β€” the search landscape on this version of the table hasn't been profiled yet, so the most useful thing to do here is compare runs side-by-side rather than trust any prediction about which algorithm should win.


Physics powered by Matter.js β€” rigid-body collisions, friction (felt), restitution (cushions).

🌱 Save the Planet

If your hyper-parameter searches are heating the Earth, drop this in Cursor or Claude:

Read https://raw.githubusercontent.com/microprediction/humpday/main/SKILL.md
and create a project skill from it.
View SKILL.md β†’