Code Stories: Patrick Wyatt, Game Programmer and Producer of Warcraft
In his two decades in the gaming industry, Patrick Wyatt has had a hand in a long list of games, from The Lost Vikings to Starcraft to Tera. As producer and lead programmer of Warcraft, he helped define real-time strategy, and in 2000 he co-founded ArenaNet, the company behind Guild Wars. Recently, he's written a series of in-depth game industry retrospectives on his blog, Code of Honor, giving readers an inside look at the early days of Blizzard.
Pat was kind enough to help us inaugurate Code Stories, a new series of conversations at DZone. We'll chat with coders from all walks of life about how they got started, where they are now, and the points where programming meets the personal.
Thanks for talking with us. How'd you first get into coding?
In eighth grade, my high school got three Commodore Pet computers with 8K of memory and an audio-cassette tape drive for data storage. I heard about them a couple weeks after the school received the computers, and students got to use them not in a classroom setting but at lunch-time and break time. My friends told me about them and I was like, "Oh! I want to work on games -- I've got to check these out. I was twelve, then, and every single dime I made as a newspaper boy I spent in the arcade. I was interested in pretty much anything computer-related.
So you were interested in making games right from go?
That's right. In fact, the first couple of programs I remember writing were both games.
What language did you use for those?
The only language they taught us in a classroom setting was Basic, so that's what I used. And I was pretty horrible at it. It took a long time to actually write programs. People sort of forget, now that we have the Internet, that before we had to puzzle things out the hard way. So we would get these books mailed out once a month from goodness knows where with programs written out in Basic, and sort of like pair programming, you'd have someone read the book and another person type it in and sometimes even a third person looking over your shoulder to make sure there were no typos. We'd type in these long, long, long programs that would never, ever work, so we'd just have to make our own programs. We'd look at what they were doing in these examples and work from there. Of course, these games we'd build in Basic were never as fast as the games that the school purchased, so it was kind of frustrating initially.
So you were basically self-taught but supported by these resources in the classroom?
Right. And you know, the biggest challenge was that our teacher was a PE teacher turned computer teacher, and we pretty quickly knew more than he did about programming, so we didn't have anyone to go to but one another if we had questions. Those books were expensive, and you'd have to go to a big city to get them. We lived in a podunk town, so we just had to muddle through.
In your first article on the making of Warcraft, you mentioned that you used CAD to design wine cellars for your dad's business. How'd you start using software to help out your dad?
I started working with him when I was about ten, doing roofing. We pulled all the shingles off a roof in Stanford in 110 degrees weather, and that was my indoctrination into working for my dad. He later started a business building wine cellars, and I'd saw wood for him -- I think I was probably eighteen, then. Eventually he let me do some office-related stuff, grunt-work like licking stamps. He had a Mac+ computer that he purchased to do drawings. Prior to that he'd done all his drawings for client bids with paper and drafting tools -- he was a draftsman back in England -- he'd been professionally trained. It would take hours and hours and hours. Then he saw someone using a Macintosh and said, "Wait, we can do this much faster."
So I helped him with that and started doing drawings as well, and we used to crank out those same kinds of drawings in just fifteen minutes. And so obviously if you can put out ten times the number of bids in the same period of time then you can generate a lot more business, because you're not constrained by the number of bids you can get out to clients. So his close rate might not even change, but if he could get out ten times as many bids, then theoretically he could get ten times as much work. And that's in fact what happened.
I was intrigued to learn from the same article that one of Blizzard's former names, "Chaos Studios," derived from its early development procedure:
Development of the game began without any serious effort to plan the game design, evaluate the technical requirements, build the schedule, or budget for the required staff. Not even on a napkin. Back at Blizzard we called this the “business plan du jour,” which was or standard operating methodology.
Do you think a startup could succeed with that kind of approach in today's game industry?
Well, I think there are more formal ways of going about game development that work better. I still think that it's a good idea to find a passion to chase and to single-mindedly pursue it. It's actually possible to be a little bit more organized, though. A lot of the time when you're developing, particularly in the games industry, you don't really know what fun is going to be like, so you can have a design document as thick as the phone-book but it isn't necessarily going to be fun game. In fact, the implementation of the design document could be so rigid that no one really enjoys the game. So the biggest challenge is figuring out that fun factor. A lot of the process has to be exploratory in nature, figuring out, "Oh, this is kinda fun, let's do more of this. That's even more fun. And this over here definitely isn't fun." So it's important to experiment through the lifecycle.
A really good example of the wrong approach is the development of a game called Tabula Rasa. They used an old-style development methodology of building all the separate sub-systems, and then toward the end of the cycle of development they glued all those various pieces together. So a few months before beta, they're like, "Okay, it's all compiling, now we can launch the game. Let's get it into beta as soon as possible." The problem was, it wasn't ready -- it needed a few more years of development to figure out what was fun and what wasn't. If it had had that time, I think it could've been a really good game. But it went into beta, and it wasn't very much fun. They antagonized all their beta users, lost their community, and no one wanted to pay for the game after its release. Unlike, for example, Guild Wars, where we got the game up and running in about a year of development, starting from scratch -- built the graphics engine, the network back-end, etc. -- and then iterated it publicly for about four years, and those experiments ultimately told us what was fun, what was cool, what was a failed experiment. So those two games had similar budgets, similar time-frames, but vastly different results.
How has your physical workspace changed over time?
Desktop computers keep getting smaller and faster, but for the most part, the environment hasn't changed. I was using a second monitor on Warcraft I to run the debugger on a separate screen in 1993. There were times when I'd have as many as six computers at my desk when I was working on Battle.net. I think the biggest change of late is that I use a standing desk rather than a sitting desk. It's painful at first, but after a while you notice you have a lot more energy.
What games have you been playing recently?
With four kids, I don't get a lot of play-time, so I gravitate toward games where I can get in quickly, have fun, and get out. League of Legends is one I play now because it’s a finite time-commitment to play a game or two. I do most of my gaming on the PC, but I play a lot of little games on my iPhone, like most recently a tower defense game called Kingdom Rush. One of the greatest games ever is called Tiny Wings on iPhone -- it's 99 cents and everyone should check it out. It's a solo developer effort, so one guy programmed it and did all the art and everything, as far as I know. Lots of games have way more features than Tiny Wings, which is deceptively simple game, but its got this thing called flow, where as you're playing, you forget the interface, forget everything except the game itself. In Tiny Wings, there's this incredible sense when you're doing well where you just want to keep playing and playing and playing. And it goes from highs to lows quickly. "I'm doing awesome! Oh wait, I'm doing terribly! Oh, back to awesome!" It's very joyful.
Another recent game that does the same thing for me is Journey on PS3, which also has a great sense of flow -- it's just a wonderful gaming experience.
And I've become a bit of a Day-Z addict. If you've seen 28 Days Later -- it's like you're running around in that world of fast-moving and pissed-off zombies. You start out with nothing and have to find everything you need to survive -- it's terrifying, which makes for a compelling play experience.
Read any good books lately?
There's a series I've read several times, and I'm in the process of rereading it now…I've bought the whole thing four times now, for various friends. It's a ten-book series but the place where I recommend starting is book 3, The Warrior's Apprentice, and it's by Lois McMaster Bujold -- she's a great writer. Some writers are good at plot, or theme, or dialogue, but she's good at all of them. In fact, she's won as many Hugo awards as Robert Heinlein, so it's kind of surprising that she's not more well-known.
Another local favorite is Neal Stephenson who just came out with REAMDE, which I think a lot of people in the game industry would enjoy. It's got stuff about gold farming, terrorism, hacking, all sorts of fun stuff.
Have you tried to point your kids toward any classic games?
You know, there are so many good modern games, and there are so many mistakes that we made in the early days: too much user interface and too much text, so I steer them towards new releases. My kids are little, so I've purchased games that don't require much reading. One great series of games is Travellers' Tales Lego series. We own every one of them, and the kids eat them up -- they're very forgiving games in terms of expectations of player skill -- a three year old can play them.
If a kid asks you how to learn to code, what would you tell them?
The ideal thing to do is pick a really small-scale project and try to figure out how you decompose the elements of the project. So if someone asks how to make a roleplaying game, I'm going to say, "Well, that's a pretty big project. How can you break that down? Let's have something move around on the screen when we press keys." In the old days that was pretty tough, but these days a lot of programming environments make that a relatively simple process. You get them doing something fun and iterative -- once you get a character moving left and right, let's get them moving up and down and see what the differences are.
Kids start to understand what's going on there using the basics, and then you can gradually expand their awareness to better software engineering principles. I think one of the biggest mistakes people make in teaching kids to code (and I'm still learning this process myself) is jumping into object orientation early in the process. It's better to say, "Okay, here's a function," and cover the basics. Here's addition. Here's subtraction. That's better than saying, "Hide complexity behind these objects." Why do you need to hide it? Beginners won’t understand the hiding part. Making everything work by brute force coding is the best way to do it initially; then make changes later to reduce the pain.
If someone says they want to make games, what would you tell them?
A few years ago, maybe in 1998, the president of Blizzard said the era of the independent game studio was dead. I think he was trying to convince employees not to leave to start their own company, but part of it was the money required. There was extensive consolidation during that era of the game industry -- there used to be a lot of game publishers, but so many of them had been acquired or had died out because the business required so much capital.
But there has been a renaissance in the game industry in the last ten years -- Facebook games, web-based games, mobile games, tablet games, Triple-AAA games…publisher funding, venture funding, crowdfunding, Kickstarter funding, and of course bootstrapping, where you just take money out of your own pocket and go for it. It's fascinating. There's a huge opportunity for people who want to make games to actually be successful doing it. And I'd really encourage anyone who thinks it might be their passion to give it a try. I've had a lot of fun doing it.