Super Mario 64
Tim Bickmore - 10/19/98
Introduction
This is a review of the Super Mario 64 game made for the Nintendo 64 game
machine. The game consists of an animated character (Mario) who is under
user joystick control. The objective is maneuver Mario through various
worlds collecting coins and "stars" while avoiding various creatures, falling
objects, cliffs, and other perils. This version of Mario is implemented
in high resolution 3D texture-mapped graphics, with Mario and the other
creatures animated in a fairly believable manner. One of the features of
Super Mario 64 is that you can cause the camera to be operated in one of
three modes--stationary, Mario view, or Lakitu view. In Mario view, the
camera stays very close behind Mario at all times, whereas in Lakitu view,
the camera moves around in an "intelligent" manner to try and show the
scene from the best viewpoint at any given time. Buttons on the joystick
control box can be used to toggle among the camera modes, or manually orient
the camera. The following discussion relates to the intelligent Lakitu
view camera mode.
What is important to show the user at any given point in time?
In order to be of the most help to a user, the following things should
be shown by the camera whenever possible (prioritized):
-
Mario -- required so that the user can orient him/herself to the scene.
-
The area directly in front of Mario -- required for navigation, especially
if running.
-
Potential dangers -- including the various creatures which Mario can encounter.
-
Objects to interact with -- including coins and stars.
-
Paths to take -- to provide the user with information about navigational
options.
Camera control
The algorithm for Lakitu control mode of the camera seems to be the following.
The camera is controlled as if it were mounted on a floating platform tethered
to Mario by a rigid rod. In general, as Mario moves forward, the camera
follows at a fixed distance. If Mario turns and heads into the camera,
it pulls away to maintain this distance. If Mario stops to interact with
any object, the rod length is reduced to about 1/4 of its normal distance
used while Mario is in motion (I believe this is equivalent to "Mario View").
Although the camera initially starts following Mario on the ground, it
can change its altitude (raising up) and moving side-to-side if necessary
to avoid obstacles or to show a better view.
The orientation of the camera relative to its position is generally
kept such that Mario is centered in the picture. However, the orientation
can be changed from this in order to show where Mario is going (see the
Joystick section below) or to show other objects of interest.
As Mario moves from one scene or room into another, the camera cuts
(or fades) during the transition.
The camera algorithm does not handle occlusion. In general, it attempts
to avoid obstacles as long as Mario is moving. However, if you intentionally
run Mario around a tall object such as a rock he will be occluded by the
object until you move him enough that the camera is "pulled" either around
or through the object. It is also possible to manually position the camera
on the back side of objects (such as walls) relative to Mario. When this
is done the walls become invisible (due to culling) which I suppose the
designers would say is a feature rather than a bug.
Joystick control and relation to camera control
In addition to following Mario around, the orientation of the camera is
also directly effected by the direction in which Mario is heading. If Mario
is faced away from you and centered in the frame, a slight touch of the
joystick to turn him left causes the camera orientation to change such
that Mario is positioned approximately 1/3 of the distance from the right
edge of the screen, effectively showing you more area in the direction
he is heading than behind him.
Improvements in output
The whole issue of automated camera control seems to be an unsolvable problem
as long as the events in the world are not scripted so as to optimize camera
viewing; unplanned combinations of events will ultimately foil even the
best-planned camera shot. In unscripted worlds such as Mario, it
seems like the best thing to provide the user with are VR goggles with
head tracking to give them direct control over viewing orientation; making
the selection of "camera" shot their responsibility without burdening them
with additional controls. Other possibilities for camera control are to
provide multiple views at one time (e.g., world view, Mario view, and Lakitu
view all at once) but this reduces the resolution available in any given
view and can result in even more confusion for the user. I also think that
the camera should not be able to move through objects; it destroys the
realism of the world.
Other improvements that I would make to this system include better
texture maps (a wider variety and more sublte designs in general), and
more interesting and autonomous characters.