Archive for March, 2007

Who is my customer?

There are actually two answers to that question.  The first and most obvious is the end user – the person who actually buys the game.  But, the right answer for me, a game programmer, is the artists and designers who are going to take what I build and use it to make an actual game. It is by paying attention to those people that I can have the biggest impact on the game.

So why aren’t the end users my customers? Well they are.  I’m responsible for making sure the game runs well on their computers, doesn’t crash, and faithfully implements the game design.  One thing that I probably can’t help with is making the game fun. I usually don’t design the UI, rarely design the game systems, and never tune a damned thing. Making the game pretty isn’t my job either.  The art team produces all the visuals, and if something is ugly it is far more likely to be their problem than mine. Performance is a duty I own jointly with the other departments – artists and designers are often under strict constraints determined by how many polygons, pixels, particles, or AIs I’ve managed to coax out of the system.

The group of people that are, by far, the most important customers for me are the designers and artists.  These people take the inert lump of code I’ve created and make a game with it. My job is to provide them with the tools they. Those tools vary depending on the customer, but in general they spend as much or more time using my tools as I do building them. I pay a lot of attention to compile and link times to keep my code-compile-debug loop as short as possible and I also need to pay close attention to the iteration time of designers and artists. This is one of the biggest things I can do to increase the productivity of the other departments.

I use data-driven design to put as much of the game as possible into data files and out of the code. I need to make every single tuning value something that can be modified without a code change, and if possible without rebooting the game. This has the advantage of greatly reducing the amount of up-front work a designer has to do – they don’t need to know what missions the game will have or what recipes the economy will contain, just how a mission interacts with other game systems, or how a recipe uses ingredients and produces products. Using this information, I can build the system and leave all the what for later. Knowing designers are going to change their minds about how things work, it is my responsibility to build things to be as adaptable to change as possible.  It is also my responsibility to make creating the what as easy as possible, which usually means developing some sort of editor for all the data files the game will read.

While data-driven design for game systems is relatively new phenomenon, game art has been data-driven since programmer art was banished from professional game development. It is my responsibility to take the output of art packages and get it to display in the game in real-time. To help with art iteration time, I need to get the art to display as final game visuals as early in the pipeline as possible.  An important part of serving the artists is to work with the art director to determine what graphical features the game engine actually needs, and implement those as early in development as possible.

I need to treat these internal customers as I would an external customer. They need stable code from me on a regular basis.  Their tools need to run and boot quickly. Warning dialogs and reasonable UI choices must save them from common human error. They must be able to see the output of their work without any involvement from me because they are always going to outnumber me. The list of features I implement needs to be driven by their needs, not by whatever new technology I thought would be cool, or whatever is easiest for me to implement.  I need to work with them to understand their needs instead of building systems for myself imagining that they are just like me. Under no circumstances should they have to throw away their work on my account – I need to make data files backward compatible or write further tools to convert them to the new formats.

If I can manage to do all of these things, the team will be very productive and quite happy.  Artists and designers joining the team from other companies will marvel at the way things work on my team. When the game finally ships I will have done everything I can do to make it the best game it can be, and will deserve a big part of the credit for the game’s success. After all, a stack of design documents and XML files isn’t a game any more than a collection of code is.  And a bunch of Maya files with no runtime engine is called a “movie”.  I may not make the game, but without me the game could not exist.

Sick and wrong

This is really, really sad.  I’ve never met Kathy, but I do learn a lot from her blog.  Hopefully the police will catch the assholes, though my hopes aren’t high.  *sigh*  People suck.

Kongregate adding achievements and micro-transactions

In a Q&A on Gamasutra, Jim Greer of Kongregate talks about a couple new features they’re adding to the site: Xbox live style achievements, and micro-transactions.

They are surely getting a lot of good will with their licensing terms:

Basically when you upload a game you’re giving us non-exclusive, revokable license to host the game, and to put our community features around it. That’s it – you can do anything else you want to with the game, and you can take it down at any time.

But any game that integrates micro-transactions is going to end up tied to Kongregate whether their agreement is non-exclusive or not. That’s probably something they are counting on.

BTW, Fancy Pants Adventure is awesome.

XNA interview on Gamasutra

Microsoft is being coy about their plans for XNA, but they do seem to be planning to put a lot of effort into cross-platform development on PC and Xbox 360 via XNA Studio Express.

We just announced this week that we’ve exceeded six million members for the Xbox Live network. Games for Windows Live is now taking that service over to the Windows platform, where we’ve got more than two million gamers. If you combine those two platforms, that ability to use that as a backbone — as an infrastructure — to deploy community-created games — that’s what we’re excited about. Enabling that “YouTube for gamers” model is completely based on an integrated experience and is possible for all commercial games and community games.

The whole interview is here.

Non-game innovation is hard too

Scott Berkun has a nice post up about why research labs fail at high tech companies. He has written a book called The Myths of Innovation that comes out next month.