The Masters of
the Pong Arena :
Dan Morris
(agentmorris@gmail.com) 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).
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.