Jonathan Fischer


September 2020 – December 2020

The Game Creation Society usually builds games for standard PCs, but they also happen to have an arcade cabinet that teams can build games for. I had also been wanting to try making a rhythm game for some time, a game that would show off all of the awesome music the our composers made. And since rhythm games like to benefit from unique hardware, I thought the arcade cabinet would be a perfect fit. I pitched it, and we formed a team.

Originally, I wanted some time to make a rhythm game where notes would close in on the center of the screen and you pushed different keys on your numpad to hit them. Unfortunately, my laptop doesn’t have a numpad. Then, when thinking about the arcade cabinet, I realized that the arcade machine controls would work for this too: aim with the joystick, push a button on the beat. The cabinet’s joystick has an octagonal restrictor plate, so the notes would come in eight main directions, arranged in a circle. That’s where the name “Octave” comes from.

One of the great things about rhythm games is that they form communities that make maps for all sorts of songs that can be loaded into the game. While I wasn’t quite expecting (hoping, maybe) anyone to go back to Octave to make maps for it, I did want the capability to be there. Thus, in order to make an Octave map, all you have to do is provide an audio file, a specially-made MIDI file containing the locations and timings of each note, a file containing some metadata such as what graphics to use and timing information, and optionally a piece of cover art. No code writing necessary! New animated backgrounds and color palettes can also be added very easily, though only developers can do so.

At the time, I wasn’t especially familiar with Unity, so I wanted to use an engine I had learned in a class the summer before: LÖVE2D. LÖVE2D has no graphical interface — it just runs your game code, written in Lua scripts. This makes it great for teaching game scripting. I happen to enjoy making games in this style of engine, but I recognize that the higher barrier to entry means it’s less ideal for group projects featuring beginners to game development compared to other engines. It also meant I had to juggle the responsibilities of project management, programming, and teaching the other team members how to use the engine. It was a fun experiment, and I learned a lot… but most of all, I think I gained a new appreciation for Unity.