Original Kelly Pool
Each player is assigned 1 ball which is kept secret from the other players. The goal of each player is to
legally pocket their own ball. Check out the rules on Wikipedia
here.
To play Kelly Pool here, go to the
Options tab and set your desired
Player Count. Change the
Ball Count (Default) to
1 Ball and ensure
Allow Ball Overlaps? is unchecked. Press the
button at the bottom of the page to start a new game. Now use the
SHOW buttons to allow each player to
view their ball. Enjoy!
Jack's Kelly Pool
Much more accommodating for lower skill levels - each player is assigned N secret ball(s) and must keep their
own balls on the table. If a player has no balls left on the table, they are eliminated. If a player is the
only one with balls left on the table they are the winner. Like pool, players take turns shooting and if they
pocket a ball, they get another shot.
To play Jack's Kelly Pool, go to the
Options tab and set your desired
Player Count. Change the
Ball Count (Default) to the desired amount of balls each player should start with. Players can be
assigned extra balls or less balls to even out the skill level by adjusting the Dropdown to the right of their
names. Press the button at the bottom of the page to begin a new game!
Now go to the table and rack the balls as shown on the
Game page. Each ball can be pressed to mark it
as pocketed, this allows you to check if a player is out, or how many balls they have left without knowing
their balls. The grey ball to the left of each players name on the
Game page will show the remaining
ball count of each player, and will glow red when the player is eliminated.
My mates play winner breaks (over multiple rounds), and make the winner go down a ball in the ball menu to
make it more difficult for them. The player who was eliminated first goes up a ball in the ball menu to make
it easier for them.
Subtleties and Features
Divulged Balls - A ball that every player is aware of. If a player is good enough to win with only 1
Ball, they may be demoted to 2 Balls that are no longer secret to the other players.
Show Players Remaining Ball Counts - This controls the number inside the grey ball to the left of each
players name on the
Game page. If this option is unchecked, this number will turn into a
?
Allow Ball Overlaps? - This can create some interesting gameplay and allow for multiple winners. If
this option is checked, it is possible for one player to share a ball with another without knowing.
Locked Balls - In the unfortunate case of missing balls or even having two of the same ball, this
option will prevent the specified balls from being assigned to players; locking them out of the game. This
can also be used to fine-tune which balls are part of the game.
Naming Players - Players can be given names other than
Player 1,
Player 2... Simply type
in their name over the existing one in the
Options page.
SHOW Buttons - The
SHOW buttons on the
Game page keep a count of how many times they are
pressed. This allows players to ensure no one has checked their balls.
Player Stats - At the end of each game a winning player may be requested. This updates the win rate
stored under that player's name. A player's win statistics can be viewed on the
Game page by clicking
their name either when a game is not in play or during a game. The specific stats that are kept track of are a
player's wins and losses when they played against a certain number of opponents and were assigned a certain
number of balls. Only the most recent 20 games in each situation are stored, that way a player can always
improve their win rate to 100% even after losing many games.
Joining Games - Players can join games on their own device which stays in sync with the Hosts'. To do
this select
Join Game on the main menu and enter the 6-character
Game Code found on the
Game page of the Host device. You can find your
Player Code on your assigned balls page (by
pressing the
SHOW button beside your name). The
SHOW Count will stay in sync across devices so
don't worry about someone checking your assigned balls from another device. Also, only the host can modify the
rack.
Credit
Made by Jack Callander.
Cheers Travis, Thomas, Edward, Brendan, Richard, Ethan, Lyam, Bella, James, Carlos, Jackson, Aisha and Massi
for inspiration and playtesting!
Version 2 created on the 3rd of May 2021. Last Updated 13th of January 2024. Currently Version 2.7.1
Change Log
Version 0.1
Version 0.1 was a simple random number generator. 1 to 15, overlaps occurred all the time. It was written in
Python and was entirely on the console. Players pressed the Enter key to scroll the console down revealing
their balls, then again to scroll past them.
Version 0.2
Version 0.2 added player names to allow easier tracking of who was who. It also allowed choice of the amount of
balls assigned to each player and did not permit overlaps. Assigning different ball amounts to each player was not
yet possible and players forgetting their balls became a problem.
Version 1.0
Version 1.0 shifted to JavaScript and ran from a single HTML file. This allowed the file to be passed around,
shared and stored easily on portable android devices. A simple graphical user interface was a nice feature of the
app running on a browser, allowing players to easily navigate the settings and features. It also allowed players
to memorise their balls much more easily because a picture of their balls was shown to them instead of just a
number. For less experienced pool players, it's annoying to have to find your balls on the table to see what they
look like. Descriptions of the balls were also added, addressing which balls are stripes and which are solids, as
well as what colours they can be. For example, the 4 and 12 balls can be purple or pink. The app was also fairly
intuitive, requiring only the knowledge of rules to take advantage of its features. These new features included:
- A user could choose to play with one to fifteen players.
- A user could set a default ball count (the number of balls each player is assigned, by default).
-
A Player could change their name (from Player x to something more interesting and easier to remember).
- A user could choose to give a specific player a different ball count to other players.
-
All these settings would be saved while the page was open, allowing many games to be played in a row
without having to set up games from scratch.
-
When a game was started, players could take turns memorising their balls. To ensure a player didn't check
another players balls, accidentally or not, players could only reveal balls from top to bottom until
everyone had checked. After this, any player at any time could re-check their balls.
-
A Lock button was added to help prevent accidental changes to the settings during a game.
Version 1.1
Version 1.1 added an alert when a user refreshed the page to ensure they wanted to do so. This stopped
accidental refreshes from resetting the game and all the settings. It also added a counter to the Reveal
buttons. The ones which allow a player to check their balls. This way each player knows how many times they have
checked their balls and would be able to tell if someone else had checked them. Version 1.1 also introduced some
step-by-step instructions on how to use the app.
Version 1.2
Version 1.2 addressed some friendly problems with cheating... players could continue playing if they were
eliminated from the game and the other players would not be able to tell. For this, an optional
Game Tracker was added. The Game Tracker showed all the balls in a grid and if a ball was pressed,
it would be greyed out, representing a ball that had been pocketed. The goal was to keep the Game Tracker
accurately reflecting the game being played on the table. If a players balls had all been pocketed, their name
would turn red, revealing to everyone that they were eliminated. This did raise an issue where a player could now
check another players balls through the Game Tracker through trial and error and learn another players
balls without affecting the Reveal counter.
Version 1.2.1
Version 1.2.1 stored each player's name so that when the player count was changed, the names would not be reset.
It was tedious typing everyone's names in, so this was a nice feature.
Version 2.0
Version 2.0 was the first published on the internet. This allowed anyone to access it from anywhere at any time, a
huge convenience boost. It also allowed Apple/iOS devices to run the JavaScript that runs the app, so this was the
first version to support all devices. Another huge change was a complete rehaul of all the code, as well as a
completely new graphical user interface. This was a much nicer looking design with a dark colour theme. It also
introduced pagination, separating the settings from the game itself, and moving the rules to a new page. This was
the first version that went by Jack's Kelly Pool and it introduced some new game options:
- A user can easily see how many balls each player has left on the table.
- A user can choose to allow ball overlaps.
- Divulged balls are now a built-in option.
The pagination also improved the organisation of the game, all options could be set up in one place and a game
with the current options could easily be started from either the options or game page. The
Game tab was
much less packed without the options providing a nicer user experience. The
Game Tracker was transformed
from a grid into a triangle to accurately represent the way you rack the balls in
Jack's Kelly Pool. This
clearly shows the players which balls can start at a disadvantage and which balls are good to have, without the
player having to rack the balls on the table or imagine a rack in their head. For example, the 1, 2, 3, 11 and 15
balls have a lot of movement, or usually head towards a pocket on the break, whereas the 5, 8 and 9 can stay in a
cluster depending on how good the break is. The 8 ball is quite good to have because it both starts in the middle
of the rack and, subconsciously, no one really wants to pocket it.
Version 2.1
Version 2.1 started to use a browsers local storage to store game settings and player names. This way if the app
was closed and not used for a while, and was then revisited on the same device, all settings and player names from
the previous session were loaded back in, saving some time and inconvenience. Also, the way divulged balls worked
was changed, instead of each player being "allowed" to check a divulged players balls at any time, that players
Show button was replaced with pictures of the balls themselves. This way a player only had to glance at the
game page in order to check. This way helped better explain what divulged balls are in the game to new players.
This version also addressed and fixed a few issues from the previous version:
-
If the option for showing a players remaining ball counts was changed during the play of a game, some
strange things could happen.
- Apple/Safari devices had an unappealing style on the dropdown menus.
- Apple/Safari devices added a delay on their button presses making the app appear slow.
Finally, a proper help page was written up going briefly over the rules. Also when an eliminated player wanted to
check everyone's balls it was hard to work out which of those were still on the table, so now balls that are
pocketed are greyed out on the
Reveal screen.
Version 2.1.1
Added this Change Log.
This version is still available here.
Version 2.2
Refactored the spaghetti using a Model-View-Controller approach, specifically this one
here.
Also cleaned up the CSS slightly by attempting the SMACSS architecture. Source code is now in Git! Have
a look if you want to here.
Player stats are now a thing. These are saved by name and are specific to the device they were created on as this
is a static web app. Press on a players name in the Game tab to see their statistics. Also submit a winner
at the end of each round for the stats to update.
Version 2.3
This app is now connected to a Firebase realtime database! There is still no server backend, but the realtime
database allows information to be stored centrally where any device can access it. This allowed the following
new feature to be implemented:
Added a main menu with the ability to host a game (the current app) or join from another device. This
aims to solve an ease of use problem reddit user u/Gaimcap was having. Players can now use their own
device to check their assigned balls and the current state of the rack using a Game Code and a
Player Code.
Version 2.4
Improved the scaling for desktop browsers and added a Coffee button :)
Version 2.5
Improved the scaling for thin devices and changed to a Beer button :D
Version 2.6
Added a Locked Balls option. Players can choose to exclude balls from the game incase they are missing
a ball or have double ups.
Version 2.7
Added the ability to change the colour of the balls in case the game is being played with a different set. For
example with the standard pool balls where the 4 and 12 ball are purple.
Version 2.7.1
Fixed path to divulged ball images. They should now show the balls again, and match the current ball set
settings.