Even art needs a vehicle...
Never mind what doubters or pundits might tell you. Video games are driven by art. At Bungie, we stretch the boundaries of our imaginations to create vivid worlds where you can fight for your lives. Yet, without the right necessary programming, that art would never reach you. That’s where Graphics Engineers come into play. They are some of the most crucial players on our team – and we need more of them
. What does it take to fill this role? Let’s ask one of them to find out.
Who are you, and what do you do at Bungie?
I’m Joe Venzon, a graphics engineer at Bungie. As a member of our graphics programming team, I work on designing and implementing the rendering techniques that turn cool source art into pixels on the screen. That’s a pretty broad work statement, which can mean anything from working out the math for physical phenomena we’re trying to approximate, to engineering a multi-threaded rendering pipeline, to using a bit of artistic sensibility to figure out how to meet artists’ feature requests. I enjoy the fact that one week I can get really nerdy and work on the nitty gritty details of engine programming, and the next week I might be engaging my creative side and working with artists to help bring their concepts to life.
We would like to know about the Engineer, as much as the Engineering. What are you bringing to life when you are outside the studio?
My number one interest recently has been my nine month old son. Being a dad changes your life like that. When I can find the time, I also play a lot of video games. Lately I’ve been into hardcore PC simulations, like DCS A-10C Warthog (an A-10 flight sim), Dangerous Waters (a submarine warfare sim), WRC (rally racing sim), Arma 2 (infantry sim), and of course Day Z (zombie survival sim). Sometimes on the bus to or from work I also fiddle with little game side projects. I have too many hobbies and not enough time: basketball, skiing, shooting, photography, working on cars, you name it.
Working at Bungie seems like a logical extension of most of those hobbies, although we don’t do a lot of skiing in the studio. Would you plot for us the career path that prepared you to join our team?
I worked at Flying Lab Software on the Pirates of the Burning Sea MMO, and before that I designed flight control system components for the Boeing 787. Working at Boeing was a good first job and I learned how to be an engineer there. It also gave me a broad survey of practical engineering and physics that I wouldn’t have gotten otherwise (anyone want to know how an electro-hydraulic servo-actuator works?). When I got an opportunity to get into the video games industry, I jumped. Working at Flying Lab was an interesting change because it was such a small company, and I pretty quickly had a ton of responsibilities, including being the only graphics programmer at the company. It was a fun time, and I worked with some great people, but when I saw Bungie was hiring, I made another leap.
Was that leap a long term goal? I mean to say, when you were just a wee lad, was making video games a component of your playground agenda?
I assumed I’d be designing boring consumer electronic devices or something; I knew I wanted to be an engineer, and I loved video games and did a lot of game programming side projects for fun, but I had no concept that I could end up doing that professionally! My first PC was an 8088, the precursor to the 286, with a 4-color video card and built-in BASIC interpreter. I also had a Nintendo, and I played both PC and console games. Once I got a 486 with a sweet 256-color video card (talk about graphics!), I became a huge fan of LucasArts adventure games like Indiana Jones and the Fate of Atlantis, which I can still enjoy today. On my 486, I wrote an early DirectX (back when it was 2D-only) clone of Escape Velocity, an old Mac-only top down space exploration and shooter game. In college, I took an open-source physics engine and made a 3D racing game out of it. That’s how I got my start writing 3D engines. I also started making a first-person 1600s naval combat game, and a Privateer-style space sim; those didn’t get finished, but they were a lot of fun to work on.
Oh, my wasted youth! It seems like you are self-taught in many ways. Did you enhance all of that personal exploration with any formal education?
I have a BS in Electrical Engineering from the University of Washington with a specialty in embedded systems and a minor in Mathematics. The embedded systems track gave me a lot of exposure to programming and especially low-level programming. I originally was going to do a Computer Science degree, but they had just switched the coursework over to Java when I started there (and they switched it back to C++ the year I left!) and I wanted to go a bit lower level than Java. I also did a semester at USC in their Computer Science Master’s Degree program, but haven’t had time to go back and finish it.
I bet you were quite the party animal. With all of that higher learning in hand, what was your grand strategy to put it to work as a Bungie Engineer?
When I saw Bungie’s job posting, my company was pivoting to do more casual games. I knew I wanted to continue to do 3D graphics, and Bungie’s job description made it clear they’d be right there at the bleeding edge, writing a new graphics engine for a cool new IP. How tempting! In my cover letter to Bungie, I showed off the work I had done at Flying Lab revamping the character lighting for the Pirates of the Burning Sea expansion. It involved spherical harmonics, and graphics programmers are suckers for spherical harmonics. I also showed off my side projects, and even pointed to a game I wrote for a 48-hour game competition called Ludum Dare. My entry was the first written entirely in Haskell, I believe.
Speaking of the bleeding edge, let’s relive the nightmare that we intend to be the Bungie job interview. Which cut was the deepest?
The math! I had taken a lot of math and physics classes in college, but it had been a while, and only the bits I had used recently were fresh in my mind. At one point, I had come up with a solution that involved some matrix multiplication, which I was pretty sure was correct, but the interviewer (Hao!) requested I multiply it all out symbolically to check my math. Half an hour later, the board was filled with writing, and that really ground me down. It was a very long interview in an uncomfortable chair.
Now that you have successfully made that leap, is a more comfortable chair your favorite perk? If not, reveal for our readers the best thing about working for Bungie…
Being able to work with other professionals that are at the top of their respective fields! I’m blown away by the consistently amazing people that work here. It’s actually a bit intimidating being around so many sharp engineers. There’s just no dead weight around here. And the artists we have are the kinds of people that can make amazing, gorgeous art and do it on a schedule.
If you would, break that schedule down to one 24-hour unit. What is one day like inside our studio?
I’m usually one of the first people in my row to get in to work in the morning, arriving at around 8:30. I’m lucky in that I don’t have a lot of meetings, so I can maximize my time working. Most of the time that means the usual “coding, compiling, testing” loop familiar to any programmer. Some days I get to make dumb programmer art to test out new features, that’s always fun.
Of all the things that we do to make that coding, compiling and testing worth your while, which one is the most worthy?
Free lunches with new employees! That’s a great way to meet people and spend some time interacting with co-workers without talking about work.
You are supposed to talk about work at those lunches, Joe. That’s the whole point. I am so telling on you. Once I get you into proper trouble, what is the one accomplishment about which you will boast to save your job?
Huh, how am I supposed to answer this without revealing too much about what we’re working on? Well, I’m pretty happy with how the atmosphere system turned out. It’s got a nice blend of a plausible physical basis, artist controllability, and speed. We looked at a ton of different papers and implementations, plucked the best ideas from all of them, and then turned it into something artists could control in a straightforward way. It’s super gratifying to then put that in the hands of a talented artist, and then watch him turn his renders into badass in-game content.
The approach to your work that you are describing sounds very investigative and improvisational. Can you apply that same aesthetic to keeping your skills on the forefront of evolution?
For graphics, I try to keep up with graphics papers and blogs. When I see something that seems cool, or have an idea, I’ll try and implement it in my free time to see how well it works. There are a lot of techniques that are presented as “real time” but wouldn’t work in a game for various reasons. To keep up my general programming skills, I like to work on small game projects as a way to learn new languages. I’m especially interested in applying functional programming to games.
You’ve set an example that many young geeks would no doubt love to follow. Let’s pretend that they are gathered into a classroom, and you are perched proudly at the lectern. What would be the meat of your lecture to them?
Make games. It doesn’t matter how simple or stupid they are. Pick a super simple idea or clone an existing game design; something that you know you can complete. Even if your main talent is as a programmer or designer or artist, you should learn enough to wear all the hats for your simple projects, and see if you can do them alone. This is the best way to learn about the game industry, and it will provide you with an impressive portfolio if you decide you want to make a career of it. Game competitions like Ludum Dare that provide a deadline and short timeframe are a great way to get you to learn how to reduce scope and complete a project, skills that are incredibly useful.
You have a lot of Engineering to get back to, so let’s wrap this up. Here is your final question: Experience, Work Ethic, or Talent? Rank them in order of importance to your role.
Talent, experience, work ethic. I put talent first because if you’re sharp, you’ll gain experience over time. I put work ethic last because, at least for graphics programming, just hammering away on code doesn’t always yield the best results. Stopping and thinking and playing games and watching movies can be pretty important; we’re not just banging out widgets here. That said, everyone who works at Bungie has a fantastic work ethic, because to get here, you must.
Readers, please join me in thanking Joe for taking a break from his most important work to describe it to us. If you are a Graphics Engineer, or know someone who packs the gear to serve as one, apply within
. There is more work to be done in realizing our next universe. In fact, we need developers on all fronts, and you can explore them all in the Breaking In