Striker Air Hockey
Project Role: Level Systems Designer, Engineer
Engine: Unity (Arduino implementation)
What is it?
"Striker Air Hockey" was an air hockey game created in a custom-built capacitive touch screen with an image projected down onto a table so the user experience more closely simulates a real air hockey game. One major purpose of this project was to make a game that was accessible to as many individuals as possible.
This project was achieved through the use of an Arduino Leonardo and several capacitive touch shields.
This project was a showcase project finalist at Alt.Ctrl.GDC in 2018, as well as being on display at the Seattle Museum of Pop Culture for the Mini Maker Faire in both 2017 and 2018.
For this project I was the level systems designer and low-level engineer.
For the level systems design, I implemented a physics joint to improve the responsiveness and user experience of the strikers. I also implemented a multithreading system for the program to use when reading and using the input data. The process of multithreading allowed me to reduce the lag present in the program by half while it was running.
As for the engineering side of the project, I redesigned the table's hardware to be more durable and cheaper. I also performed routine repairs on the project as it was damaged during development, testing, and showcasing.
All the work I performed on this product helped the team achieve their goal of accessibility.
Systems & Hardware
The implementation of the physics joint to the strikers allowed for a more natural feeling when playing the game. This helped solidify the realistic feeling of air hockey even though it was on a custom touchscreen.
After the new joint had been implemented, we noticed that there were still issues with how quickly the program responded to inputs. The fastest solution was to implement Unity's Job System. This implementation of the Job System used threading functions to handle the inputs, which allowed one thread to read in the inputs to tell the program where the user's hand was on the surface while another thread told the program what to do with that information. The final thread updated the thread system by clearing out the data, so the first thread could repeat its task.
This process allowed the program to operate roughly 50% faster and more precisely than it had before.
As a whole, the table's hardware cost less than $100, consisting of an Arduino Leonardo microcontroller, several capacitive touch grids, and copper tape and wire. I reviewed the preexisting designs for the table and redesigned the hardware itself so it would be more durable and less prone to being damaged during transport. The redesign of the hardware also allowed it to have a faster setup time, allowing for more time to make sure it actually functioned as intended.
The table surface was built by inlaying copper wire perpendicular to the table and covering it with copper wire. From there, a copper tape grid is formed over it and covered with cellophane to protect it. On the underside, wire was fed down to the capacitive touch shields, relaying which wires were activated to the microcontroller. The Arduino then fed this data to the program as input and gave some minor diagnostic data, like the time to complete the circuit in milliseconds (ms) and the delta time, also in ms. Utilizing this data, the program was able to determine which wires are being interacted with and highlights them in red, with the intensity being based on how much interaction they received.
The time to complete the circuit was dependent on whether or not a user was touching that circuit and the moisture in the user's hands.
What went wrong?
While the project was enjoyed by users, the use of a capacitive touch screen led to issues regarding fidelity and upkeep of the hardware. Due to the nature of the wiring, it was not particularly durable even with my improvements. In addition, due to the nature of a touchscreen table, it was not as intuitive as we had expected. This is likely because people aren’t used to the idea of a touchscreen table, they were hesitant to make use of the technology in the intended way.
What went right?
Users thoroughly enjoyed this game and even came to Seattle Mini Maker Faire specifically looking for our project. Given this reaction, the project as a whole could be considered a success. It also taught us how to use Arduino microcontrollers on other projects as a peripheral.