Zipper Interactive Web site:
David grew up in Moscow and then attended the University of Idaho, receiving a BS degree in Computer Science in 1999.
David's was introduced to computers at an early age. Here's what he had to say about how his interests in Computer Science developed. "My parents brought home a Texas Instruments computer when I was six, and set me up with a few simple 'games.' My real interest in computing started by creating those little games from the coding magazines my mom and dad would bring home. Over my elementary school, junior high, and high school I dabbled in coding, and played plenty of computer games. I did take what Moscow High School called an 'Extended Learning Internship.' It was a loosely directed study on a topic of my choice. I decide to create a bulletin board system (BBS). Using a couple pre-made systems I put together a file server, email services, and message boards which ran on my parents phone line at night. I'm sure my relatives were really tired of calling us after 9pm and having the computer answer. Anyway, the BBS was a neat pre-cursor to the internet. I learned a lot setting up my own simple web server to run over modem. I had plenty of college students logging on to send email, post messages, and exchange files. With my interest in games, I made sure my BBS had lots of games running on it, which always had lots of players!"
"The Computer Science Program did an exemplary job of preparing me for my career as a game programmer."
When asked to comment on his time at the University of Idaho, David had this to say, "The University of Idaho, and specifically the Computer Science Department and Honors Program did a great deal to help me realize my personal and professional goals. I felt that the Computer Science Program did an exemplary job of preparing me for my career as a game programmer. Between low level knowledge of operating systems, data structures, and higher level understanding of C++ programming, computers security, and networking, my time in the Computer Science Department has definitely served me well. This solid foundation of knowledge has allowed me to work in a job where I’ve done 3D graphics, worked on handling character motion, setup systems for audio, as well as programming for Artificial Intelligence. I’ve been well prepared to work in assembly code, or to code up high level systems."
"The Honors Program gave me the opportunity to add breadth to my education."
From David's comments it's pretty easy to see that he received a solid technical education. He also had some interesting things to say about how courses outside of his technical field have become valuable in his professional career. "My time with the University of Idaho Honors Program also gave me the opportunity to add breadth to my engineering education with plenty of other classes. My class on the history of South East Asia has come in handy when discussing game ideas around the office, my English classes gave me the skills to be a professional game reviewer for a time, and the variety of class work gave me enough knowledge to understand most non-programming concepts with a fairly short learning curve."
"One of the strengths of a University of Idaho’s education is how excited the instructors are about their course matter."
As David observes, it isn't just the courses that make for a great education. "In my opinion, one of the strengths of University of Idaho’s education is how excited the instructors are. Some of my teachers really showed me why they were excited and this made me want to better understand what about it was so interesting. To begin with I wasn't especially excited about chemistry, computer security, or the history of Southeast Asia. Even though these weren’t initially interesting topics to me, after I was in class for a little while I found myself looking forward to class where I would learn more about these new found interests. The instructors for my classes made them so engaging and showed me the passion they had." As it turned out, they were more than just of passing interest.
"My final individual project (a game) gave me something that REALLY helped me get my foot in the door at my dream job."
For quite some time David worked to turn his academic studies into his dream job. "My area of interest had always been game development. I did what I could by taking courses that would help me reach my goal. One of my senior projects was a tangible product that I made, was complete and visually appealing, and it really helped show that I could do what needed to be done. The project was a game and it took more time to develop than I could have imagined, but it showcased my abilities. Being able to apply my knowledge of DirectX and the basics of graphics coding really helped me show that I could do the work. In the end it gave me something that REALLY helped me get my foot in the door at my dream job." David's entre into the games industry actually began before he completed his degree. Having completed his senior projects ahead of schedule he secured a job at Blevins Enterprises, Inc. (BEI), a small local business that did modeling add-ons for movies, and contract work for game developers.
My job gives me an opportunity to learn as well as the chance to create a product I can be proud of."
In 2000, David joined Zipper Interactive as an AI programmer. David's primary job is to make sure the game's characters look as believable and act as intelligently as possible. He's also in charge of helping put together systems through which game designers create their levels, place characters, and script their behavior. "I’ve also found that as a game developer, the problems I'm asked to solve give me an opportunity to learn, as well as the chance to create a product I can be proud of and appreciate." During his time in the industry he's worked on Mechwarrior3, Crimson Skies, and had a significant role in development of the hit SOCOM: US Navy Seals series for PS2 and PSP.
Certainly no two days are ever exactly the same but a typical day might go something like this: "I meet in the morning with the other programmers to sync up on what everyone is working on, and chat about any problems our game is having. Next I see what the testers found the night before and work with them to decide how to get those issues fixed. After that's taken care of I'll usually start work on a coding task. For example, I might work on how to accomplish smoother path finding which is basically how to do a better job getting characters from point A to point B without extra turns or motion. Some days I work with the game designers. This involves using our tools to place enemies, setup levels, giving them hints on what our AI does well, how to place them to show off their strengths, tracking down odd behavior, and so on. Quite often I work with other programmers, designers, and artists to figure out problems we're seeing in the game. Most days I end up with a few little 'hallway conversations' about what we could do better in our game, what’s broken, what we've done in the past, how to solve this problem or that problem. It's fun working with people that really want to make something that’s more than a product. A good portion of what I do day in and day out is finding something that needs fixing, and finding out who I need to talk to about getting help to fix it. From time to time we just sit and chat about games. Just about everyone at a game company likes games!"
"Technical skills are a must, but creativity is certainly a plus."
In a large sense the skills that David needs to be successful as a game developer aren't all that different from those needed by someone working in almost any area of Computer Science. "To do my job, some technical skills are necessary. Solid C++ skills, 3D mathematics, and physics are all a must because we are trying to model the physical world. Creativity is certainly a plus. Being able to think of new ideas for our game that aren't necessarily technical achievements are quite important."
David had this to say about one other skill that's extremely important, "Working in a close knit development team that includes a mix of technical and non-technical people, it's important to be able to explain things in a simple understandable manner. Expounding on the merits of A* path finding or describing a complicated system for AI visibility won't do much to convince a game designer or programmer that these changes will make the game better. Being able to put things into simple terms, for example letting the game testers know that my latest changes are 'supposed' to have enemies search for sounds they hear, makes it easier for others to do their jobs. Communication skills are really important."
The views expressed on this page are those of the individual being profiled and do not necessarily represent the views or opinions of the University of Idaho or the employer. References to specific companies or organizations does not constitute endorsement of their products or services by the University of Idaho.
Copyright © 2008 University of Idaho Board of Regents