The Masters of the Pong Arena :

Dan Morris (dmorris@cs.stanford.edu) and Neel Joshi (nsj@cs.stanford.edu)

 

 

 

The planet Earth has been invaded by an alien civilization from the planet Xoltar.  The invaders have shown no mercy toward human beings.  Those that were lucky have been enslaved, working in the Xoltarian tungsten mines.  Those that were unlucky – the fastest and the strongest of all men – have been sent back to Xoltar as gladiators in the Battle Pong Arena.

 

Today you will step into that arena, armed only with your rocket-paddle and your land mines.  If you survive, you will win your freedom and your return to Earth... but do you have what it takes to survive?

 

 

Haptic battle pong is played between two opponents, each seated at a machine with a SensAble Phantom.  The two machines are connected via TCP.  The Phantom is used to position and orient the paddle, and the keyboard is used to move the player around the battle pong area.  Each player begins the game with 99 health points; a player loses health each time the ball bounces on his side of the arena.

 

Players can also press a key to switch from “paddle mode” to “gun mode”.  In “gun mode”, a player can fire rockets at his opponent to take off additional health points (the gun is also controlled via the Phantom).

 

Players are also equipped with three “land mines”; each represents a “haptic attack” that can be directed toward the opponent.  The attacks include “heavy paddle”, “slow paddle”, and “remote operation paddle” (which allows the attacker to remotely manipulate the opponent’s Phantom).

 

This game makes extensive use of the full 6-DOF input available from the Phantom, for swinging at the ball and orienting the player’s gun.  3-dof force-feedback is used to simulate contact between the racquet and the ball, impact forces from gunshots and explosions, and the “haptic attacks” that are discussed above (the remote-operation attack is a particularly good time).

 


 

Currently, the presence of haptics in the mass market is limited primarily to traditional non-force-feedback devices (mice, etc.) and simple single-dof feedback devices (e.g. vibrating game controllers).  The community currently studying or producing more complex haptic interfaces focuses primarily on high-end, specialized applications: surgical simulation, tele-operation, 3d-modeling, etc.  We are of the opinion that when the cost of devices like the Phantom comes down to a point that these devices are accessible to the general public, the primary applications of such devices (and the primary economic support for such devices) will come from the game industry, which will jump on the opportunity to incorporate six degrees of freedom into video games.

 

We sought to produce what may be among the first 6-dof, force-feedback games, and in particular to explore the playability of a game that uses six degrees of freedom.  Furthermore, we sought to create a final project with a significant amount of action and violence.  Our solution was “Haptic Battle Pong”.  We find this to be especially appropriate, since “pong” is typically associated with the origins of graphic video games, and the incorporation of six degrees of freedom and complex force-feedback may well represent a new beginning for the video game industry.

 

This document will server as a ‘manual’ for the game (how to play, etc.), as well as a summary of our implementation decisions.  We assume that the reader is familiar with the Sensable Phantom force-feedback device, which reports six degrees of motion and provides three degrees of force-feedback.  See http://www.sensable.com for more details.

 

 

 

 

IIa. Starting the Game

 

Each player should sit at a computer with a Phantom and a decent graphics card (our polygon count is not high, but we make extensive use of textures, etc., so software GL won’t work very well, especially given the high computational demands of the haptic interface).  The computers should be connected by a reasonable network; latency should not be a huge issue, since all contact physics are computed locally.  Use the usual windows volume control to set the volume for the game; the effects and music volume are controlled by the ‘wave’ and ‘synthesizer/MIDI’ volume controls, respectively.  Each player should run “haptic_battle_pong.exe”, which should start up the game (you should hear the ‘Mike Tyson’s Punch-Out’ theme when the program starts).

 

Text Box:  		 
CORRECT GRIP		INCORRECT GRIP

Players should grip the Phantom fairly tightly, since there will be some “kick” from various game events (the forces are not too high, but a loose grip can cause you to let go of the Phantom).  It is critical that players hold the stylus so that the tip of the device is pointing upwards (thus the last joint should be down toward the table).   On the screen, this corresponds to the paddle pointing toward the ground, as if it were a tennis racquet held upside down.  The grip the player uses will probably resemble an Eastern ping-pong grip, rather than a tennis racquet grip.  This is an equipment-safety requirement; there is a point in the desktop Phantom’s workspace where the second-to-last end-effector joint cannot rotate any more, and the Phantom may be damaged if a user reaches this point but continues to push on the Phantom.  This point never comes into play if the user holds the Phantom as instructed, but may be a problem if the user holds the Phantom like a tennis racquet.

When the player is holding the Phantom and is ready to start playing, he should click the “start haptic loop” button.  This will start the ball/physics simulation as well.  At this point, the player will be able to hit the ball against the middle wall (since no opponent is present).  If the paddle appears not to be oriented correctly (aligned with the stylus), the Phantom probably needs to be re-calibrated.  Our application does not perform autocalibration; we suggest running the Sensable demo applications (e.g. ‘Dice’) a few times.

 

When both players are ready, one player should click the ‘start server’ button.  The other player should type the IP address or hostname of the server into the text area, and click ‘connect to server’.  At this point, players should be able to see each other moving and the game can begin.  The middle wall no longer represents a physical object; the ball will pass over to the opponent’s side.

 

The game will be reset (health set to 99, all mines restored, all active mines removed from the playing area) when the connection is initiated, but players may also want to press ‘0’ to reset the game again when both sides are ready.

 

If one player disconnects, the other player will be automatically returned to one-player mode.

 

IIb. Keyboard/GUI controls

 

The controls are documented in the ‘help’ screen (just click the ‘help/about’ button), but we will run through them here to explain the gameplay a bit :

 

·         Use the Phantom to move and orient the paddle.  The Phantom’s workspace roughly represents the ‘reach’ of the player, so you will usually have to move the player, in addition to the Phantom, to reach the ball.

·         Use ‘A’, ‘W’, ‘S’, and ‘D’ to move left, forward, back, and right respectively.

·         Use the spacebar or the control key to jump.  You don’t need to jump very often, but sometimes the ball will pass slightly above your reach, and jumping will occasionally help avoid enemy bullets or mines.

·         Use ‘TAB’ to toggle gun mode; you should see your paddle change to/from a rocket launcher.

·         Use ‘E’ to fire your gun (when you are in gun mode)

·         Use ‘E’ to enable/disable your ‘spin paddle’ (when you are in paddle mode).  This will allow you to put spin on the ball.  Your paddle will be blue when you have enabled spin.  We don’t recommend doing this right away; it does make the ball more difficult to control (although backspin shots are a lot of fun once you get used to the game).

·         Use ‘Z’ to place a mine.  You cannot hurt yourself with your own mines, but you generally want to do this on your opponent’s side of the court.  The mine will initially appear red; it will turn black when it is ‘armed’ (at this point your opponent can detonate it by stepping on it).

·         Use ‘1’, ‘2’, ‘3’, and ‘4’ to select your regular, slow-paddle, heavy-paddle, and remote-operation-paddle mines, respectively.  Note that you only have one mine of each type in a game, and that you can only have one active mine in the playing area at a time. Your available mines are displayed as buttons below the game window; the buttons will disappear as you use up your mines.

·         Use ‘C’ to detonate your own mine.  This won’t do any damage to your opponent, but you may want to remove your mine from the playing area so you can place another mine.

·         Use ‘~’ to cycle through your available mines.

·         Use ‘0’ to reset the game at any time.  Player health will return to 99, all active mines will disappear, and all players will again have one of each type of mine.

·         Use ‘T’ to reset the ball to its initial position.  This is basically never used during the game, but it may be useful when you’re first getting used to hitting the ball, and you may want to ‘feed’ the ball to yourself a few times.

 

This may seem like a large number of keys, but you generally are only using the movement keys, TAB, and ‘E’ at any one time.  You will also note that all the keys we chose are in easy reach of each other, so keeping your hand resting on the movement keys will be fine.

 

In addition to these keys, there are several GUI controls that offer additional functionality

 

·         The haptic loop can be stopped at any time using the start/stop haptic loop button.  The game will need to be reset if the haptic loop is stopped, but you should stop the haptic loop if you need to release the Phantom (since just putting down on the table is not a great idea when forces can still be applied to it).  You may also need to stop and re-start the haptic loop if at any time during the game you exceed the Phantom’s maximum velocity (a limit imposed by the driver) and receive an error message telling you that the Phantom is shutting down.  This doesn’t seem to happen too often, but you may start moving the Phantom quickly in the heat of the battle.

·         The ‘gravity’ checkbox can be used to disable gravity.  In fact, when both players disable gravity (and reset the ball using either the ‘T’ key or the ‘reset ball’ button), the game is placed into a much simpler “pong mode” in which the ball is constrained to move in a plane parallel to the ground.  This can be helpful for getting used to the game or just playing an easier version of the game.  When in this mode, a target will appear on each player’s back wall; hitting this target takes five points away from the opponent.  The game is basically played like air hockey.  Using spin in this mode will take the ball out of the plane, so don’t use spin in this mode. J

·         The ‘connect to server’ button can be used at any time to disconnect and re-connect to the server whose hostname/IP address is currently in the text box.  We don’t recommend connecting to yourself, despite the fact that the initial string in the edit window is ‘localhost’. J

·         The ‘skycam’ button can be used to move the camera to a stationary position, above the playing area.  Most players seem to prefer the default first-person camera (you can return to this camera using the ‘playercam’ button).

 

 

IIc. Game Rules

 

The rules of the game are as follows :

 

·         Each player begins with 99 health points; the first to 0 loses the game (just press ‘0’ to restart the game when you die)

·         One health point is lost each time the ball bounces on your side.  If the ball is on your side for several seconds, you will begin to lose health points as time passes (so don’t get so excited about shooting your gun that you forget to hit the ball!)

·         A player loses five health points if he is hit by an opponent’s bullet

·         A player loses ten health points for detonating an opponent’s mine, and loses additional health points as long as he is standing in the burning mine

·         Players can move anywhere in the playing area, but a player can only fire his gun when he is on his side of the court (you will not be able to fire if you are very close to the center wall or on your opponent’s side).

·         Players have one mine of each type per game.

·         Players have unlimited ammunition, but can only fire once every two seconds.  A clicking sound indicates that your gun has reloaded.

 

Also note that there is a back wall present on each side of the court, although it is not visible on your own side of the court.  There is also a ceiling at about twice the player height; the ball loses its vertical velocity when it hits this ceiling.


 

A brief overview of the game is provided on the first page of this document; here we will discuss some of the features we included in more detail, and some of the design decisions underlying those features.

 

·         The basic control mechanism for the game uses the Phantom to control the paddle (both its orientation and its position in a limited workspace) and the keyboard to control player motion.  We chose this approach, as opposed to using the Phantom exclusively, for several reasons :

o        The controls feel rather like Quake or similar first-person shooter games, which makes the gameplay intuitive for someone who has played games of this type before.  Quake uses a mouse in one hand to control the player’s gun, and the keyboard (the same buttons we use) to control player motion.

o        We could have simply mapped the Phantom’s workspace to the total workspace (thus presenting no moving avatar at all), but we felt that the player motion aspect of the game adds excitement and more variety from shot to shot.

o        In general, just using the Phantom for 6-dof control of the paddle is extremely complex, especially for the first few times a new user plays the game.  Adding additional complexity to the Phantom interface – e.g. moving the player in addition to moving the paddle – would have made it very difficult to learn the game.

 

·         The contact between the ball and the paddle is modeled as a mass penetrating a plane with a fixed spring constant.  With spin disabled, the force exerted on the ball is always perpendicular to the plane of the paddle and proportional to the ball’s penetration through the plane of the paddle.  This leads to a fairly intuitive model of contact from the player’s perspective, and provides the basic physical properties that you’d like to have in a ball-paddle collision (a faster-moving ball bounces off faster, a faster-moving paddle makes the ball move faster (due to longer contact time), etc.).

Force-feedback is used to haptically render the contact between the ball and the paddle.  Our qualitative experiments showed us that force-feedback was essential to hitting controlled shots, which was encouraging; it seems like force-feedback actually can contribute significantly to complex gameplay. 

Originally, we set the force rendered on the phantom to be proportional to the force exerted on the ball at all times.  This actually was not intuitive from a player’s perspective, and generally led to very brief contacts that were difficult to control.  We experimented with a variety of force models, and ultimately decided that the simplest contact model – a constant force that is not dependent on the velocity of the ball or the penetration distance of the ball – was the best approach.  This actually feels quite convincing once you are able to control the paddle.

The only problem with this approach, initially, was that the Phantom tended to vibrate when a player tried to ‘pick up’ a stationary ball, due to the rapid and repeated initiation and release of contact with the ball.  So currently at low penetration distances, we actually do apply a force to the phantom that is proportional to the force applied to the ball (and thus to the penetration distance), but above some threshold distance the force jumps up to an empirically determined constant.

 

·         When spin is enabled, an angular velocity is imparted on the ball that is proportional to the motion of the paddle within the plane of the paddle face.  A force is also applied to the Phantom in this plane as well.  Once the ball has some angular velocity, it will bounce off all surfaces (walls, floor, and paddles) in a direction that is not perfectly perpendicular to the surface (it deviates according to the angular velocity of the ball).  Combined with the graphical effect of the spinning textured ball, this seems to be a convincing representation of the spin that one might apply to a tennis or ping-pong ball.

 

·         Force-feedback is also used for the “haptic attacks” that can be directed at an opponent using land mines.  The simpler attacks (slow-paddle and heavy-paddle) are very simple haptic effects which can be very convincing to someone who has not used a Phantom before.  This can make for a very exciting introduction to haptic feedback, and part of our goal in designing this game was to provide haptic sensations that would immediately impress a “gamer”.  The tele-operation attack in particular demonstrates the potential for players to interact in a physical way that has never before been possible in video games, which we anticipate would be exciting to most video game enthusiasts.  It makes for a very convincing demo when one of the players detonates a remote-operation mine and lets go of his or her phantom; if the opponent is in the same room, players are immediately impressed by the ability of one Phantom to control another Phantom in space.

 

·         Force-feedback is also used to provide a “kick” when a player fires his gun, to provide a “kick” when a player is hit by an opposing bullet, and to provide a “rumbling” sensation when a player is in contact with a detonated mine.  These are simpler effects that are little more than what is available on a 1-dof feedback device (although they are accurate in the direction in which the force is applied), but they do add to the excitement of the game.

 

·         We use a number of sound effects to provide realism; this actually helps players in getting the timing of the game down, and of course in building some intensity during gameplay.  We also play MIDI music during the game to add additional ‘ambience’; we selected the music from the Nintendo classic ‘Mike Tyson’s Punch-Out’.

 

·         One of the biggest difficulties players have in learning to play the game is adjusting to the level of depth perception that is required to control a game in 6-DOF.  We found that adding projective shadows for the ball and the paddle (cast onto the ground) actually make a big difference in helping the player find the appropriate depth for contacting the ball.  Similarly, the texture-mapping on the ball makes it much easier to perceive the spin of the ball when spin is enabled.

 

·         Several other graphical features, including snazzy texture-mapped fire and the use of the familiar Quake III rocket launcher, add to the intensity of the game significantly.

 

 

 

After playing only a few games of Haptic Battle Pong, we are able to reliably control the six-dof input device and make a variety of interesting shots.  Various strategies have started to emerge, and the game has actually become quite exciting.  The complexity of the game is still limited by the difficulty of 6-dof control, but we anticipate that if the Phantom were a more regularly-used device, this would cease to be a problem (i.e., Quake would probably have been hard to play before anyone had mice and keyboard).

 

At the moment, a Phantom costs several thousand dollars.  But the costs will inevitably come down, and the success of this project is encouraging for the future of high-degree-of-freedom gaming.

 

Also, there are lots of guns and explosions.

 

For up-to-date information about game availability, updates, etc., please visit :

haptic.battle.pong