Gears of War. Unreal Engine. Journalists commonly use these two phrases to quickly encapsulate the history of Epic Games, a highly successful video game developer based in Cary, North Carolina.
And why not? The Gears of War franchise has sold gazillions of copies, and the Unreal Engine commonly powers blockbuster titles like BioShock. Both successes have made the gaming industry look up and take notice. But to stop with those platitudes is to ignore a much deeper and richer past.
Epic Games, founded by Tim Sweeney in 1991, has a much bigger gaming footprint than most people realize. When I hear "Epic," I think back to a time in the early 1990s when I was deeply involved in my local computer bulletin board system (BBS) scene. BBSes were early dial-up online services that provided message boards, primitive online games, and numerous free files to download.
At that time, Epic MegaGames -- as Sweeney's company was then called -- published some of the world's most popular and successful shareware games. Games like Jill of the Jungle, Jazz Jackrabbit, Epic Pinball, and others could be found in nearly every BBS file section across the U.S.
And the game that started it all for Sweeney was ZZT. Released in 1991, ZZT is a text-based action/adventure/puzzle shareware title with a built-in game editor and scripting language. Think LittleBigPlanet in text. Sweeney's experiences with ZZT led directly to Epic's success with Unreal Engine, which inseparably integrates game engine and editor much in the same way ZZT did.
Sweeney -- now CEO and technical director of Epic -- is probably a genius, and he's definitely a geek. But he's not a geek in your standard "never leave the basement" sense. Although soft-spoken, Sweeney is quietly confident, and he possesses a keen business instinct that is rare in an analytical genius of his caliber. That instinct for business led him (and Epic) directly where they are today.
Earlier this year, I met with Sweeney to discuss his personal history over lunch. With so much press coverage overlooking Epic's early days, he was happy to oblige. During our one and a half hour conversation, we talked in earnest about Sweeney's early programming days, the story behind ZZT, the origins of Epic, the '90s shareware business, and even a bit about the future as well:
The Early Years
Where did you grow up, and where were you born?
Tim Sweeney: I grew up in Maryland in a little town called Potomac. It's where my parents live. My father started out working for the government. He worked for the Defense Mapping Agency creating maps from satellite imagery long before that was commonplace.
Do you mind if I ask you when you were born?
TS: 1970. That makes me 38 now. Scary. That's really old. For a long time -- this shows how old Epic is -- I was a really young guy running a game company. That was kind of unusual. The funny thing, though, is you see that happening throughout the whole industry. People really started getting into game development in a big way in the early-mid 1990s, so the industry's grown that much older.
Everybody's growing up together.
TS: Yeah. Back then, your typical developer was in his twenties; now, he's in his thirties. Most developers have a family -- wife and kids -- so the industry's really changed a lot.
What was the first computer you ever used?
TS: I started out with an Apple II. Which was a good computer to learn with because it had absolutely no hardware accelerated graphics or anything like that. It was just a little 6502 processor, so you had to do absolutely everything yourself. Of course, you learned things the hard way, and you basically learned about computer science rather than "how to use a Commodore 64 light-blinking flashing effect."
Did you program assembly on that, or did you just stick to BASIC?
TS: I started out with BASIC and then I learned machine language. I didn't know assemblers existed at that point, so I just learned the hex op codes and typed them into the little debugger manually. I'd write some fairly complicated assembly programs, manually assembled. That was a crazy time.
A lot of game developers actually started out that way. When I was out at Richard Garriott's new start-up, which is now NCSoft Austin, he had an Apple II sitting out, so we're like, "Oh wow!" I sat down, and I could still type the crazy assembly codes into it.
Yeah. That was my first computer as well -- an Apple II+. It was already pretty old when I got it, but I learned how to program BASIC on it.
TS: The great thing about that computer -- I just bought one about a year ago to go back and use it. The thing that strikes me is the first thing that starts up when you boot it. You're in a programming language. Try to find a programming language in Windows. Your computer's a million times faster, but you can't do a damn thing with it.
What was the first video game or computer game you remember playing?
TS: I used to play the early arcade games. You know, there's Pac-Man, Defender... there's this one I was addicted to for a while, Space Firebird. It was this little Galaxian-style game with a bunch of things flying around. I was never really a serious gamer that way, but I'd go to the arcades a lot and play them.
I guess when I was about eight or nine, the Atari 2600 came out, and it was a really sucky game machine. It was obvious even at the time that it was sucky relative to what the arcades could do. It was disappointing.
After that, I got the Apple II, and I really missed out on all of the game consoles after that. I missed out on the early Nintendo and Sega Genesis. I ended up basically being a generation ahead of CliffyB -- you know, the guys who got into computers and did gaming the computer route rather than going into the game consoles. You end up with a very different perspective that way.
Sounds like it. So you started programming on the Apple II. Did you move on from there to a PC?
TS: I got a PC in 1989. The Apple II is a great machine, but the problem was that, by the late 1980s, there was really no market around it anymore. There weren't games being actively developed, all of the bulletin board systems and developer forums had moved on to IBM-based development.
I moved, kinda begrudgingly, 'cause it was a pretty complicated and messy machine at the time, you know, with DOS and early Windows. I got that in 1989; I started writing random little programs for it.
I'd written maybe several hundred programs for the Apple, including maybe fifty little games. Some of them were pretty extensive, but I'd never released anything until ZZT, which I started in 1990 and then released in early 1991 sometime.
Did you make any games like ZZT for the Apple II?
TS: Yeah. So I guess I was 11. The first serious game I wrote for the Apple II was -- the Apple II had this low resolution graphics mode, it was like 40 dots by 24 dots. But you had 16 colors to work with, which was just a huge number of colors.
So I made this game in the style of Atari's Adventure: you are a dot and you move the dot around the screen and you pick up different items and go between rooms, so I learned most of the basic programming techniques back then.
I started out writing one program for each room in the game world. So I'd write my own little input loop for each room, and then I realized, "Oh wow, there are subroutines, so I can call a subroutine to do an input." And that generalized everything.
Then I realized I could store the game board procedurally rather than writing a program to draw them and then reading the frame buffer to go from there. So I learned a huge amount of programming techniques that way. I was probably 12 or so, in probably 1982 or '83 when I wrote that.
Did you ever want to show those to the world? That would be pretty amazing. If you ever wanted to release those, I could help you copy the disks into disk images -- if you still have those disks.
TS: Sadly, I don't. It just didn't seem important. Yeah, that's the tragedy. I don't have the ZZT source code either. I wish I'd saved it all.
What happened to the source code? Did you lose it accidentally or...
TS: No, I just didn't pay attention to it. There were so many other things going on at the time. It was probably lost some time when we were working on five Epic projects -- you know, working with Cliff on Jazz Jackrabbit and James Schmalz on Solar Winds, and all these other games.
There were a few years at Epic where I'd gone from being a programmer, writing all of the games, to just managing projects -- I was basically a producer for about three years before I started working on Unreal as a programmer again. And that was crazy -- that was 16-18 hours a day straight for years.
The Origins of ZZT & Epic
Did your parents have any experience with starting businesses? Is that where you got the idea to start your own company?
TS: My older brother, Steve Sweeney, who's 15 years older than me, grew up in Maryland also, but then he moved out to the west coast and got involved in a bunch of start-ups in San Diego. When I was about eleven, I went out there several times to visit him. He was my role model for a few years there, because he was still pretty young and he was working for a bunch of cool companies.
I got to see the offices where he was working. He had all sorts of computers -- he was doing crazy things for minicomputers and mainframe communication at the time, and he'd be designing software and hardware drivers to run it. And he had a cool car and he had his own little house near the beach.
That was really cool, just to see that in the computer business, you didn't need to have an ordinary job at a company -- just go wear a suit every day. You could have fun between companies doing different projects. So that really was a big influence on me in deciding to start a company.
Take me through the process of when you started making ZZT.
TS: The funny secret behind ZZT is it started out while writing a text editor. I'd used Turbo Pascal and other languages on the PC, but I didn't like any of the editors that came with them, so I started writing my own.
I got bored with that at some point and decided to make the cursor into the smiley face character, and then make different characters you could type that would block the player or move around in different ways. See, you'd use this text editor to draw the game board and then move around it and play the game. That eventually evolved into the game and the editor ZZT.
It's funny, because ZZT is one of few things that started out as a tool before it was a game. And all the gameplay evolved from just thinking of random weird things to do with the characters. There were some other games along those lines like NetHack and Kroz.
I was going to ask you about Kroz. When I first saw ZZT, I thought it was a lot like Kingdom of Kroz from Apogee. Did that inspire you in any particular way?
TS: I'd been working on ZZT for several months -- I guess it was three or four months -- before I saw Kroz or NetHack or I realized anybody else had done anything like that. So I'd come up with a bunch of ideas on my own, and then I played all of those games and saw that there were a whole lot of other ideas to draw from.
For example, Kroz had these bombs where you have this little thing that looked like a bomb on the screen, and then you touch it, it starts a countdown, explodes, and clears out some blocks. So I borrowed a bunch of ideas from it at that point.
That's kind of a common pattern in everything I do. One minute I'm completely on my own and I think, "Wow, I'm a genius, I can't believe this idea nobody else had!" And then you look at the references on it, and it turns out that a hundred other people have done the same things in the 1980s. And then you look, and you get your additional ideas from those. Between invention and stealing, you come up with a really good combination of ideas.
When you were writing ZZT, where did you live? I read that you were going to school.
TS: I was in the University of Maryland at the time. Gosh, I guess I started in 1989 -- that was crazy. At that point, I was two years into college, going to school; I was doing mechanical engineering at University of Maryland. University of Maryland is a party school unless you're in engineering, so that was really tough, actually. I learned a lot of useful math that I wouldn't have learned on my own.
I basically studied and did school work all day, then programmed all night -- working on ZZT. On the weekends, I'd come home, and I had this little shareware business I was growing after I released the game.
I'd receive a bunch of orders through the mail (people would send their checks in), then I'd copy disks on the computer and send them out. At the same time, I was working on Jill of the Jungle, the next game.
Did you live with your parents or did you have your own place?
TS: I was in a college dorm for four years there, but I was still in the same town with my parents -- I'd go back there on weekends. Mostly, I kept my computer there and did most of my work from there.
Did you ever finish your degree in mechanical engineering?
TS: Not quite. Epic was growing rapidly, and I was one credit short after four years. I didn't follow through and get the degree.
Did your college studies in mechanical engineering have any influence on your game engine design? Are the two related in any way?
TS: I've always enjoyed building things, from go-karts to programs. And I wanted to avoid undergraduate computer science studies -- the courses weren't challenging because I knew most of it from my programming work. Mechanical engineering seemed like a good alternative.
But it was somewhat disappointing, as it takes far more effort to build an interesting mechanical contraption than an equally interesting program. However, the math courses were immensely useful. There are some things you just don't know you need to know until you know them.
Where is the University of Maryland?
TS: College Park. It's close to Washington, D.C. My parents lived in Potomac, Maryland. It's a rural-looking area along the Potomac River.
So that's why you called your company "Potomac Computer Systems" first.
TS: Yeah, that's how I started out.
The name sounds almost scientific. Why did you change to Epic MegaGames?
TS: I started Potomac Computer Systems because I wanted to do computer consulting. I'd gone through this succession of jobs: I had this job at a hardware store that paid four dollars an hour -- basically minimum wage. That really sucked. It was really hard work, and I didn't make much money.
I started mowing lawns after that, and I found out that by getting a tractor and going around and being entrepreneurial, I could make about 20 dollars an hour mowing lawns. So I was thinking, "What can I do to make more than this?"
I was going to start a little computer consulting business where you create little custom databases or things for people -- but that took a lot of work, actually, and I didn't get anywhere with it. So I had all this business letterhead and business cards with "Potomac Computer Systems," and by the time I finished ZZT, I thought, "Oh, might as well just use this." I hadn't really thought of it as a game company until after releasing ZZT.
After ZZT came out, I was selling about three or four copies a day, which is a hundred dollars a day. It was income you could live on, actually. I decided I was going to try to do that full-time and make a living from it, so I started working on Jill of the Jungle, this 2D side-scrolling game.
That was early 1992, and at that point, Apogee had released a number of little 2D games, and id Software had released Commander Keen. It was clear that there was some real money to be made in that business. I was trying to grow PCS into a real company, so at that point I realized that we needed a serious name, so I came up with "Epic MegaGames" -- kind of a scam to make it look like we were a big company.
Because "Epic" sounds big, is that what it was?
TS: "Epic ... Mega ... Games" -- yeah. Of course, it was just one guy working from his parents' house.
Did you get the name from any specific place? Did you think of other possible names first and pick one from that?
TS: Yeah, I was thinking of a bunch of names. At that point I was kinda fixated on competing with Apogee software, which later became 3D Realms. They were, by far, the number one shareware publisher at that point -- very similar to Epic in our business model.
I was trying to think of a name that would stand up well against that name. I was thinking, "Apogee... Perigee... Epic." There were a bunch of little ideas I came up with, but Epic seemed interesting for the time.
Of course, once the company became really successful after Unreal, I figured we didn't need to pretend, so we dropped the "Mega" part.
It's kinda like growing up a little bit, I guess. Your name seems more serious that way, but strangely enough, I still think of you as "Epic MegaGames."
TS: That's funny. The "Mega" didn't stand the test of time. Now it seems like a 1980s type of name. But "Epic" stands out well.
Yeah, "Epic" is a great name.
TS: Of course, now there's a resurgence in the use of the word "epic" associated with everything, and it's horribly overused, so that will probably seem a little dumb in a few years.
Does the name ZZT stand for anything?
TS: No. At that point, games were mainly distributed on bulletin board systems [BBSes] -- basically the precursor to the internet. I always wanted to run one myself, but I figured if I had done that, I probably wouldn't have had any time to develop games. So it was probably a good career move not to.
There was this scam: everybody who released shareware would rearrange their name so they would always be sorted to the top when people listed out the files available for download.
So at that top of all the file lists, there was this huge clutter of junk that you wanted to skip past. So I did the opposite and named ZZT so it would appear at the bottom of all the lists. So ZZT was just a scheme for that. It's also the cartoon sound effect.
In ZZT itself, there are a couple references to ZZT with a dot after each letter as if it were an acronym.
TS: No, it wasn't an abbreviation for anything. Some people were trying to reinvent what the name actually was. Somebody came up with "Zoo of Zero Tolerance" -- but no, it wasn't really an abbreviation. I'd actually thought of the name "ZZT" years before I created that game -- it just seemed like the right name for it then.
How long did it take to program ZZT?
TS: ZZT wasn't a very big project. It was certainly under a thousand hours. I think I spent about nine months on it just because I was working on it part time between mowing lawns in the summer and going to class in the school year. It was a relatively simple project; I think it was 20,000 lines of Pascal code.
TS: Yeah, it was a good language. It was more rigorous than C++. When I moved from Pascal to C++ to create Jill of the Jungle, it was a real shock that people would actually be using a programming language that was so bad for large-scale development. To think that operating systems are built in that sort of language was really terrifying.
So you think Pascal is more ideal to work in than C?
TS: It forced the programmer to be more structured and to avoid low-level hacking as much. It's not the best way to get maximum performance, but I think people tend to write much cleaner code when working in a language like Pascal than in C++. It influences your whole way of thinking about systems when you're writing code in a really structured way like that.
How many copies of ZZT did you sell?
TS: Several thousand. I'd say four or five thousand by now. I was selling three to five a day for the first several years. My father still lives at the address where Potomac Computer Systems started up, so he still gets an order every few weeks.
Does he fill them for you?
TS: Yeah, he's retired now, so he doesn't have much to do. Every week, he'll just take a stack of a few orders, put disks in them, and mail them out. So you can still buy ZZT.
That's great. I should buy a copy from him. There's a character in ZZT that my friend loves called "Jazz Man," and he sings a little tune. Is there any story behind that?
TS: Yeah, I was in high school jazz band. I was learning jazz improv -- really badly.
I just drew a bunch of random stuff in ZZT. That was the great thing about the game: the graphics were so bad that you could do whatever you wanted, and people would be forgiving of it. There's just so much bizarre stuff in ZZT that you could never do in a graphical game that had to be realistic and immersive.
I liked that about it too -- there was the talking tree.
TS: [laughs] Yeah. One of the common themes you hear from artists is that to create great artwork, you have to highly constrain yourself: limit the tools you can use, limit the media you're working with, and then just do the best thing you can do there.
ZZT is really the ultimate expression of that -- it's such a weird, constrained environment that there's a certain set of things you can do, so it's really flexible and interesting. Whereas now, you can go license a game engine like Unreal. You can build absolutely anything, so it's much, much harder to create something that's cohesive.
Distracted by Network Protocols
I ran a BBS for about five or six years, from 1992 to 1998...
TS: That was an interesting time, because '92 was before the internet had come along, so at that point there were a bunch of efforts to create some graphical protocol for communications so you could dial up into a BBS graphically.
Like RIP graphics? Stuff like that?
TS: Yeah, there was that. There were a bunch of Apple-based efforts, a bunch of IBM-based efforts, and that really seemed like a fertile area. And, at the time, if you asked me what I was going to do when I became a programmer full time in 1990 or 1989, I saw that as the key problem to solve.
I saw a hundreds-of-millions type of opportunity in that, if you could be the one to define the standard graphics protocol for communicating with stuff, then you could dominate.
I spent quite a lot of time working on communication programs before I wrote games. It's funny, because if I had pursued that, I would have gone the obvious route of just trying to create a graphical protocol for modems and missed the whole point of the internet, which is quite a lot more than that, right?
You dial up into this system, but then you can communicate with all these different computers, and they're all connected through fast back end server connections throughout the world: anybody can message anybody else, and so on.
That was an extremely interesting problem at the time. I came pretty close to starting a business and pursuing that very seriously.
I thought the same thing -- in fact, a lot of people were trying to make some sort of web-based BBS back then, but obviously it didn't matter, because other ways of communicating on the internet took over from the BBS model.
TS: When I saw the web for the first time, in 1994 or so, that was really the most important business realization I'd had in my life, 'cause I'd spent thousands of hours working on communication programs, and graphical protocols, and things like that.
I'd been fixated on the problem -- which did turn out to be the central problem of that decade -- and completely missed the point of the thing, which was that you're not just trying to create a graphical protocol, but you needed to create a system that connected all the different machines together and then communicated asynchronously, right?
The big thing about the web is that you download this page and you're locally navigating through it -- you know, scrolling up and down, and selecting text -- as opposed to it being like a terminal, where you're sending mouse input and receiving draw commands back.
I remember using the graphical web for the first time and thinking, "Can people watch me doing this?" I could watch my users type out stuff on a BBS, so I thought that maybe someone could watch me navigate in my browser real-time.
TS: After that realization about the web, I felt really idiotic. It forced me to be in the mindset of "Everything I do from now on needs to be thought through carefully." With every major technical problem, I didn't just look at "What is the problem I'm trying to solve?", but I took a much bigger perspective: "How can we really change the game and win this?"
When it came to developing Unreal -- I think we started that in 1994 -- James Schmalz was writing a solo assembly language 3D game with a dragon flying over a terrain, kind of a Magic Carpet knock-off. And I was tasked with writing the editor for it.
But I really thought that through in a huge amount of depth in advance -- you know, looking at what Quake did and Doom did: they had this little crappy editor with a very advanced game engine behind it. Completely separate programs.
I thought it through in a whole lot of detail, and I thought that content development was really the essential ingredient in all of that. It was important to spend even more effort on the editor and tools than the actual game itself, just to empower the artists to make a great game.
So we came up with this editor-centric approach to game development, where you had this integrated editor that used the game engine for real-time display of everything. Real-time editing of everything, and all of that. And that came from really methodically thinking through the problem of "What do you really do, and how do I not miss the point in this revolution?"
ZZT was like that too, right? It was an editor and an engine. Users could create their own content, which was my favorite part about the whole thing.
TS: I really stumbled on that idea, rather than having it in advance. It just evolved from creating this editor that turned into a game editor that turned into a game.
And throughout the whole thing, I did recognize the importance of development tools, but I really never had a conception of what the game was going to be until it approached completion, whereas with Unreal -- really, ZZT was the road map of what the thing would look like.
It's a structure that we've been copying and pasting into ever-more-advanced game engines ever since: you have this editor, you have this game runtime, they use the same display environment, same programming language.
You have a scripting language for defining game events. There's really a huge amount of similarity between ZZT and Unreal, if you look at it. Unreal is a hundred or two-hundred times more complicated with more code, but it's still very similar in structure.
So you definitely credit ZZT as the base of your Unreal Engine ideas. If you hadn't done ZZT, you probably wouldn't have thought of Unreal that way, right?
TS: Yeah. Otherwise, we could have focused on making just a game, and the editor would have sucked. We would have built everything in 3D Studio Max. We would have missed out on many of the most interesting ideas behind it. And that would have seriously been detrimental with the mod community.
Tell me about Super ZZT. Were there any improvements in the engine that were substantial over ZZT?
TS: Super ZZT was the same basic engine, but I extended it to scroll, so now you had these boards that were -- I don't remember the size -- several thousand by several thousand, so you could go for several boards at a time just scrolling smoothly through the environment.
I thought that was a big improvement. It was kind of the ideal I was heading for. I really love the Ultima style of game where you had this expansive, seemingly-limitless landscape that you can go through.
But I never really got to that point with Super ZZT. I had this idea from the very beginning that it was going to be a streaming game world, where you could have unlimited board sizes -- you know, millions by millions if wanted -- and it would just load parts of it on demand as you go through. But I was constrained for time. I wanted to ship something, and be able to release a lot of games, so I didn't put the effort into it.
The other thing I would have really loved