
Joel Nyonga
Gameplay & Level Designer
Drumkit Controller Prototype
Demonstrated via Dead As Disco, Brain Jar Games, Inc.
Project Type:
Controller Prototype
Platform:
Custom Arduino Hardware
Duration:
1 month
Tools:
Arduino IDE, C++ (Arduino)
Team Size:
Solo
Overview
This drumkit controller is a prototype I developed to explore what happens when the physical, full-body expression of rhythm games such as Dance Dance Revolution and Guitar Hero meets the combat of beat 'em ups like Dead As Disco. I wanted to find out if a hybrid control scheme could put players into the flow state that makes each of these genres fun.
What I did:
-
Designed and documented controller blueprints, outlining component layout and required materials
-
Built a mini prototype to validate the hybrid control concept before commiting to a full prototype
-
Constructed a physcial drumkit controller using Arduino hardware components
-
Designed controller inputs mapped to gameplay mechanics, making sure physcial actions reflected in-game actions

Initial Concept
Showing off my proof of concept for the controller

Pic of the hardware
My initial concept included:
-
Attack detection using impact sensor that the player would physcially hit
-
Dodge detection using a rangefinder to determine when the player moved left/right
This proof of concept gave me the confidence to pursue this project since I was already having fun dodging incoming attacks by moving left/right. However, I still had to address some problems with the design as:
-
Attack & dodge detection was inconsistent
-
Limited mobility due to being locked to sitting down in a chair
Improving Attack Detection
Design Changes
To deal with the input detection issue I decided to pivot away from using impact sensors and instead used drumsticks covered with tin foil. This worked significantly better because:
-
Greater contact surface allowing more reliable input detection
-
Hitting drumsticks together acted as a pseudo metronome for the player



Switched from impact sensors to drum sticks
Input Detection
Creating the drumstick controller went relatively smoothly. By hitting the sticks together you close a circuit which would act as a mouse click, acting as an attack. Holding the sticks together acts as another input, the charge attack.
I also added 100ms of input delay when attacking as without it the player would accidentally buffer multiple attacks at once.
Improving Dodge Detection




Solutions
To solve these issues I:
-
Scrapped the old detection hardware
-
Used an accelerometer/gyroscope instead to detect player position and acceleration
-
Mounted the hardware on the player using a hat
This way I could recalibrate the position of the player whenever they stopped moving instead of when they were in a specific position. It also meant that players could dodge by moving just their head instead of their whole body.
Dodge detection in action
Old Design Problems
The initial concept for the dodge detection had 2 main flaws:
-
Only detected dodging if you moved left or right
-
The detection distance had to be calibrated differently depending on how the player sat in the chair
There was also the downside of not being able to dodge mulitple attacks since the player had to move back to the starting position after each dodge.
Testing dodge detection using an accelerometer gyroscope instead of a range transmitter
Takeaways
The changes proved to be the right move as:
-
Detection was more reliable
-
Easier to perform
-
Most importantly fun to do
The only issue that came from these changes was that I had no means to power the hardware while it was on the player. This meant that I had to run cables from the device on the hat into a power source.
What I Learned
This was a fun project where I got to make a controller and use it with a game that I'm super into!
If I was to revisit this project the things I would address first would be:
-
Improve hit detection for counters and finishers
-
Better cable/wire management
-
Figure out how to power hardware while the player is wearing it
I learned a lot during this project such as the importance of input delay, how to create and detect inputs in multiple ways, programming using Arduino IDE.