Dad Craps I:
My dad is an avid Craps player. He believes in the concept called dice setting. The idea is that if your grip, throw and release are consistent then you have a higher probability in rolling certain numbers. This can be useful when you’re playing certain high value bets such as the horn or hardways. In order to track his consistency, my father built a Craps table and used excel spreadsheets to track his rolls and bets. Soon his stack of papers became living room towers and he wanted a way to reduce the amount of paper he was using and track his statistics either at home in Hawaii or in Vegas. Imagine rolling up to a casino and taking out a stack of papers to figure out what gripset and position you needed to be in. There was a need to condense this nonsense. So he asked me, a mechanical engineering student at the time, to make him an app.
At this point in my academics I had little to no knowledge of coding, other than a shallow dive into Matlab. So my first step was to laying out the requirements of the app and how each page of the program would feed into the other. It was a super simple process that allowed me to refine my customer requirements. This quickly became a 20 page document that also served as a way to outline the logic of the bets and the process of the game.
Quick Craps Overview:
You see Craps is a simple game, but there are MANY different bets that can be played and this is complicated when you start throwing in the idea of max odds and minimum bets, which is dependent on the casino you play at. The game has two phases: Phase I: Come out roll and Phase II: Point or I refer to it as the after come out roll. It essentially begins with a passline bet and a roller. The passline bet says you’re betting that a 7 or an 11 will be the first number rolled. Once the passlines and other bets (no need to describe them now) are set, the roller (also termed shooter) can begin phase I. If a 7 or an 11 is rolled, then everyone who placed a passline bet receives even money and phase I continues. If a 2, 3 or 12 are rolled, then the passline bets are lost (termed “crapped out”), but the player can choose to keep rolling–still in phase I. If a 4, 5, 6, 7, 8, 9, or 10 is rolled then a point has been established and phase II begins. The players can now place odds on their passline bets if they think the roller is going to hit the point during phase II. If the roller hits the point, then the game reverts to phase I. If the roller hits a different point than the original point, more strategic bets can be placed dictating that the roller will hit those numbers again. If the player rolls 2, 3, 11 or 12, then passline bets are unaffected and the roller can keep rolling–phase II continues. If the roller hits a 7 then they have “crapped out” and the roll ends. This game repeats by passing the dice to the left. The table has various positions that the players can stand in. Each bet is is affected differently by the phases of the game.
It was a customer requirement that my dad can place as many different bets as dictated by the rules of the game. There are over 30 different bets due to the different variations that have evolved over the life of the game. Also certain bets are allowed in certain casinos, but not in others. Other requirements involved storing the bets, rolls, gripsets and position of the roller at the table during each game. Being able to compile the stats in a readable form was also a must. He also wanted to track the casinos he played at and wanted a multiplayer feature. Because I wanted to create the minimum viable product and then improve the app with another iteration, I slashed the multiplayer requirement. That would be too complicated at this stage of the game.
Eventually I learned the basics of python and QT. QT was used to create my GUIs and python controlled the back end. It took the entire summer to put together the application. There was a stats feature that allowed my dad to track the bets, gripset, rolls and table position per game. He was also able to refine his stats by using player name, dates, the gripsets he used or with the dice rolls. A singleplayer feature allowed him to move throughout the phases of the game as well as place different bets along the way. A how to play and rules segment defining all of the bets included in the game were also added. The player could also add in casinos and use the casinos max odds/minimum place bets features to play the game. Here is a videos of the application in use:
We had problems with exporting the application when it completed. My dad didn’t want to use a windows application, instead he wanted it in an iOS format. This proved to be difficult because the app was built for use on the windows platform–newbie mistake. I would have to rebuild the app with a different set of tools to accommodate the iOS platform, this meant learning c# and the basics of visual studio.
Dad Craps II
Fast forward a few years and I decided to give the app another shot, but this time with Unity and Visual Studio. I played around with the idea of using Xaml, but pretty much settled on learning C# just because it would be a nice opportunity to learn. The same requirements remained, except this time I would try to also develop the game art to look similar to that of an actual craps table. So more time and resources were necessary for this iteration. Again, multiplayer mode was slashed and iOS was chosen as the main platform the app would run on. Fingers crossed that my dad doesn’t switch over to android soon. I am still working on this iteration and have so far completed around half of the scenes necessary. I also wanted to incorporate drop down menus, the ability to slide chips to the table when placing bets and also some animations when you won a bet or lost a bet. I’ll update accordingly when I create more content. Here’s a video of the process so far (don’t mind the widgets I haven’t activated yet):