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):
  1. Mario -- required so that the user can orient him/herself to the scene.
  2. The area directly in front of Mario -- required for navigation, especially if running.
  3. Potential dangers -- including the various creatures which Mario can encounter.
  4. Objects to interact with -- including coins and stars.
  5. 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.