Jack's

KELLY POOL

Options
Game
Help
Player Count
Ball Count (Default)
Show Players Remaining Ball Counts?
Allow Ball Overlaps?
Locked Balls
Sort Player Table
Start a New Game with these Options
New Game

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.