Team Interview – Tom Miller
This week I am very excited to bring you a really fun team interview! Tom Miller is one of those people that needs little introductions if you’ve been following the world of Managed Game Development at all. Remember all that stuff about Managed DirectX? That was Tom’s work, he brought that to reality. So I asked him to spare some of his time to answer my interview questions, and here’s what he had to say.
Who are you and what do you do at XNA Game Studio?
Well, I’m Tom Miller. What do I do here? I suppose you could say I type a lot mainly! I’ve worked on almost every area of the product at least briefly aside from the Visual Studio integration stuff (that stuff scares me a little). I’ve developed a good many of the features you as a user have probably dabbled with! I’ve written a couple of books, sometimes rant on my blog, listen to a lot of music, play a lot of games, and generally don’t have enough time to do all the things I want to do. I’m trying really hard not to recite Joe Walsh’s Ordinary Average Guy here. I also considered answering every question here with lyrics from random songs, but that would take entirely too long, and I’m feeling lazy today.
What did you work on before joining XNA Game Studio?
My tan? Seriously though, directly before coming here I worked on the DirectX team. I got hired on that team to write samples for “DirectX for Visual Basic” (dxvb), but shortly after that migrated to actually owning dxvb. Right after DirectX8.0 shipped I got wind of this new nifty thing called “C#” and had a prototype of “DirectX.NET” up and running and showing it off at GDC within a few weeks. After a couple major overhauls and a renaming of the project to “Managed DirectX” we shipped DirectX9.0 with the first managed support for DirectX. Before that I had a wide variety of jobs here working on Visual Basic 6, Office, and various internal projects. I’ve been in the “games” area for the last 9 years or so, and everything before that is a bit fuzzy.
How did you join the XNA Game Studio team? Tell the story!
There I was sitting in my office. The sun was shining outside. Birds were chirping. Harps and violins were playing soft music. I could be misremembering some of this though. I was approached by the development manager of the XNA Game Studio team with a proposition. They were wanting to create a managed framework for making games on Windows and Xbox 360 and they wanted to do it fast. Since I was really the only person in the company with a significant amount of experience in this area (I had already developed the entire Windows version of this framework, written a couple books on the subject, etc), they asked me to come help with this new effort. Anyone who’s seen the original Managed DirectX, and to be more specific, the “Whidbey Beta” of Managed DirectX that was never released will recognize a lot of features within XNA Game Studio. We took that experience and enhanced it, made it work on the Xbox 360, and now Zune as well.
What features did you work on for XNA Game Studio 1.0 and 2.0?
In 1.0 I worked almost exclusively on the “framework” (the portion of the product where the API’s you call talk to the hardware behind the scenes). I did the original implementation of the entire graphics area, audio, storage, input, and security. Hmm, actually, I guess that covers every area in our 1.0 release. Luckily we had people like Shawn, Eli and Ito to come help me fix all the bugs I introduced implementing those features. In 1.0 I also realized that it was entirely possible to go months without a day off and hardly realize the time had gone by because of how passionate you were about the product.
In 2.0 I didn’t have nearly as much to do though, so that was a relief! I focused mainly on what sound like minor graphics improvements, but were in reality a lot more work than they appeared. Things like fixing render targets to be more consistent, implementing the ability to use multiple render targets on Xbox 360, correctly handling predicated tiling with various render target combinations (I still have nightmares about render targets), and removing the need for the developer to worry about device resets and resolution changes (even though I still see people trying to handle this manually). I also dabbled in other areas as well, but those were my big tasks.
In 3.0, I barely worked on the framework at all though! I did stuff all over in other areas working on features I’m not even sure we have announced yet, but I’m sure you’ll think they’re awesome when you see them.
Stealing a portion of Shawn’s interview where he considers what portion of code he’s written, which has been executed the most times. While I probably couldn’t narrow it down, it is impossible to make an XNA Game Studio game without running at least one line of code I’ve written. I’d probably have to say the creation of the graphics device has probably been executed the most.
What’s your favorite part of XNA Game Studio, and why?
Seems like a kind of a trick question. Like asking a parent “Which kid do you love the most?” (the one who cleans up after themselves best), or “Does this make me look fat?” (if you have to ask, then yes). I could say Graphics, but then I’m pretty sure Audio would stop talking to me (they’re having a bit of a turf war) and we wouldn’t want that to happen now would we? I love all the features equally! Except render targets that is, I still have a love/hate relationship with them.
What is your favorite Xbox game? PC game?
PC game is easy being World of Warcraft. I’ve spent more time on that than any other game. Starcraft comes in a close second and Diablo 2 probably third. I notice a trend here! Xbox is a bit harder though. I’ve liked the games such as Guitar Hero and Rock Band. I liked all the Dance Dance Revolution games. I liked Condemned and Lost Oddysey. It’s hard to narrow down just a single game there that I would call my “favorite”. If you put a gun to my head, probably Portal. (Yes, I know that is on the PC as well, but I played it on Xbox)
Share some tips and tricks for using XNA Game Studio
Tips and tricks are hard for me actually. Despite writing so much code that is in the product, I rarely have the free time to actually *use* the product. Every time I think I’ll have time to sit down and right something using XNA Game Studio, some other feature comes up that needs implementing, or a bug that needs fixing, and I get side tracked again. So my tips and tricks would have to include actually making time to use the thing!
Before I joined the team though, I (like so many others) had the dream of being a game developer. While that dream no longer lurks within me, the thing I discovered while I had it was starting a game is way easier than finishing one. You start out with a grand idea and start writing code and it is going to be the greatest game ever, and then something happens. Maybe you don’t have any artistic talent and don’t know anyone who is an artist and your game looks “ugly” and it frustrates you. Maybe you’re stuck with a particularly hard development concept required for your game. Something happens that is an obstacle to you and finishing your game and the project slowly fades away before finally dying. Don’t let this be you. Your ideas are worth saving! We have a vibrant community that is growing. If you’re stuck, ask for help. Finishing a single game is more rewarding that starting a million different ones.
Last words?
Years ago when I started “DirectX.NET” one of my goals was to open up game development to the masses. I wanted to see games being written for home consoles, I wanted to see games being written for computers, I wanted to see games being written for everything by everyone. A lot of people told me I was crazy and it would never happen. The performance wasn’t good enough, no one would open up a console for anyone to write games for them, plenty of reasons why it couldn’t happen. Yet here we are, and it is happening. It’s been a long time coming, and I for one can’t wait to see where we go next (even if I do already have a pretty good idea).
Actually, that’s a pretty boring set of last words. How about something more exciting like dishabiliophobia.
Thanks for reading! I'd love to hear your thoughts, feel free to leave a comment below. Don't forget to subscribe to my RSS Feed!
:-) Cool interview
Motivating! Now I want to leave work early to go play with XNA.