Computer Games

Work

I've worked on-and-off for LookingGlass Technologies which
became Looking Glass Studios
from June 1994 until LGS closed its doors on May 25, 2000.

During that time period, I've worked on the following
games:

System Shock: This was in development when
I interviewed, and between this and the Underworlds,
I knew that LG was my game company of choice. It was
nearly done when I signed on, but I did do extensive
playtesting (although I was officially programming for
another project), and wrote two of the minigames for
the floppy version: Bot Bounce and Eel Zapper.
The latter was our tour de force minigame at the time,
but for the CD game I outdid myself with a relatively
complete Wing Commander minigame, Wing 0--written
just before Wing 3 was released, it's both an homage and a
parody, featuring, for example, one pacifistic wingman who
refuses to fight (and strangely never gets attacked either,
because he's actually a traitor!!!), a mission where
you get something like 8 wingmen, and a final "aww, what the
heck, let's send you out by yourself to defeat their entire
armada" mission.
My voice can also be heard in the game reciting a laundry
list of objects found tucked away somewhere on level 3.

Flight Unlimited: I did a tiny bit of testing,
a little bit of pyschological support, and I wrote the
credits sequence around Seamus' pre-existing jello cube
physics engine. (Most of the hard work of the rendering
used existing LookingGlass libraries, though.) In fine
minigame tradition, I also added code that actually let
you play the Fight! machine, although admittedly
it's lame, awkward, and not very fun.

Terra Nova: This is a game I actually officialy worked on.
Terra Nova had a long and checkered development history,
and while very well-received by reviewers, it failed to
sell very well. By the time I started working on it, the
graphics engine was in its second version, and I revamped
its appearance, tried to speed it up, and rewrote it again
trying to speed it up more.

Terra Nova was the first
(and for at least two years, the only) game to do
"rendering-to-the-horizon" without being a flight-sim, that
is, while providing high detail close to the ground. And
the Terra Nova graphics engine was running long
before Magic Carpet and its "bullfog" shipped. Do I sound
resentful? Well, if I see another game where a totally
fogged-out mountain suddenly appears, hiding a sky bitmap,
I think I will tear my eyes out. (Battlezone, anyone?)
I mean, if it's that foggy, I don't think I'd be able to see the
sky that was even further away than that mountain. Oh, I'm
griping now.

Anyway, I didn't write that system, although
I tweaked it to look nicer (gouraud shading), and wrote
most or all of the special effects (the 3d sky texture,
reflective water, particle effects, etc). I also wrote
and built the two training missions--unfortunately they
were still too hard, and my estimated time for players
to play them were off by a factor of 2 or 3. We desperately
needed a third mission to train squadmate communication.
Also I pretty much solely wrestled the game into submission
to run in only 8 Meg (or at least I was the only one doing
it on the programming side--designer mission tweaking also
helped).

Thief: The Dark Project: During Terra Nova, I did
some rendering research for developing a next-generation
indoor rendering engine that we could use for future System
Shock sorts of games, and "invented" (re-discovered?)
portal technology. (Of course, it turns out that Descent
was using portals before anyone!) This got hashed and beaten
around and turned into an engine called Portal, which
is the renderer behind Thief and System Shock 2.
Like everyone else, the editor uses a CSG technology
for building, and I wrote the CSG-to-Portal-database
converter, as well as a few other elements of the Dark Engine's
editor.

After Quake came out, the engine was revamped to do Quake-style
light-mapping, since this was clearly the wave of the future.
(Jedi Knight got by without.) Other people at Looking Glass
have managed to convince the Portal engine to make use of hardware
acceleration, and I later refined the technology for System Shock 2
to allow colored lighting.

Mostly, though, I wish a game could have shipped with that
technology a year or two earlier, and that's part of why I wasn't happy
working for LookingGlass and quit in the middle of the project.

Flight Unlimited 2: One weekend, for fun, I wrote a fast
affine texture-mapper, focused on polygon-throughput, not fillrate
(unlike all the texture-mappers I had written to that date). Then
for fun FU2's lead programmer and I dropped it into FU2. We saw
a major speedup, enough to allow twice as many polygons had been
expected! Not bad for a weekend's work. Unfortunately, due to
an inconsistentcy between the way it worked and LG's existing
affine mapper, FU2 ended up not using it, and rather using an
LG mapper which wasn't quite as throughput-oriented. Oh well.

I also contracted during the last few weeks of FU2, optimizing
the nightime runway strip lights, fixing up some object sorting
problems, writing additive instead of alpha-blending support so
lights could be on at night, and finally spending 60 or 70 hours non-stop
right before cutting gold chasing a heinous multi-threading semaphore
hang that turned out to be broken multi-threaded file I/O in our
compiler vendor's libraries. At least they got us source code a
few hours after we asked for it--although we had figured it all out
by then.

You can bet that at the end of
those ~60 hours, Doug and I were not exactly coding competently
(he tells me that we actually went home for about 4 or 6 hours at
one point, but I don't remember if I napped or just, y'know,
showered and suchlike), and the version we ended up with still
had race conditions, but at least they were about 1/10000 as
likely to occur.

System Shock 2: I didn't do anything for SS2 beyond
refining the engine as described above.

Thief II: I didn't really do anything for Thief II.
I playtested it a little, and it used the rendering engine
I had written for Thief and revamped for Shock 2.

Thief III: I was part of the engine team developing
a next-generation engine for Thief III. After LGS shutdown,
rights to Thief III went to Eidos, and eventually Ion Storm
Austin, under Warren Spector, created a new Thief III, which
was actually in some ways similar to the original one, since
LGS's Thief III lead designer, Randy Smith, went to Ion Storm
Austin and was the lead designer on that one, too. But it didn't
share any code and it really was a ground-up redesign.

Not-Work

QMAP
is a Quake terrain renderer with full source in only 2000 lines of code
which I wrote one weekend (around March of 1997?) with the explicit
purpose of providing as simple a complete terrain renderer as possible,
in the hopes it might be as useful a tutorial as possible. At the time,
only one other Quake-rendering engine on the 3d-engines-list had source,
and that source was old, incomplete, and not very fast.

I have no clue how much attention it got (geocities' counters screwed
up in the middle of its lifespan), or how much other free engines have
chosen to build on it, but I have gotten lots of job offers as a result.

Historical

I used to be an active user of MUDs. In addition to helping
to run the Darker Realms lpmud, I wrote my own mud system,
Sludge, as well as SP, a simple LISP-like wrapper
around TinyMUCK 2.0's MUF. I don't have source to SP
anymore, and I have no desire to support Sludge, unless
you are TEAM CTHULU.