Striker Air Hockey
Project Role: System Designer, Engineer
Engine: Unity (Arduino implementation)
What is it?
"Striker Air Hockey" is air hockey built into a custom built capacitive touch screen, with the image projected down onto the table so users can see what is displayed.
This project was made possible 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 a level systems designer and low-level engineer.
For the level systems design, I implemented a new physics joint to improve the responsiveness of the strikers, as well as how it feels to use 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 50% 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 and testing.
Systems & Hardware
The implementation of the new physics joint to the strikers allowed for a more natural feeling when playing the game. This helped solidify the idea that it was, in fact, air hockey, but 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 System.Threading functions to handle the inputs; this allowed one thread to read in the inputs to tell the program where the user's hand is on the surface, while another thread tells the program what to do with that information. The final thread updated the thread system by clearing out the data, so the first thread can repeat its task.
This process allowed the program to operate 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, several capacitive touch grids, and copper tape and wire. I reviewed the pre-existing 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 functions 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 a cellophane to protect it. On the underside, wire is fed down to the capacitive touch shields, which relay which wires are interacted with to the microcontroller, an Arduino Leonardo. The Arduino feeds this data to the program as input, and gives some minor diagnostic data, specifically the time to complete the circuit in milliseconds (ms) and the change from the average time, typically called a delta, also in milliseconds. Utilizing this data, the program is able to determine which wires are being interacted with, and highlights them in red, with the intensity being based on how much interaction they are receiving.
The time to complete the circuit is dependent on whether or not a user is touching that circuit, and that time is changed because of the moisture in the user's hands.
What went right?
Users thoroughly enjoyed this game, and came to Seattle Mini Maker Fair looking for our project, specifically. Given this reaction, the project as a whole could be said to be a success. It also opened our eyes to using Arduino micro-controllers on other projects as a peripheral.
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. My supposition is that it is because people are not typically used to a touchscreen that is a table.