One such example is Bryn Bennett, a talented programmer who has touched every part of the programming pipeline at companies like Irrational, Iron Lore, and Harmonix. He toured with his band,Bang Camaro, playing guitar while contributing to the Rock Band series. Bryn is currently working on his first game under the banner of his new indie company, Eerie Canal. There he gets to do what he loves most which is produce code for all aspects of their game, Dreadline.
Why are programmers integral for the success of a game?
The bottom line is games need to run and programmers are responsible for that. As the only programmer on our game it's interesting to wear ALL the hats. If I want to run around a game that looks pretty believable, I have to give the artists the tools to pull that off. If I want a cool looking physics simulation, I have to be able to pull that off. If I want it to run faster than four frames per second, I, along with the artists because a lot of it comes down to content, have to work together to pull that off.
If you're speaking more on the game side of things, designers could have all the best ideas in the world but unless they're also a programmer it really doesn't matter. It comes down to the programmers to actually make it work. That's a bit of an issue I have with the current state of the industry and that's with roles being so heavily defined. Are you an artist, designer, programmer? I think that leads to a lot of inefficiency.
If you don't sit in the same room as the different disciplines where you can bounce ideas off each other all day, then you end up with this weird problem where designers write documents all the time then heave it over this artificial wall to the programmers. They may have no idea what they want is nearly impossible to pull off or could be done in a slightly different way much quicker.
For example, in Rock Band I was working on the “Pro Guitar mode” where you could plug a real guitar into the console. We had the designers sitting in the same room with us and we were talking about things we could add to make the game more fun.
I was playing the Lynyrd Skynyrd song Free Bird, and in that song everything is just sliding on the neck of the guitar. I said, "It would be awesome if we put slides into the game." The designer turned to me and said, "Man, I've wanted to do that forever but I thought it would be too hard!" I said, "No, I could do that today!"
That's a small, but I think very telling, example of things that can get lost when you don't have everyone sitting in a room throwing ideas around and having fun. In some studios it's very structured where a designer will come up with a document, then their supervisor will sign off on it, then it will go to the programming team and broken into parts before it's implemented. I think games could be made much more quickly and fun if some of those strict roles could be broken down a bit.
It seems some companies are going in the direction of having different disciplines more freely interacting with one another, which is encouraging. It can be tough when teams start getting large, then you do need the layers of production to help keep everything organized.
I've had this theory for some time now: a few people who are really excited and talented at what they do can get just as much done as a team that's way larger that has to deal with all the inefficiencies that come with a larger team. It's kind of proving itself right now. We've been working on our game for a few months and when we show it off to people they're floored by what the two of us have been able to accomplish. It makes me feel pretty good.
What is the greatest challenge you have had to overcome, either with a personal or professional project?
The Lost by Irrational never came out. I was the lead programmer on that project and dealing with that was really tough. I threw everything I had at that project. I worked sixty to seventy hours per week on average during the four years of development. I really wanted to be able to pull it off, but for a lot of different reasons it didn't happen.
Looking back one of those reasons was I was a little too inexperienced. I was a lead programmer and it was my first time in the industry. There were a lot of things I just didn't know about yet. We didn't have a dedicated machine that was constantly running builds. We would do it by hand and burn DVDs and give them to people. When it was canceled it probably took a year before I was over that feeling of failure.
Then there's always just the normal end of the project crunches. Even if companies tell you it's not going to happen, it's going to happen. You always get through it and I tend to learn a lot during that time. Every time you ever take a shortcut where you make a hack to reach some milestone it always becomes the bug you're still fixing in the final two days. I've learned to never do that again and when to push back and make the argument the extra time needed to fix it right is worth the wait.
What did you do to cope with the canceling of your first project in the industry?
I moved onto another game and became the project manager on SWAT 4. At the time Ken Levine knew I was pretty burned out and moved me into a more managerial role. It didn't fit me. I'm just not made to manage a bunch of people; it's not a strength of mine. We eventually parted ways and I went to work for Iron Lore.
What work are you most proud of? Why?
I'm most proud of my ragdoll system in Titan Quest. It was ridiculous! It was as realistic as a game can be that's about satyrs and other mythological creatures in ancient Greece. Everything was very realistic until you shot a guy with an arrow and he flew into the air and rolled off a roof. There are tons of videos of people showing off all their crazy ragdoll deaths. I had a lot of fun with that. Every game has ragdoll physics now but it was really fun to push the envelope in that game.
I'm also very proud of how the “Pro Guitar mode” in Rock Band 3 turned out. You could plug a real guitar into your console and it would actually teach you how to play. We got a lot of good feedback on the feature. Being a guitar player really helped me out a lot for its development.
On a high level how did that system work? Was the game constantly checking to see if the notes being played on the guitar fell within a certain tolerance of acceptability in relation to the song it was teaching you?
It took a long time to work out. In a way your description is totally right. I learned just from watching the data coming out of the guitar from when I played that guitar players make a LOT of noise. I consider myself a semi-clean guitar player; I've played for a long time. If you want a machine to judge how you're playing and compare it to how the notes should be played exactly I don't know if a guitar player on the planet (except maybe the guitarist from Chic) would be able to pull it off. The algorithm took a long time with a lot of trial and error. In the end we got it feeling pretty good.
How do you see your profession evolving over the next few years?
I think if you're at a larger studio things are going to keep getting more and more focused. The quality of games is getting very high and people expect so much production value from them now. When I started you could be the graphics programmer or the gameplay programmer. Now you tend to be something far more defined than that. You may be the physics programmer, level editor tools programmer, or net code programmer. In some ways it's cool because you can figure out what you want to do and really try to master it.
Down the other track for smaller or indie studios I think programming feels like it did in the early to mid '90s where you have a ton of options in front of you and you can just go crazy. The indie community is coming out with a bunch of amazing games right now. Just seeing all these unique ideas people are coming up with is very inspiring. I can't really say programming is going to become one thing or the other, but I do see those two paths going off in separate directions.
By that you mean depending on where you work you may become the jack-of-all-trades or a hyper-focused programmer?
Yes. When you look at game jobs posted these days, they're looking for specialists. You don't see single posts asking for experience with animation, UI, art, and graphics. You'll see something as specific as "client network programmer." That's cool, but I think it's a little unfortunate. I've been lucky enough to have worked in every area of game programming. I don't think the future of game programming will be that way unless you're working on your own project or in a small studio environment.
Are there any techniques or best practices you have learned or developed that have served you well?
Lately I've gotten a lot more into test driven development. You write a ton of unit tests which can evaluate different small parts of your code. Basically you run that every time you compile and it tests to make sure whatever you just added didn't break anything.
I'm not as strict as a lot of programmers are about it. Some would argue that unless you have full code coverage of these unit tests then it's useless. I don't think anything is that black and white.
There have been a lot of times where I've added something that seemed pretty harmless and then the test went off and something seemingly unrelated blew up. I would have never known about it until weeks later. That's been great.
As for general best practices, if you know you're making a hack, it will eventually break. Re-factor all the time. As a programmer, don't write code you don't have to write. I definitely got to a point where I was over-engineering everything. Every object I wrote I tried to take everything that could ever happen into account when I probably only needed about 20% of that. Everything else was just adding the potential for more bugs and unnecessary complexity. Now I write only the code I need to and then add to it when I have to. If I find I'm not using something I've previously written I'll rip it out. That has made things far better.
John Carmack always releases his code a few years after the game has shipped. I remember the first time I saw the Quake II code. I was taken aback and found myself thinking, "This is all it is? John Carmack sucks! He isn't even thinking of the future!" It wasn't until a few years later that I realized everything he did was totally right.
How do the unit tests work exactly? Is it a set of automated processes that you have run automatically with each new build?
After I build in the compiler it just goes off. A lot of time when I program a new feature I also write some code that will test everything I assume about it. It will test all those assumptions and if one of them fails it lets me know.
As a simple example say I made a function that is supposed to rotate an object ninety degrees to the right. If it ended up actually rotating the object ninety degrees left the test will let me know and I can fix it. It ends up catching a ton of things.
At first you have to get over the pain of writing all this extra code. For each new feature you add you're also adding additional code to test it. So you're probably adding thirty to forty percent more code. For me it's been completely worth it.
What can you tell me about the first game being produced at Eerie Canal?
Tell me about your background.
|Ye Olde Commodore 64|
A real cool thing back then was when you turned your computer on it launched you right into this development environment. It put the idea in my head that I can make these things I also love. I went on from there making little games. I tried to remake Mario in BASIC and failed horribly but learned a lot along the way.
I went to college for a computer science degree but I really felt like I was going to be a professional musician. I finished the degree as quickly as I could so I could focus on music.
I've always loved video games and in the late '90s I decided I wanted to go for it. It never seemed attainable to me. To me the people who made video games were like the people who made Star Wars.
I'm from a small town in Buffalo, New York and people didn't tend to go make video games. I started learning as much as I could and put together a demo. I shopped it around to a number of different companies and I got a job at Irrational Games in Boston.
After Irrational I worked for Iron Lore as the lead programmer on a game called Titan Quest. I was there for about two years. At that time Maclaine and my band had started doing pretty well and it was becoming obvious we were going to be able to go on tour.
At the same time I was getting a little burned out. Every time you go through a crunch cycle you say to yourself, "I never want to do that again." After a few months of sleeping in my cube at Iron Lore it was much more appealing to me at the time to take on something new and be a musician for awhile.
I emailed a friend at Harmonix to see if they had any part time coding work I could do where I worked a couple hours a week and also tour with the band. Luckily Harmonix is awesome and they said yes. Basically I would tour for two to three months then come back and work on different aspects of Rock Band then I would leave again. They're a really great company to let me do that.
I imagine they appreciated having an active musician working on the Rock Band franchise.
Actually a lot of people at Harmonix are musicians. It's a really interesting place. It was very different from any other company I've worked for. When I started pulling away from the band I moved up to a lead programmer position at Harmonix for a little while. Then I decided I wanted to give doing things on my own a shot and now I'm here in my living room.
I started the company with my friend Steven Kimura. I've worked with him since late 1999. We worked together at Irrational. He worked on games like System Shock 2, so he was there even before I was. He was the lead artist on SWAT 4 and he also moved to Harmonix later so we've worked together for a long time. We were just talking about it one day and we decided we wanted to try to make something a little more creative that we had more control over. So we talked it over and took the leap.
What are your inspirations?
|Gorey's cheerful alphabet|
Then there's the real left brain programmer side of me that sits around and reads John Carmack's blog that inspires me to want to implement things like MegaTexturesin our game. It's definitely a little bit of both.
I'm also really inspired by games that are polished to the point you can see how much love was put into them. Playing through Limbo, everything feels perfect, whether it's the controls of the character, the physics, or the way the environment reacts to you. That game was polished to the highest degree. It may not be the most technically advanced game, but I find it really inspiring.
Knowing what you know now, what advice would you have given yourself when you were just starting out?
I would tell myself not to have moved into management as quickly. It probably happens in all industries. People who do well in their jobs tend to get pushed forward in the ranks. I think I would have done better earlier in my gaming career had I stayed in my position where I was writing code all the time, trying to push different graphics techniques, and working on gameplay instead of dealing with Microsoft Project and scheduling people. That took a lot of time away from what I'm definitely better at, which is coding and being creative more than trying to keep people on schedule.
I normally ask, "What is your current title, and if you were to describe what you do with your own self-title, what would it be?", but I imagine right now those are one in the same.
I don't know. I'm doing a little bit of everything right now. It's a ton of fun. I'm doing all the coding and nearly all the design for our game as well as working on our FX system. I've always been into low level technology as well as writing the higher level game code, so I've always had this code base of my own at home. There's probably things in our current game's technology that's been around since 2002 or 2003 though I've rewritten nearly all of it.
That factored into why I didn't go with engines like Unity or the UDK because I already had a lot working. I think there's something to be said when you have complete control over your technology. You can make things look however you want or handle things in ways that you'd have to fight against in other licensed engines. It also gives you the ability to roll very quickly because you know exactly how it all works.
There's something I just love about low level code. It can be very elegant, and it just kind of looks beautiful when you look at it. Whereas when you're writing AI code it tends to be a mess of, "do this unless this happens, unless something else might happen." It's just painful to look at. It's fun to write that code too, but it's never as cool as that perfect file system you wrote.
What motivated you to work in the game industry?
X-wing vs. Tie Fighter about eight hours a day back then. There was also the challenge where it always felt like to be a video game programmer you really had to have your stuff together. You had to be able to optimize, write physics code and rendering code. Just the challenge of that really pushed me to see if I could actually make a game.
I spent about a year working during the day as a programmer in a steel factory in Buffalo, then would come home at night and work on my game engine. It started out just to see if I could do it and then when I saw what I was putting together was looking good and competitive with things out there it finally gave me the confidence to really go for it. I wouldn't have done any of that if it hadn't been for playing so many hours of games growing up.
What sort of programming is needed in a steel mill?
Mostly DOS based database programming. We were coding in PASCAL at the time, it was so painful. I was the Y2K programmer just like in Office Space. We even had TPS reports. When I saw that movie I couldn't believe it, it really bummed me out actually. It's funny looking back on it though.
What are your favorite games, and why?
Starcraft, without a doubt. That's an example of a game that's as polished as it can be. The fact that they did it with three different races that had nothing to do with each other is amazing on a design front. There are not many games where I get so into it that I forget to breathe. The sad thing is I'm not even that good at it. I clawed my way up to silver in Starcraft 2, then didn't play for awhile, then got beaten back to bronze. I just couldn't keep up.
Unreal Tournament fan for awhile in the earlier years of PC shooters. I still can't get into console shooters. I love the mouse and keyboard controls too much. One of my favorite FPSs was Duke Nukem 3D. Although it wasn't very pretty for the time, the gameplay was amazing. Amazing to the point where I don't know if a shooter has equaled it since. It let you do crazy things like dropping your holo-Duke, leaving a pipe bomb in it, and waiting for an enemy to go in and get blown up. It was awesome. There are a lot of games that do things like that now but it was definitely the first.
I'm kind of a casual gamer too. I get really busy and tend to get drawn in by things like sports games where I can be in and out and where I don't have to worry about what I was questing for. I've been playing a lot of NBA Jam lately. It cracks me up when Larry Bird beats me up. I've played the Madden games and things like that. You can find so many design flaws with Madden. It's always fun to find the one play that's unstoppable but that makes it a little boring though.
Bastion which I think is an amazing game. I've played quite a bit of Torchlight. I keep going back to Limbo because it blows me away. They pulled it off so well. I play it when I need to be reminded how polished our game needs to be. Super Meat Boy has been a lot of fun; it's a good old fashioned challenging platformer.
It's so funny when you go back and play games like Earthworm Jim, those games were hard! I don't know how I feel about the modern trend of making games really easy. I realize there's a desire to pull in as big of a market as you can, but those old games had big markets and they were really challenging.
True, but it seems we are seeing a resurgence of games which are unabashedly difficult like Dark Souls or the announced "1999 mode" for the upcoming Bioshock: Infinite.
I've been meaning to check out Dark Souls. I hear as part of the beginning of the game they put you up against a boss that just outright kills you.
It certainly can! It's all part of teaching the player that death is a natural part of the game and is something they should get used to.
That's amazing. It really goes against what people are generally saying in the games industry about everything becoming dumbed down and more accessible. It's encouraging to hear!
I've also been playing a lot of Dungeon Defenders recently. That game is pretty awesome. Playing solo you're just sort of shooting as fast as you can but as a co-op game I've had a lot of fun with it.
Thank you for your time Bryn!
If you'd like to learn more about Bryn and Eerie Canal be sure to check out their site.