Project Type
Engine Used
Languages Used
Main Skills Developed
University Grade Received
|
University Game Jam Project
Unity
C#
Unity, C#, Unity Collaborate, Technical Knowledge, Scrum Hosting and Public Speaking Skills
100% (A)
|
BeatBoxing was the game I (in a group of seven) developed for my third and final game jam in the second year of my degree, where we designed and produced everything in five days.
My main tasks were producing the beat recognition, the player controllers and the AI. While the beat recognition and controller setup took the most time (see below), the rest was quick. I also hosted scrums to keep the programming team on track and in sync.
Overall, I am very happy with the game we have created.
My main tasks were producing the beat recognition, the player controllers and the AI. While the beat recognition and controller setup took the most time (see below), the rest was quick. I also hosted scrums to keep the programming team on track and in sync.
Overall, I am very happy with the game we have created.
Gameplay Footage
Warning: The above video can be really loud!
The above footage shows me playing against the AI. The theme for our game jam was 'minute hero', hence why each music clip stops after a minute.
The above footage shows me playing against the AI. The theme for our game jam was 'minute hero', hence why each music clip stops after a minute.
Beat Recognition Breakdown
For the beat detection, I utilised a Fast Fourier Transform function which can break a wave into different elements based on frequencies. This allowed me to quickly figure out when there was a beat or higher note, and create notes accordingly. However, as we wanted to view a note falling before the beat, and then have it actually hit the bar for the player when the beat occurs, I utilised multiple audio sources (one of which was muted for the player) and played the muted one first. The beat detection was based on this inaudible audio source. I then calculated the delay between the music starting and the first beat, and delayed the notes appearing on the screen accordingly. The result was a note hitting the bar for the player at the exact time of the beat in the audio!
This process allowed any audio track to be analysed (with a slight bit of variable tweaking along the way), and notes to be automatically created at important parts of the audio, such as a beat.
This process allowed any audio track to be analysed (with a slight bit of variable tweaking along the way), and notes to be automatically created at important parts of the audio, such as a beat.
Controller Inputs
One key feature of BeatBoxing is it's support for various types of controllers. Initially, we only had keyboard support, however I quickly raised the idea of adding support for actual GuitarHero guitars, as I thought this would be more intuitive and exciting for the player to use. Luckily, a member of my team had a spare GuitarHero guitar for us to use. Additionally, my lecturer had access to some large accessibility buttons which worked perfectly as a drum set. After some tweaking, we got those working too! Finally, we decided to add PS4 controller support just in case.
The result of this was we had players playing against each other using guitars, drum sets and traditional controllers!
The result of this was we had players playing against each other using guitars, drum sets and traditional controllers!
Source Code
The source code for BeatBoxing can be found here:
WillRose6/BeatBoxing: This is the source code of my beat boxing game I made in second year. (github.com)
WillRose6/BeatBoxing: This is the source code of my beat boxing game I made in second year. (github.com)
Demo
A playable demo can be found here: download