The Arduino solution would be great for recreating the classic skee ball machine. In fact, I did that in the first hour of this project. But then I got bored and realized "I don't have to follow the original rules!"
Seriously, if we're going to make our own game, then lets make the game our own.
By using software that displays information on a monitor you're free to do so much more with it. Instead of each hit giving you one single set score you can add more effects and events. Like these:
- Combos - Hit a group of targets for a special bonus score. I added the Up the Line combo (10 - 50) and the Around the World combo (all targets)
- Streaks - Hit the same target again and again to get more points each time. Doesn't work on the 10.
- More specific combos - Two combos only work by hitting two targets in a row in the right order. I added the Don't Panic combo (40, then 20) and the Because We Can combo (10, then 100)
I tried showing just the score with these effects happening, but people just got confused. Making it all visually apparent was crucial.
In addition to more points, the big combos (Up the Line and Around the World) also had a bonus ball. If you hit a specific target after the combo you'd double your combo bonus.
Here are a couple other features added to the game:
- Game recap - At the end of the game there's a display of what targets you hit during the whole game and what your cumulative score was
- Random backgrounds - The backdrop was randomly picked from 9 different images
- Sound effects - fun!
- Score bounce - the more your score increased after a hit, the more the score on the screen would "bounce." Getting over 1,000 points* would make the score expand well past the edge of the screen.
And that was just a short list of things I wanted to do before I ran out of time. Even so, it's already way past the original game design.
To run the game, download the attached Processing sketch and plug in an Arduino with StandardFirmata on it. My experience with Firmata was that it can be a little finicky in pairing the Arduino with the laptop so make sure you are getting basic features to work there with a simple test first before trying this out.
Notes on attached sketch:
*the max score in this version is 7,777 and is achieved by only hitting the 100 targets. We never got close to seeing that happen in real testing, but it's there!
The sketch is designed to be run on a HDTV screen and can be changed from a 720p resolution to a 1080p resolution by changing the monScale variable to 2 or 3
The sketch resets the game after 10 seconds or so. This is because I was having issues with the arcade button, but can easily be changed to add it back in.
Apologies in advance for the messy code. This is my first Processing sketch.