After tormenting you with an interview with Shawn’s cat, it’s only fair that we talk to the man himself. Today, we are going to know more about "teh Shawn" as he’s known to us now at the office. Shawn is the man responsible for quite a few of the nifty parts of the XNA Game Studio product in general. Hate it or love, Content pipeline was one of his first contributions, one of many many to come. The man needs little introduction, so … I give you, Shawn Hargreaves!
Who are you and what do you do at XNA GS team?
I’m a programmer on the XNA Framework team. Along with my colleagues Eli, Ito, and a couple of shady characters you haven’t yet got around to interviewing (hi Tom!), we are responsible for implementing the APIs for things like graphics, sound, and input: all the cool stuff you need to make your game.
In my spare time, I write some of the samples for the creators.xna.com site, and spend way too much time answering questions in the forums.
What did you work on before joining XNA GS team?
I worked for an independent developer called Climax in the UK, where I was lead programmer on the MotoGP series of bike racing games. I also worked on engines and tool chains (we wrote an entirely custom modeling package, which the artists used to construct the bike and track models) and did some prototyping for various original game ideas.
Before that I worked on the Extreme G games on the Nintendo 64, and back in college I started the open source Allegro game programming library. That was my first experience of building an API for a whole community of game developers, and I found it so rewarding, that was actually one of the main things that made me want to work on the XNA Framework.
How did you join the XNA GS team? Tell the story!
In between MotoGP and MotoGP 2, Climax made a special MotoGP demo version that shipped alongside the first release of Xbox Live. That was a crazy experience: we had very little time to put it together, and Live was totally new at the time, so we had to figure everything out as we went along. Microsoft gave us loads of help (they needed us to finish on time so they’d have at least one game ready on day one to demo what Live was capable of!) and I got to know some of the Xbox guys pretty well. I thought
they were cool people, and Microsoft seemed like it would be a good place to work.
I later met Chris Satchell (now the head of the whole XNA organization) when he worked for Microsoft Game Studios and we were pitching a game idea to them.
A couple of years later I was looking for a new job, so I got in touch with Chris to ask if there was anything interesting going on in the Xbox group. XNA was only a vague glimmering of an idea back then, but it was interesting enough to get my attention, and has been steadily getting more interesting ever since.
At first our mission was pretty much just “figure out something cool that will help game developers, then go do it”. Things got a bit more solid when we decided this meant managed code on Xbox 360, and even more solid when we decided it meant indie and hobbyist developers, all leading up to the recent arrival of community games on Xbox Live. Exciting times!
What features did you work on for XNA GS 1.0 and 2.0?
For 1.0, I mostly worked with Eli on the Content Pipeline.
For 2.0, I mostly worked on the networking functionality.
I’ve dabbled and fixed bugs in many other areas: graphics, sound, input, security, performance optimizations.
I was thinking the other day that of all the lines of code I’ve written in my lifetime, the default shader used by SpriteBatch has probably been executed the most times. Although the blit() function from Allegro must come in a close second.
What were some of the problems faced when developing your feature?
Figuring out how to let unsigned games access the Live servers was a real challenge. The Live system has some interesting security features aimed at reducing cheating, which mostly center around signing game executables during the certification process, and then preventing anyone from modifying the game code. But if we want indie developers to use the Live service without having to go through certification, how can we make this possible without just bypassing or turning off all the security stuff? (we would never have been allowed to ship this feature if it hadn’t been properly secure). This was a fun, juicy technical problem, especially on Windows.
What’s your favorite part of XNA Game Studio, and why?
I love the C# language. You could argue this is not strictly part of XNA Game Studio, but hey, we are standing on the shoulders of giants, right?
I’ve used a lot of languages over the years, and C# is my favorite so far. It hits exactly the right balance between power and simplicity, elegance and practicality, performance and productivity.
What is your favorite Xbox 360 game?
My dirty little secret is that I’m not actually much of a gamer. I’m passionate about the technology that goes into making games, but for some reason just not that interested in playing the end result (this is one reason why working on framework technology suits me so well).
When I do play games, I usually spend most of my time examining the graphics and trying to figure out what shader techniques they are using!
Every now and then I do get stuck into something, usually because of quirky or unusual gameplay. I’m currently about halfway through Portal. Before that (by which I mean a year before that – I did say I’m not much of a gamer!) I really enjoyed Shuggy, and before that Elasto Mania.
And of course the original Monkey Island remains by far the greatest game ever created.
Share some tips and tricks for using XNA GS
Start simple. Write a game. Finish it. Give it to your friends. Rinse, lather, repeat.
This is the only way I know to become a great game programmer.
If you get bored or stuck along the way, check out some of the samples on creators.xna.com, or post on the forums. But don’t stop making those games!
Last words?
How’s this for a curious coincidence? I thought I’d look in a dictionary to see what the last word actually was. This turns out to be “zymurgy”, which means the science of fermentation. And as it happens, I have a batch of beer fermenting in my spare room even as we speak. If you haven’t tried making your own beer, you should give that a whirl sometime. It’s great fun: a proper mad scientist combination of cooking and chemistry, with alcohol thrown in for good measure.
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!
You gotta post the name of the brew ;-)
Hi Nazeeh,
Justregards to my previous question, my email is salderson(AT)radioworks.co.nz
As a fellow homebrewer, I have to ask what type of brew is being brewed (alliteration not intended, but fun none the less).
[...] Nazeeh Interview with Shawn Hargreaves [...]