PREFACE
When I started writing games, in the 8-bit bedroom coding boom of the eighties, the
low budgets and short turnaround times for writing games encouraged innovation
and experimentation. This in turn led to some great games (and, it has to be said,
a whole heap of unplayable rubbish). Let no one tell you games were better back then!
I remember being particularly inspired by two games, both of which used realistic
physics as a core of their gameplay.
The first, written by Jeremy Smith and originally published for the United King-
dom’s BBC Micro range of home computers, was Thrust. Based on the arcade game
Gravitar, an ivy-leaf shaped ship navigates through underground caverns under the
influence of a two-dimensional (2D) physical simulation. The aim is to steal a heavy
fuel pod, which is then connected to the ship via a cable. The relatively simple iner-
tial model of the spaceship then becomes a wonderfully complex interaction of two
heavy objects. The gameplay was certainly challenging, but had that one-more-time
feel that denotes a classic game.
The second game, written by Peter Irvin and Jeremy Smith (again), was Exile.
This is perhaps the most innovative and impressive game I have ever seen; it features
techniques beyond physics, such as procedural content creation that is only now being
adopted on a large scale.
Exile’s physics extends to every object in the game. Ammunition follows ballistic
trajectories—you can throw grenades, which explode sending nearby objects flying;
you can carry a heavy object to weigh you down in a strong up-draft; and you can float
pleasantly in water. Exile’s content qualifies it as the first complete physics engine in a
game.
Although Exile was released in 1988, I feel like a relative newcomer to the physics
coding party. I started writing game physics in 1999 by creating an engine for mod-
eling cars in a driving game. What I thought was going to be a month-long project
turned into something of an albatross.
I ran headlong into every physics problem imaginable, from stiff-suspension
springs, which sent my car spiraling off to infinity; to wheels that wobbled at high
speed because friction moved objects around of their own accord; to hard surfaces
that looked like they were made of soft rubber. I tried a whole gamut of approaches,
from impulses to Jacobians, from reduced coordinates to faked physics. It was a learn-
ing curve unlike anything before or since in my game coding career.
xix