For the Granny Smith release party, I wanted to make an old school arcade machine, and since the game is controlled with virtual buttons it should make a nice experience to play it with physical buttons. My initial idea was to build it from an old discarded radio or tv, but it was hard to find to find an appropriate cabinet.
After putting up some shelves in the kitchen I had this masonite board and some small pieces of wood laying around, and it turned out to be exactly what I needed. I sketched out the pieces directly with a pen and then used a regular jigsaw to cut it. I should maybe have used proper screws to assemble it, but I was lazy and did it with nails instead. It actually turned out more sturdy than I thought it would.
The idea was to suspend a tablet on inside to act as screen and for running the game. It took some tweaking to get the height of it right and find a way to easily remove the tablet if needed without disassembling the whole device. Below is the final setup, which also leaves room for connecting the charger at the bottom of the tablet. The tablet is an Asus Transformer TF300T.
The controls was my biggest headache for the project and I was researching different ways of mechanically translating a button press into touch directly on the screen. Apparently, anti-static socks use silver thread, and they can double as the tip of a touch stylus. I never got further than that fortunately, because I came to think of a little toy from the goodie bag of this year’s Game Developers Conference – a Zeemote wireless joystick. Connecting that to an Android tablet and hook up the buttons to the joystick should do the trick.
I ordered real arcade buttons from DealExtreme. They feel and look exactly as cheap as they are ($7 for four buttons, including shipping), but only two of the four I ordered actually worked. I wanted four buttons to also allow throwing baseballs and bananas, so I complemented the arcade buttons with more sturdy metal buttons bought locally. They don’t feel like arcade buttons, but are way more reliable. Perhaps the trickiest part of the whole project was to solder wires from the buttons onto the Zeemote. Anyone who have seen a Zeemote know it is extremely tiny. Now imagine opening this device and soldering cables directly onto the circuit board. I didn’t get it right the first time, and I was more than once convinced I would ruin it, but eventually I got all the wires in place, and it has worked ever since.
Controlling the tablet with a Zeemote is done using the Zeemote SDK, available to developers for free. Now I would say I’m a fairly experienced game developer and I have never in my career seen a more complicated API for something as simple as reading input from a joystick. Seriously, it should be three or four functions at most, but the Zeemote SDK somehow manages to present this in an API with tons of classes and methods, even suggesting that you base your whole game around their sample framework! I refused to use something that silly and started looking for alternatives. Fortunately there is a little Android app called USB/BT Joystick Center 6 that is totally awesome. It lets you hook up any USB or bluetooth joystick and map the input to key strokes, button pressed or even touch input. I hooked it up and it worked instantly!
Now all the pieces were in place, so I painted the cabinet black and printed stickers for the front and sides. Voila, the Granny Smith arcade machine. /Dennis