When you’re playing it, it feels like the video game representation of some real-life sport. You’re bouncing a ball back and forth with another player, which at first glance sounds a lot like like table tennis, AKA ping pong– and that would seem to explain the name. And yet, PONG is two-dimensional and free of gravity. The ball goes in a straight line, at a fairly constant rate of travel. And you don’t play ping pong by rotating a wheel. Come to think of it, it’s not a darned thing like ping pong. So what the heck is it?
To answer this important question, we built this real-life Tabletop Pong game.
We’re certainly not the first to build a real-world analog of a video game or even of PONG itself.
While there are other examples in this little genre, the most relevant for us to mention is the Pongmechanik project (better link for photo and video). Built from 2003-2004, Pongmechanik was a startlingly faithful mechanical representation of PONG– right down to the pixelated square floating on guide wires across the playfield. And amazing though it is, it does not feel much like a “real-world” game, but instead more like wonderful old electromechanical arcade games.
Coming back to our main question now, what is PONG supposed to represent?
Our answer to this question is a game somewhere between pinball and ping pong: Two players each have a single knob that controls the position of a paddle along a short track. Using the paddles, they bounce the ball back and forth and try not to miss the ball, lest the other player score a point. The paddle surfaces are curved, so that the ball reflects in different directions depending on the position of impact. The paddles are powered, so that the ball keeps a fairly constant velocity between the two sides, and the speed gradually increases as the game is played. The playfield is level and has a dotted line down the middle, and the scores are displayed on either side of that line. There are top and bottom walls of the playfield that the ball can bounce off of. Sounds possible, right? So we built it.
We documented the build with (a heck of a lot of) photos, which are available in this flickr set; probably the best way to see them is to flip through the whole set– we’ve embedded a picture set below, so click through to flickr if you can’t see it.
And of course, you’ll want to know how it looks in practice so we took a quick video while trying it out for the first time– bugs and all. It’s embedded below. Again, if you can’t see it, you may want to click through and view it on YouTube.
In what follows, we’ll walk briefly through the build, pointing out some features along the way.
We stripped out the linear stages and designed some laser-cut plywood pieces to act as paddles that could be moved around by a timing belt (white). Minor challenge here: finding metric screws to work with the IKO rails and bearings.
Next, more lasering. Each rail will get mounted in a wooden box, with a slit for the paddle to slide down. We painted the top panel of each box black so that it will have the right look from above when the project is complete.
The paddles need to be powered to keep the ball moving. We got this 24 V pusher solenoid from McMaster-Carr. It didn’t come with a return spring nor a place to put one, so we (a) drilled a hole in the back of the plunger (b) found a spring, cut it apart, bent it, and fed it through the back of the plunger and (c) glued it all down with JB weld. (Damn, that stuff is strong.)
The paddles need to detect a ball hitting it. We found some soft-touch limit-detecting microswitches that seem to work nicely. The paddle surface is a 1/4 section of a PVC pipe, about 1″ thick. Put it all together with the solenoid and the paddle assembly, plus a hardware-store miniature brass hinge.
Inside the wooden paddle box are two timing belt pulleys. One is turned directly by a knob that will be added to the top, and the othe is free spinning. As the timing belt turns it slides the paddle assembly, which is mounted to the linear slide system and can move up and down the slot.
The overall feeling that you get turning the knob is a lot like operating foosball controls.
The two solenoids are driven by high-current n-channel MOSFETs with reverse protection diodes. They are driven by an ATmega168 microcontroller. The program is very simple: when the switch is closed (because the ball hit the paddle) the paddle solenoid is fired for a set length of time, with a gentle stop. This would be easy enough to do with analog electronics as well, but it sure is easy to write a nice debouncing routine on an AVR.
The playfield is made of clear acrylic, and is held together by acrylic cement. It spans the distance between the two paddle boxes and locks them into place. Beneath the acrylic, we attached a piece of carefully cut glossy black paper that gives the characteristic shape of the playfield– it’s held in place with spray adhesive. The dotted line in the middle is emphasized with a second white piece of paper attached beneath the black paper.
Our score wheel is a piece of 1/16″ thick two-tone engravable plastic. The outer edge is knurled (or the two-dimensional equivalent, ridged?) to give a better grip when turning it by hand. The inner cutout allows it to sit around a 1/4″ tall acrylic cylinder, cemented to the black material below, that acts as a plain bearing. Once the playfield is added on top, it’s pretty easy to read the score. The top edge of the wheel reaches past the top of the playfield, so it just takes a finger touch to spin it to the desired value.
And some final touches. The top and bottom walls of the playfield need to be bouncy. Acrylic is not. At the surplus shops, we found some beryllium copper finger strip– the sort of thing that is used for providing flexible EMI shielding near covers of instruments and computer cases. It’s all kinds of springy, and can be glued in place with tough epoxy–that makes the walls remarkablyelastic.
The knobs on both sides get a neat rubber grip– made from an old double-sided timing belt and pulley, and finally we add the ball– a 1 1/4″ steel ball bearing.
And it’s a wrap. What fun!