Overview
The inspiration for this game came from a Super Nintendo game from my childhood called Tin Star. The game itself was decent, but my favorite part was always the bonus round where you tried to juggle a bottle in the air with your handy revolver. Similarly, the goal of this game is to juggle a bomb on the screen until it safely detonates. If, in all your zealous clicking you happen to miss the bomb, the game will give you a helping hand (but, as with genies, baseball, and annoying carnival games, you only get three tries before you're out).
Graphics
Now before you poo-poo my choice of graphics, understand that my primary intent was to get the feel of the game right. That said, there is actually quite a bit of graphics under the hood. I constructed the bomb mesh in Blender and had it exported as an OBJ file with smoothed normals for a (slightly) less faceted look. Why, you may ask, did I decide to use an isosphere with such a low face-count? Well, low face-counts may look ugly, but they render quickly, and rendering quickly is quite important in physics-based games that have real-time interaction. As for the bomb explosion, I had grown quite attached to the 500-face bunny mesh that I stared at for hours upon end this quarter, so I decided to bring him/her/it back for a little surprise. All models are smooth/Gouraud shaded since it take less time to calculate than full-Phong (consider it an act of mercy towards my slow laptop!).
Design Specifics
Originally I had intended to implement multiple bombs with full-mass based collision detection, and believe it or not, I DID! Sadly, as cool as the physics looked, the game was so difficult it was borderline depressing, and seeing how there is plenty of depressing stuff in the world already, I opted to go for a one bomb at a time approach. To spice things up a bit, bombs are dropped with a random x-location, x-velocity, spin speed, and spin direction. The material lighting color of the bombs becomes more red with less health the bomb has, and the bombs become smaller with each successful detonation. To smooth out the animations, I calculated the number of milliseconds since the last bomb was drawn and used "position = position + velocity * timeElapsed". My custom Bomb and Explosion class objects are stored in vectors for easy iteration, and almost every game variable is #defined at the top for easy tweaking.
Demonstration
This is a video of how my game actually works. Email slines@calpoly.edu to play!