Alt Ctrl Game Jam 2016
I went and done the Alt Ctrl Game Jam for this year, which happened about 2 months ago. The idea of the jam is to create an alternative controller and a game in a little over a week's time. This is the first time I am participating in an event that lasts that long in a jam setting. I think I have gotten used to the 48 hour format, so trying out an event that will take over a week is an interesting prospect. This post will detail the game controller creation and talk about the experience.
Focusing on the game
For some reason, I started out thinking this would be easier if I focused on the game first. The reason for this was that I wanted to keep a (what I thought initially) was a simple controller. My alternative controller would be a knock sensor, a button or two and some charlieplex LEDs. So I spent a few days and got familiar with my old friend Processing. The LEDs were there with the thought that players would also have to interface with their controllers sometimes and do certain tasks to take care of that feedback in the game. I haven't been writing any code for awhile, so I figured it was good to play around a bit and see what I remember. A few days later after the jam started, and after losing the code in a freak versioning accident, I ended up with this:
This is a screenshot of what the game looks like. The idea was to have an upkeep of tasks to keep doing and to level up the player.
Versioning and some design thoughts
I have been making it a habit to version every project I start, as well. The previous weekend I was working out how to do the same thing within GameMaker, though opted for using versioning externally, as it seems using the internal versioning is a bit finicky if you want to work in branches and have others also committing. For now I am enjoying the use of SourceTree and Bitbucket when using Git.
Anyways the thought with this interface was to have simple interactions which need to be achieved in order to reach a player level of 5. The aesthetics are a slight nod to CGA colors, although I really just picked them for kicks and to emphasize that it's more the interactions which matter and this information is just a bit of feedback. I made classes out of the timers you need to click that you would reset, and made sure that they feel good to reset and that you can reset them properly right after you see the 1 second mark disappear.
I'm aware they aren't connected to anything, but it should give you a good idea where it was going.
For the controllers themselves, I first placed out the components to see how I felt about it all. But looking at it I suddenly felt like it may be a bit too much and that I should perhaps shelve this idea for now and scope the controller down into something even simpler. The main issue I started feeling was having to wire everything and building the prototype to fit. Prototyping it without it's enclosure was quick though and should not have been a problem, but I wanted to solder the wires and make the design more final. With that in mind and knowing that I have to double the work because I wanted two controllers helped me decide that I should do something that can be made much quicker instead.
By now I spent most of the week on this (as I was busy with other things as well) and now have about two days to finish. But I now had an idea for the controller and started work on it. I also have to scrap the earlier game prototype otherwise there simply won't be enough time.
The new idea
The new idea was this: each controller would have a button, a potentiometer and an LED. At first I wanted to be adventurous and go for an RGB LED, though looking at the amount of wires it requires also veered me away and back to just one LED color. The construction should be simple. Square-like bottomless boxes, shaped for stability, sounded like the best route as it's something I have done previously in a button-mashing mini-game. Turns out, there was something simpler! I was playing with one of the sides that were going to double up for the box, and it folded itself into a triangle in my hands.
The controller diagrams showing what I thought up first and then eventual controller shape.
This made for an easier construction, and fit into the player's hands as well just fine, where the players less-dominant hand cups the controller at the point where the wires come out. I also realized that it would fit better to put the potentiometer near the base of the controller, as it would need less wiring and less a need to fasten it to anything if it's plugged directly into the breadboard. For the LED I decided to use extension cables and to simply force the LED leads through the cardboard, later bending them and then inserting them into the leads.
What you see above became the eventual design. The potentiometers needed to be closer to the bottom of the controllers so less wiring is needed, as they connect straight to the breadboard.
What surprised me a week later after creating this though was that as it is, I have not really create a new controller. This just happens to be quite the homage to one of the first game controllers ever created, for the game Tennis for Two. It really must have been buried in my subconscious though, as I was astounded at not making the connection before.
I believe once I use the LED light to receive data from the game to inform the player of certain things, that is when I may have made something more unique. Of course, the experience of the game interactions would also be very different and allow for players to set the minimum and maximum values, allow for text input and perhaps many other interactions which do not simply control one parameter or one linear experience.
I hope to share the code at some point, though at it's current barebone state it's simply a proof of concept that shows it's possible to set min and max values at the very least, followed by a short game of trying to hit a set of 3 randomized values given to both players. A game of reflex and dexterity. Which can be okay with 2 players but perhaps more fun at 4-6 players, which is what I am planning to accommodate for.