October 6th, 2006


on chainsaws and sledgehammers

I seem to have made a mistake.

No, don't worry, it's nothing lifeshattering. It's about the demo game that I'm working on.

Brief digression: One of the hardest parts of game developing is both finishing and polishing a game. I've been working on a game, on and off, since about the time I started at Google. It's nearing completion, and I'm going to finish this thing - including all the hard, annoying parts - just as a demonstration that I can. Most people, it turns out, can't - they will do the fun parts, but stop long before the game feels cohesive and professional. I'm hoping this will help out. (Plus, of course, I just want to finish it.)

There's a "key configure" part to the game that's been giving me absolute UI nightmares. Key configuration usually isn't a tough part of a game. Of course, most games aren't designed to have sixteen players on one giant screen, using game controllers that don't have known buttons or even known axes. This one, sadly, is. Each player could be using an entirely different input system, with different buttons and a different control method. I can't know which player is using which controller, so the only possible solution is to go through key configuration at the beginning of every game. Naturally, it has to be fast, easy, and simple . . . with sixteen players on one screen. I've been going through hell trying to make it work.

A while back I sat down and designed a system. It was far better than what I had previously. It would work out great. It would take tweaking, but it would let all the players configure their keys simultaneously, it would be clean and simple to maneuver through, and it turned out to be a dismal failure. It's too compact - far too compact. Compact to the point of incomprehensibility. If I make the font smaller it becomes unreadable, but if I don't I simply can't fit the information in the space available. People don't know what to do with it and people don't know how to work their way through it. I've tweaked that system in a hundred different ways but it's finally time to admit - it just plain doesn't work.

Now, though, I have a new idea. There's a major chunk of interface I've designed lately that I can co-opt for this purpose as well. It will make the overall game UI more consistent, it gives me a lot more screen real estate for controller settings, and it even allows people to buy things while others are setting up controls. It's a clear win - but means I have to rip apart code weeks were spent developing.

In the end, this is clearly the right choice. The existing code does not serve its purpose and has to be eliminated. It won't be a total loss. Much of the existing framework can be salvaged and re-used in the new system. But it's a significant setback, assuming that somehow I could have originally designed the new interface.

I couldn't have. I needed the experience, I needed the knowledge of how players wanted to configure their controls, and so a few bad designs were inevitable.

But it's still frustrating.