Musings On Game Engine Structure and Design



What It's All About

Who Is This Guy?

The List

Complete Archive


RSS Feed




My History in Games

By Kyle Wilson
Sunday, May 26, 2002

Interactive Magic
I started working in the game industry in May of 1997 at Interactive Magic.  I'd just gotten my Master's in computer science from UNC Chapel Hill.  My last months in grad school, I flew around the country interviewing.  The more places I saw, the more convinced I was that I wanted to stay in the Research Triangle.  At that point I hadn't even considered a job in the game industry.  I hadn't heard of I-Magic, either, until their director of technology came to give a talk at UNC and show off iF-22, their latest flight sim.  They were local, just down the road in Morrisville, and games sounded like a lot more fun than CAD software.  I interviewed, they offered, I accepted.
Me, in front of a waterfall, in Iceland

I started in the Graphics Advanced Development Group, which was less fancy than it sounds.  (Well, I started play testing iF-22 for two weeks straight, until it shipped.  Then I got a real assignment.)  It was just me, Chris Tector, and Yates Fletcher, and I got transferred after a few weeks to the team working on iA-10 Warthog.  That lasted about a week before A-10 got canned (too difficult to do low-level terrain) and I got moved back to graphics.  Our graphics engine was SG (for Scene Graph, I think) written by NDL before they did NetImmerse.  SG was part of that last generation of graphics engines that supported rendering in software before everything went hardware only.  My tasks were things like adding support for fat lines or support for different billboard variants.

After a few months of that, one of the programmers on the unfortunately named "iF/A-18E Carrier Strike Fighter" left, and I got switched from core engine development back to writing game-level code.  I wrote camera control code,F-18 Box assorted game logic, and all the cockpit control and display code.  If you hit something like ctrl-alt-shift-p in F-18, a game of Pong will pop up in one of the cockpit's multifunction displays.  I've put Pong in all my games since.

All this slipping back and forth across the line between graphics code and game logic is also something I've kept up ever since.

F-18 shipped.  I-Magic went public.  I moved back to core graphics--just me and Yates now, since Chris had moved to England.  I spent maybe six weeks working on a hardware-only D3D-based hierarchical model renderer for what was to be our next game, an F-117 stealth fighter sim.  Then I showed up one morning to learn that the company was strapped for cash, the project was cancelled, and the team was being laid off.  That was in November of 1998.  I didn't know it then, but I'd end up changing jobs again the November after that.  And the November after that.


After a relaxing month and a half off, I started work at a small start-up named HeadSpin, located in Chapel Hill.  HeadSpin had a couple of guys working on a 2D engine for licensing to electronic book publishers and the like, and that was where their initial funding had come from.  They'd used that money to develop an incredible 3D engine, though, called Plasma.  Shortly before I was hired, they signed a deal to license Plasma to Cyan, the developers of Myst and Riven.  That gave HeadSpin money and the impetus to expand.  They hired me and Adrian Stone, another I-Magic refugee, to do tools work and later core engine programming.  (Adrian, incidentally, is a good friend, a very bright guy, and an excellent programmer.  We've worked together at five companies now, and game development just wouldn't be the same without him.)

After I-Magic, HeadSpin was an eye-opening experience.  The type of work I had done on F-18 didn't exist there, because there was no game-level code.  Everything was data.  3D Studio Max was our level editor.  Adrian wrote plug-ins for triggering and response.  I wrote plug-ins for materials and skinning and portals and other things that I forget.  You wouldn't have wanted to try to make a flight sim with Plasma, but you could make any game that involved walking a character around in a world collecting things and triggering events.  And any game you made would look damn good.  When I saw a Plasma demo for the first time, I thought it was the best looking thing I'd ever seen on a computer, and even now, three years later, I haven't seen much that looks as good.  Plasma supported any number of texture passes with any kind of blending, portals, reflections, Max particle systems and Max animations, and a decent artist could do truly amazing things with it.  Cyan had plenty of excellent artists, and Headspin's own artists weren't too shabby either.

In November of 1999, Cyan scrapped the project we were working on.  It was codenamed Dirt, and was going to be a sequel to Riven.  Rand Miller, Cyan's CEO, decided that Dirt wasn't challenging enough, and that he wanted to make a massively-multiplayer online game instead.  Fortunately, he liked HeadSpin, so instead of sacking us, he bought the company and moved us all out to Spokane.


Like I said, Plasma was completely data-driven.  You could make any adventure gamrealMyst Boxe with it.  (Adrian wanted to go back and remake all the old King's Quest games with modern graphics.)  So while we and Cyan were working on Dirt, Cyan's Japanese partner, Sunsoft, licensed the engine to remake Myst.  This project, called Myst 3D at first, then later realMyst, came to dominate more and more of our time, until finally Cyan brought it completely in-house and their own artists finished it.

I spent most of this time rewriting our exporter plug-in for Max and adding support for saving and loading to Plasma.  This meant, basically, going through every class in the engine and adding calls to read and write static state (for export/import) and dynamic state (for saving and loading).  I also got to add the coolest feature I implemented in my time at HeadSpin/Cyan, a Max plug-in that opened a Plasma window to display the current scene in the engine, then updated the Plasma scene dynamically as objects changed in Max.

I'd been at Cyan nearly a year when we shipped realMyst.  I considered my options.  I hated Spokane, and hated being on the other side of the country from most of my friends and family.  The online game--known as Mudpie, then Parable, and now Myst Online--looked like it would take years more to finish, if it ever did.  I e-mailed friends back in North Carolina, got a job offer, and came home.  That was November of 2000.


iROCK was already months into development on Ozzy's Black Skies when I started work.  Or Ozzy's Savage Skies.  It had been Savage Skies, you see, but Sharon Osbourne didn't want people thinking Ozzy was Savage, so it became black instead.

I won't say much about the story behind the game, but I will say this.  iROCK's original plan was toSavage Skies Box do small tie-in games with rock stars that would ship as data tracks on their music CDs.  I'm skeptical about whether that would have worked, and I guess other people were too, because the company decided instead to do regular boxed games, but with a rock star tie-in.  So they -- this was before I was on board -- signed Ozzy, built a game around him, started to shop it around... and KISS Psycho Circus came out and tanked.  That's where things stood when I joined iROCK.  We went without a publisher for a long, long time.  Ozzy was expensive, and they weren't sure whether he'd be an asset or a liability.  Finally, we agreed with BAM! to take Ozzy out of the game.  We took him out, changed the name back to Savage Skies, shipped it...  And the week we shipped, The Osbournes hit MTV, and Ozzy became the most popular guy in America.  Every review slammed us for taking him out.  Who knew?

My main job on Savage Skies was to do special effects.  I was responsible for weather and weapons and assorted other stuff that, after my time at Cyan, I thought ought to be data and not code.  I wasn't working with Plasma, though, and Plasma couldn't have done the things that Savage Skies needed done anyway, so I compromised.  I did a lot of tools work and tried to expose as much as possible for the artists and designers to play with.  I'm a big fan of data-driven design.

Once Savage Skies came out, I spent some time prototyping the physics engine for a new game.  And then the Xbox version of Savage Skies got canceled, and our budget fell out from under us.  My career at iROCK lasted nineteen months, the longest I've been with any employer since getting out of school.  What a strange trip it's been.

Day 1 Studios

And now I'm at Day 1.  I've been here a few years now, which is twice as long as any of my earlier game industry jobs lasted.  I started a couple of weeks before they--we--shipped MechAssault.  During the development of MechAssault 2, I worked on core engine technology--stencil shadows, scene management, animation, exporter work, all that jazz.  Now we're working on the next game, with new and very cool technology.  This is the first time I've been in a position to help design of an engine from the ground up, and it's a great learning experience. 


To sum up, I've worked on four games that shipped.  MechAssault 2 sold several times as much as all of the others combined.  I'm pretty sure that MA2 is the only game I've worked on that made back its development costs.  I've been involved with code or engine design work for, depending on what you count, about six games that haven't shipped. 

This is all pretty typical for the game industry, unfortunately.  Reviewers talked favorably about the avionics in F-18 and the variety of weapons in Savage Skies, but that's not much consolation for poor sales and cancelled projects.  The thing is, I really do love games, and I think engine development is the most interesting and challenging work there is.  (Especially challenging.  Just ask Joel.) But even of the few lucky games that make it to master and end up on shelves, far fewer still are given the time or money or attention to design that they need to succeed.  I've heard that only 30% of games in development ever ship, and that 60-80% of those lose money.  I think that comes as a surprise to most developers, and scares a lot of them off.  According to Game Developer's salary survey, over half of game programmers have only 1-2 years of experience.

But as for me, I'm afraid I'm in it for the long haul.  And I try to do my part to make my next game the new Quake or StarCraft or GTA3.  That's what it's all about, right?


I'm Kyle Wilson.  I've worked in the game industry since I got out of grad school in 1997.  Any opinions expressed herein are in no way representative of those of my employers.