This is the story of a young and inexperienced company that was given
the chance to develop the sequel to one of the top ten games of all
time. The sequel was allotted roughly one year of development with its
full team. To make up for the short development cycle and correspondingly
small budget, the project was supposed to reuse technology. Not technology
in the sense of a stand-alone engine from another game, but individual
components that were spun off from yet another game, Thief: The Dark
Project. The Thief technology was still under development
and months away from completion when our team started working with it.
To cap everything off, the project was a collaborative effort between
two companies based on a contract that only loosely defined the responsibilities
of each organization.
to these gloomy initial conditions the fact that the game from which
our shared technology was derived slipped more than six months from
the initially estimated date, that several developers quit during the
project, that we didn't bring the full team up to strength until six
months from the final ship date, and that we struggled with financial
and business problems during the entire project. Having learned this,
you might anticipate the worst. Strangely, System Shock 2 shipped
within two months of its targeted date and will, I hope, be recognized
as a sequel worthy of its esteemed ancestor.
step back and trace the origins of the companies and the project. Looking
Glass Studios is familiar to many as the creator of a series of highly
innovative titles including the original System Shock, the Ultima
Underworld series, the Flight Unlimited line and Terra
Nova, among others. Three years ago, Ken Levine, Rob Fermier and
I were developers at Looking Glass, struggling with the aftermath of
Voyager, an aborted Star Trek: Voyager-licensed project.
At the time, Looking Glass was in financial and creative disarray after
a series of titles that, though critically acclaimed, had failed to
meet sales expectations, the latest being Terra Nova and British
Open Championship Golf. Frustration with the 18 months wasted on
Voyager and a certain amount of hubris prompted three of us to
strike out on our own to test our game design and management ideas.
We wanted to nail down a rigorous and technologically feasible design,
focus on game play, and force ourselves to make decisions rather than
allow ourselves to stagnate in indecision. We wanted to run a project.
sketch of the Psi-Reaver (left)
and the final product(right)
we formed Irrational Games. After some misadventures with other development
contracts, we unexpectedly found ourselves back at work with Looking
Glass as a company rather than as employees. Initially, our brief was
to prepare a prototype based on the still-in-development Thief technology
recast as a science-fiction game. The scope of the project was very
wide, but we quickly decided to follow in the footsteps of the original
System Shock. Our initial design problem was how to construct
such a game without the luxury of the actual System Shock license,
since no publisher had yet been signed. Our initial prototype was developed
by the three of us working with a series of contract artists. Our focus
was on the core game-play elements: an object-rich world containing
lots of interactive items, a story conveyed through recorded logs (not
interaction with living NPCs), and game play realized through simple,
reusable elements. This focus enticed Electronic Arts into signing on
as our publisher early in 1998 - a fantastic break for us. It meant
we could now utilize the real System Shock name and characters.
we went back to our original design, threw away some of the crazier
ideas that had been percolating and began integrating more of the rich
System Shock universe into the title. That was the point at which
the real development began.
the Engine, Stupid
impacted the development of System Shock 2 as much as
the existing technology we got from Looking Glass. This fact cannot
be classified monolithically under the heading of "what went wrong"
or "what went right," however, because it went both wrong and right.
The technology we used was the so-called "Dark Engine," which was essentially
technology developed as a result of Looking Glass's Thief: The Dark
Project (for more about its development, see "Looking Glass's Thief:
The Dark Project," Postmortem, July 1999).
Thief technology was developed with an eye toward reuse, and
I will refer to it in this article as an "engine." However, it is not
an engine in the same sense as Quake's, Unreal's, and
LithTech. The Dark Engine was never delivered to the System
Shock team as a finished piece of code, nor were we ever presented
with a final set of APIs that the engine was to implement. Instead,
we worked with the same code base as the Thief team for most of the
project (excluding a brief window of time when we made a copy of the
source code while the Thief team prepared to ship the game).
Remarkably, it is still possible to compile a hybrid executable out
of this tree that can play both Thief and System Shock 2
based on a variable in a configuration file.
intimate sharing of code both helped and hurt us. We had direct access
to the ongoing bug-fixes and engine enhancements flowing from the Thief
team. It exposed us to bugs that the Thief team introduced, but it also
gave us the ability to fix bugs and add new features to the engine.
Because we had this power, we were sometimes expected to fix engine
problems ourselves rather than turning them over to Looking Glass programmers,
which wasn't always to our benefit. At times we longed for a finished
and frozen engine with an unalterable API that was rigidly defined and
implemented - the perfect black box. But being able to tamper with the
engine allowed us to change it to support System Shock-specific
features in ways that a general engine never could.