Projects‎ > ‎

Oh Shit - I Love Cards

posted Oct 23, 2011, 3:22 AM by Jack Marrows   [ updated Nov 4, 2011, 6:54 PM ]

As a child my family used to play a crudely named game, "Oh Shit". We used to have a ball attempting to trip
up each others plays and achieve the scores that we had bid. Of late my social group has began to invest a lot of our spare time in playing card games. Namely we have taken a great interest in 500 and Oh Shit. From this sparked an interest for me to develop Oh Shit as a browser based computer game. 
For myself the part that I enjoyed the most was programming the logic into the computer AI. It gave me a frame to view each of the strategies I often unconsciously played and a platform to analyse the most effective strategies.
During the development I developed a test platform that let me put each of the AIs I developed, each employing different strategies, up against each other over a large number of games (usually around 1000). Doing this allowed me to rank the effectiveness of each strategy and in turn offer users different difficulty levels. 
Halfway through the development I felt as though as a stand alone game people would quickly get bored. Therefore, I made the decision to integrate Facebook into the game. This firstly gave each player an identity with a very quick authentication process allowing me to store their game histories in a database. Furthermore, I was able to incorporate a friend high score function such that people could compete their their friends on my game.

Technically developing Oh Shit was very exciting. I applied much of what I learnt at university to make my code as maintainable as possible. Throughout my code there are many interfaces that allow classes to be easily interchanged. This style of development allowed me to easily develop multiple AIs without changing any external code.

The application has been developed as a web application and runs on all browsers with minimal HTML5 support. As such the game can be played on IOS devices, Android devices and of course computers. I developed it using Java and GWT hence, all of the code is compiled to JavaScript before being sent to the browser. The back-end that provided a datastore and the Facebook integration was built upon Google App Engine. Using these technologies was easy and allowed for seamless deployment to Google's Appengine.
I would love it if people would visit my new application and even attempt to beat the advanced AI:
Play Oh Shit