Final Assignment (Homework due Dec. 20, 2017)

Upon first hearing that the theme for the showcase was “Space”, my thoughts immediately went to creating a space-themed video game. At first, I wanted to recreate 3D Pinball for Windows – Space Cadet. However, I realized that I didn’t really enjoy pinball all that much, so I wanted to change my idea. I had no fresh ideas of my own after my sudden switch, but a friend suggested that I recreate another classic game – Asteroids by Atari. As it was a game that I enjoyed immensely as a child (it also helped that the game had a more space-y theme), I dived into recreating it using Processing.

As I had already made a game in Processing for Open Studios, it was a matter of repurposing old code, as well as, incorporating new code for game mechanics specific to Asteroids. Since I didn’t want my game to be in the realm of software only, so to speak, I made a physical controller to control my game. I tried to make my design as similar to the simple game controllers I remembered from my childhood.┬áSince game controllers are something that I think are pretty common-place, I thought keeping the design of the controller as simple as possible would make it more intuitive to use. Since a button is pretty much a signifier on its own, I didn’t think to label the only button I had on the controller. I didn’t label the potentiometer either, and this caused a bit of confusion, but I’ll discuss this later.

Computer Drawing:

For the controller, I used a potentiometer and a button. I soldered the parts onto a solderable breadboard and then connected the breadboard to my Arduino. To top it all off, I housed all the parts in an acrylic casing. I used a potentiometer because I used it for my last video game, and I think it presented a unique challenge when it came to controlling the player’s spaceship. I chose a button because it’s just pretty intuitive. I used a acrylic because I thought it’d make for simple enough yet sturdy housing for my more sensitive parts. Also, I thought that the acrylic would be easy to join if it was laser cut just right and it would be fast to prototype.

The acrylic worked for the most part. However, I think I messed up some of my joints, so the controller did not fit exactly together as I expected it to. Instead of just snapping into place and staying, I had to use a bit of tape to hold it all together. But other than that, it worked out fantastically. However, I don’t think the potentiometer was as intuitive as it could have been to use, nor was it a particularly great choice. If I could go back, I’d definitely use some sort of joy-stick instead.

Since I had created a game before in Processing, I didn’t have to learn much on the software side. Instead, I watched a couple tutorials from people who had previously recreated the game in Processing. This one, in particular, was quite helpful:

Most of my trouble came with learning how to use Illustrator. I didn’t find the user interface user-friendly in the least. But with the help of Google and the online Adobe user guide, I was able to learn enough to make my controller. The fab lab guide on the IM website was also a helpful reminder of the settings that I needed to apply to my project for laser cutting.

To make the joints for my controller, I used Joinery. It was pretty easy to understand on its own, but this help guide made things infinitesimally easier to understand.

As mentioned above, my electrical set up consisted of a potentiometer and button which were hooked up to an Arduino. This Arduino was then hooked up to a laptop (a Macbook Pro) that was running Processing.


This is the schematic for my controller:

The software part of my project was the game, itself. Running in Processing, it was an amalgamation of pretty much everything we did, except pictures and pixels. I used classes, shapes, loops, etc., etc. Compared to my hardware, the software was definitely more complex.

The aim of the game was to survive as randomly sized asteroids would fly at the player’s ship from random directions. The potentiometer rotated the ship (the only movement that was allowed) while the buttons fired lasers that would break the asteroid down upon contact. If the asteroid was above a certain size, it would break into two smaller asteroids, which made the game a bit challenging.

Code (Beware, it’s a bit long!):

The three most difficult parts of my project were definitely:

  1. Coding the game. It was a bit challenging working out all the mechanics and how to code them, but with the help of a couple of solid tutorials and some long thought, I was able to figure out most of it.
  2. Making the controller’s casing was challenging. Especially when, in the end, I realized that I had messed up and the pieces did not fit exactly as I wanted them to. Taping and hot glueing them were probably some of the most trying moments of my life.
  3. Soldering the circuit. I had to solder and resolder my circuit a couple of times. The first few times, I was a bit reckless and, as a a very good safety measure, my Macbook shut down the Arduino because it was drawing too much energy from the USB port. Since I figured out pretty much immediately that it was a short circuit that was causing my USB port to shut down, I immediately went about cleaning up the solder and redoing it a bit more carefully.

If I were to do anything differently, I’d definitely start prototyping the hardware a bit earlier next time. Since I was so focused on my software, I let time get away from me. As such, I didn’t have much time to sort out my hardware kinks when they came along, so I just had to roll with them. As mentioned above, I definitely would have changed the potentiometer to a joystick, if I had the time to. And I would most definitely have added a way cooler start screen to my game.

Leave a Reply

Your email address will not be published. Required fields are marked *