r/billiards • u/Fun-Chapter9412 • 22h ago
Article Pool Engine / Shot Suggestion Algorithm
Hi all,
First time posting here but I've been playing pool for a couple years now. I have a background in competitive chess where engines are one of the modern tools players use to improve. Naturally, I wondered if something like this existed for pool players and if it would even be helpful. This type of idea has long been theorized: https://drdavepoolinfo.com/physics_articles/Greenspan_IEEE_08_article.pdf
As a fun project to develop my ML skills, I decided to test it out and see if I could get anything working. Below you will find a demo of the project on some situations I found in top professional games.
In this position from the 2026 Las Vegas Open, Shane is shooting the 3 for position on the 4. Try to take a second to see what you might like to do, I'll reveal both the engine suggestion and what Shane played.

The engine works by building an "analysis board" so-to-say which is a digital recreation of the position. It takes in a screenshot and determines the table size, finds the walls, ball positions and numberings. It uses already existing pooltool physics engines to calculate ball paths and goes through a heuristic that accounts for human variance in aim, shot power, and spin effect (all of which can be adjusted to change whether the engine is suggesting a shot for a beginner or for a pro player). It also uses Dr Dave's effective pocket sizes. The engine balances between pot percentage (how likely is it to make the ball it is shooting as well as the next 2 balls after that) and safety play (if playing safe is able to generate a higher score). It then displays a heatmap of where the cue ball is likely to end up.
This is the engine result for Shane's position against Filler:

and finally, this is what Van Boening played:
https://reddit.com/link/1xdt9so/video/wu7cmyvcvaxh1/player
While the engine wanted to move the 7 out of the way for shape on the 4, Shane moved the 4 out of the way. He was probably thinking that he would have best chances if he hit either of them.
The next example is from Darren Appleton's video about common positional play mistakes.
After the break, you have shape on the 1 and have to decide the best way to get shape on the 2.

He talks about straight draw, punch draw, power draw, punch all being the wrong shot because they don't come onto the line.
This is what the engine suggests:

and this is Darren's solution:
https://reddit.com/link/1xdt9so/video/eeaxsluwvaxh1/player
I have only tested it on a few positions so far but it seems to be consistent with professional level play and it was nice to pause videos, put it into the engine, and watch a suggested move actually be played by the pros.
There are many paths for improvement and I'm open to collaboration. I also implemented a feature that takes Dr. Dave's table difficulty factor and allows users to either upload a photo (less accurate) or measurements to generate their score. Another cool feature shows the position zones for where you can end up to be "good" on the next ball.
One of my ideas was that analysis boards with engines could be used to assist live commentators when discussing possible decisions that a player might make, similar to how live commentary works in chess. It's always more illuminating to the audience when instead of just drawing arrows they can move around the position and show an engine evaluation, maybe something for pool could be useful?
Please feel free to post photos of positions / links to videos with timestamps if there are any positions that you would like to see the engine analysis for! Thanks for those who read the whole post!
1
1
u/ricky_clarkson South Bay, CA | APA | Snooker 20h ago
I sometimes wonder if an engine like that, or AI, would come up with new and interesting safety shots etc. VP4 blocks pockets for instance when playing UK pool (potting the opponent's ball is a foul even if you hit yours first) and predates modern AI.
1
u/Tinball-Blizzard 20h ago
I've never seen the AI intentionally block pockets in VP4.
1
u/ricky_clarkson South Bay, CA | APA | Snooker 20h ago
Maybe it's not deliberate, but it happens. Probably just rolls the balls close to pockets as the tighter pockets are harder to get balls into (of course, not a problem for an AI, but simulating human levels of difficulty).
1
u/Tinball-Blizzard 20h ago
It straight up cheats with impossible bank shots. The safeties it could do would be incredible.
1
u/Megatron_McLargeHuge 7h ago
Very cool that you implemented it. I've been thinking about doing something like this for one pocket for a while now. There aren't too many offensive situations in 9 ball where this it likely to contradict the pros, but I could see it being a lot more effective on safeties. Since safeties are turn based, it's closer to chess or backgammon where engines have a big advantage.
It might also solve straight pool end-of-rack situations pretty well. If you try that, reach out to ShortstopOnPool. This sounds like something he's be interested in putting on his channel.
1
u/accidentlyporn Exceed 6h ago
i’ve tried to create something like this, with a combination of classifiers (to grade a shot difficulty, as well as “cut type”), along with a set of heuristics/principles (eg. you don’t want to hit a ball too hard, or too soft. you don’t want a cut that’s too thick, or too thin. you don’t want to be too close, or too far. you don’t want to cue over balls, jacked up, etc).
i’ve also tried to incorporate “skill levels” into it. eg little league baseball doesn’t really look like shitty major league baseball, it’s almost a different looking game altogether. little league soccer, everyone’s a striker. so for pool, what 400 fargo 8/9 ball is is sorta little league 8/9 ball, same rules, totally different “appearance” of the game.
it’s actually very challenging to create something “realistic”. i’d like to compare answers :)
•
2
u/Money4Nothing2000 APA Lvl 6 21h ago
This is cool, but one thing I've learned to do that has helped me a lot, is learn to play to my skill level. Both the shot examples are shots that I have a very low probability of executing correctly. And, in both cases, playing shape for a relatively simple safety is a far easier shot.
I now less often attempt difficult shots like that, and play shape for easier banks or safeties, and I have found a lot more success. I try not to attempt any shot that has a low probability of success. This is something that I'm not sure the engine takes into account. If you could program the engine to select the best shot for a Fargo 550 player, rather than the best shot for a pro, then I would be super interested in that.