Hack-io Party is a minigame collection inspired by Mario Party and Wario Ware, where you try and beat as many minigames as possible, and try to reach a high score!
As a team with both Electrical Engineering and Computer Engineering / Science majors, we wanted to make a project that allowed all of us to fully participate and learn new skills relevant to our majors. By both creating a Unity game, and creating a breadboard controller for it, we were able to learn about how our disciplines can be combined to make an awesome project!
What it does
The Hack-io Party Game is a series of mini-games in which you try to beat as many games in a row as possible.
The Hack-io'd Controller is an Arduino device which sends user input (inputted via button or motion sensor) over a serial connection. This signal is detected in Hack-io Party, and used to trigger game events.
How we built it
We created our game using Unity 2020.3.30f1, and created our Arduino binaries using the Arduino IDE.
We created our controller using an Arduino Uno, a Breadboard, Buttons, and a Motion Sensor.
We also prepared a and tested Water Temperature sensor and Humidity, however these were not included in the final device implementation.
Challenges we ran into
We were very ambitious with our controller. Going into this project, we wanted to have a bunch of weird sensors and create a game which has the user perform absurd tasks with their controller, such as place a water temperature sensor into a glass of ice-cold water. However, we ran into issues, since we had a lot of work to do, and not a lot of time.
We even bought water temperature sensors, however we couldn't get those sensors to fit correctly into our breadboard. The wires ends weren't compatible with the breadboard, as they were tinned copper wire. So, Zak decided to solder headers onto the end of the sensors' wires allowing them to connect to the breadboard, but we were unable to successfully implement those sensors before the time we needed to start submitting the project.
We also prepared a humidity sensor, with the intent that the player would have to blow humid air onto the sensor to, for example, make a balloon start flying, but the sensor didn't work the way we wanted it to, so we didn't included it in the final project.
On the Software side, only one of our members had any Unity experience before we started this project, that being Sam (me). I spent a lot of time during this project teaching Unity to Nathan and Tylor so that we could all contribute significantly to the project. Using what they learned during the Hackathon, Nathan was able to make a level and also 90% of the main menu, and Tylor was able to make 2 (and almost 3) levels!
Accomplishments that we're proud of
Nathan and Tylor hadn't used Unity before this hackathon, and were able to contribute very significantly to the Unity project.
Zak, the primary Hardware / Arduino developer, had never used Arduino and had never used things like motion / humidity sensors before this Hackathon, and he was able to create a well-working controller within 24 hours!
Learning how we wanted to have our controller interact with our game was something we didn't start researching until during the hackathon. Originally, we considered detecting inputs via a separate / third-party script and converting those to keyboard keypresses. However, we realized early on into our hack that it'd be much easier detect the Arduino signal directly within our game via a serial port connection with C#.
At that point, we needed to decide what we wanted to send over our signal; Since all of the buttons and sensors we implemented only outputted 0 or 1, we decided to send a single integer, using bitwise operations to set one bit's value for each sensor. This worked well and is fast, and we're very proud of it.
What we learned
Zak learned Arduino for this project, and took the lead in hardware + embedded software development.
Tylor and Nathan learned Unity for this project, and were able to create their own polished mini-games within 24 hours!
Sam and Zak, the developers for the Arduino and the C# signal handling, hadn't had any experience in signal handling between microcontrollers and PCs before, and we were able to successfully trigger game events in Unity using our controller!
What's next for Hack-io Party
We'll be disassembling the Hack-io'd Controller for parts, and fondly remembering our sick game we made in 24 hours😊