Phil Arnold

Air hockey and robotics have a rich history. From the humanoid stylings of DB in Kyoto, Japan, to the mechanics of Professor Mark Spong’s air hockey robot at the University of Chicago, to the latest and greatest hack cobbled together with 3d printer parts, engineers find the air hockey environment to be a useful arena in which to develop autonomous robots. As a bounded, two-dimensional playing surface, with four reflecting rails and a single puck that’s batted around, the air hockey table limits the chaos coming at a newborn machine and allows it to master things like tracking, prediction, and reaction. Like many things, however, air hockey is deceptively simple to learn and punishingly difficult to master.

In 2008 game designer Joe Cain was invited to the offices of Nuvation, an engineering firm in the Bay Area, to test an air hockey robot they were developing for the Freescale Technology Forum. Cain was the number two ranked air hockey player in all of California. The following is his account of playing this robot designed to crush all humans in its path—the Deep Blue of air hockey.

Game Designer Joe Cain

By Joe Cain

Game testing is something that very naturally just comes to me; it isn’t even something I have to think about. For some reason I have an innate ability to conceptualize this stuff, like: “I see the way these dominoes are stacked up. If I do this thing that somebody’s not expecting me to do then something crazy is going to happen.”

So when I heard Nuvation was trying to find somebody who knew a little bit more about air hockey than your average engineer, I was interested. I was still working for Electronic Arts at the time and my schedule was pretty flexible so I went down to their office, which was in this weird area where San Jose and Milpitas meet up, two blocks away from an old apartment complex I used to live at. I wasn’t so sure what to expect.

I hit the buzzer and project lead, Mohan Gurunathan, took me back to a room with one or two other lab guys and said, “We really want to see if you can do some damage here to the robot. We feel like it’s pretty good but we can only do so much.” They had this robotic arm set up on the other side of an air hockey table. There was a whole apparatus up eight to nine feet above the table with a camera pointing down—it looked like an overhead, but really tall. There was a puck covered with reflective tape and there were some computers around. And on the monitors there was a representation of the table, so as the puck was being knocked around it was projecting what was going on by drawing vectors on the screen.

Nuvation’s Air Hockey Robot

I kept looking at this and going, “Whoa, what’s going on here?” I wasn’t sure what they were up to exactly. I wanted to understand if this robot would react the same way a human would react or if it would do something different. I figured a straight shot probably wasn’t going to score. So I just thought, “I’ll do my normal drift, my little diagonal drift and then I’ll try to shoot a bank.”

So I drifted the puck up and almost at the centerline I punched at it with my back of the mallet and did a right-wall-under—and the arm didn’t move! The robot didn’t flinch! The puck went in and all of a sudden everybody in the room just kind of stopped—they were totally expecting the robot to block my shot. They said, “Wait, wait. Hold it. This can’t be right.” I almost felt like they were going to look and see if the arm was actually plugged in or not. Like: “Is this thing on?”

Finally, they said, “Let’s reset and do that exact same thing you just did.” So I set up, I did the exact same drift—same bank shot—and boom, I scored again. All of them were stunned and looking at each other like, “What is this guy doing?”

Well, they weren’t accounting for a drift. A lot of novice players sit behind of the puck and wiggle their hand—trying to psyche their friend out—before making a shot, and I think this is the kind of gameplay the engineers expected. They had done all of their modeling off of a stationary puck so when I drifted the puck the robot thought it was a shot. And actually, had I not redirected the puck the robot would have been in perfect position to block it—but once the robot had made a decision it couldn’t adjust. Also, the puck had to be shot at a certain speed and from a certain location; they assumed a person would probably shoot the puck from further back on the table and I was releasing much closer to the centerline.

So they made a few changes on the fly, really quickly. They moved the recognition point of a shot to further up the table and they figured out a way to determine whether something was a shot or a drift based on its speed. The robot definitely improved but it was still rough around the edges. They said, “We sort of hacked this together really fast as a result of what you just did. Give us a chance to go back to the drawing board.”

from nuvation.com

A few months later they invited me back. They were planning to put the robot in some science and tech museums around the world so they wanted to make sure it was ready. It was clear that they had isolated some weaknesses and it was actually getting difficult to score. The robot was really good at defending stationary banks and it had gotten much better at reacting to the banks when hit off a drift. But perfectly executed straight shots and chase shots still gave it problems. If I hit a Goran-style [player Goran Mitic] chase shot off-goal and then let it come back and hit my back rail before redirecting it at the opposing goal as a cross or a bank, it couldn’t stop it.

Another odd thing: Off-speed shots were also working, which I found really weird. A couple of times I hit a slow straight shot right down the middle and the robot arm actually moved completely out of the way. It didn’t know what to do. It’s as if it was thinking, “Hey, is that a shot? Is that not a shot? Where do I go?”

But by the time I went back for the third time they had really shored up a lot. Well, with the exception of a fast perfect bank, or a weird deflection, it blocked pretty much every bank, stationary or drifting. It’s pretty impressive that they were able to perfect that part of it. It was probably on the border of an expert- to pro-level defense then. I actually think this robot understood things about air hockey that many players don’t understand, especially in regards to spin. Nuvation had figured out a predictive algorithm that took spin into account and how it changed trajectory, completely without me saying anything. So that was interesting. But it still couldn’t stop a chase shot. To this day it can’t stop that. The robot just can’t handle it. The chase shot kind of blows the robot’s mind for some reason.

Photo by Michael Kannelos

It can’t really play offense either, but none of these robots can. The best offense it can achieve is kind of a defensive batting back; it reads where you are going to shoot and then tries to be in that position to punch it back at you. The guys at Nuvation were experimenting with pistons—basically they chunked out a part of the front of the mallet and they inserted a piston with an air compressor. In order to shoot, it would position the mallet behind the puck and then activate the piston and then the piston would push out this piece of the mallet and shoot it forward. But even that was pretty weak.

It’s probably okay though because what I’ve often noticed is that against robots people just score on themselves! They find they can’t make an easy shot so they try to overcook something and the shot bounces back funny and they score on themselves. They probably beat themselves more than anything.

Eventually though, what you could do with this robot—if it improved enough—is program different playing styles and abilities into it. Maybe this is just the game designer in me. The robot’s behind Plexiglass so the mechanism’s protected, right? You can’t mess with it; it can’t hurt you. Then you put a video stream up and have a character of a little girl or a sumo wrestler or a ninja or a karate expert as if that’s the robot’s persona. And it’s taunting you, saying, “Hey, come on there. Try to score on me!” You could play against a super-terrible newbie with no reflexes or against the world champion Colin Cummings. Or against Colin Cummings as a 10-year old prodigy ready to kick your ass! I think somebody could pull that off—using this technology to entertain.

The Official Mr. Cain

Either way, it’s eye opening to try to understand this puzzle Phil and Mark and Billy [players Phil Arnold, Mark Robbins, and Billy Stubbs] have been trying to deconstruct for so many years. And to watch the guys at Nuvation go through it from an engineering mindset. Air hockey is just not a perfectible thing. Even for a robot. There’s too much randomness. There are physical things that happen with a puck that you can’t predict. How many times have I tried to block a puck and I block it perfectly and it still ricochets in a weird way and scores on me anyway? No amount of raw computing power can overcome that.

Especially on a chase shot!

Editor’s note: We contacted Nuvation and learned that they were finishing up a smarter, faster, next-generation version of their air hockey robot. We tried to arrange a rematch between Joe and the robot, but the unit needed to be shipped to a science museum on the east coast. We can only speculate about its “much improved” skillsets and if it can compete with Chiba University’s robot, which is apparently intelligent enough to adjust its long-term strategy based on its opponent’s playing behavior. Maybe next time we’ll leave humans out of it altogether.