A few days ago, I was talking about the disappointments that make my job such a character building experience. This is one example that I’ve always carried with me.

Back in the day, when I was working for Microprose, I was in charge of the User Interface for a game called Gunship. I was working on a Battle Builder, which was an automated mechanism for building a dynamic level. Simply put, the player would point to a location on the map, set a bunch of settings for the level (“I want to be British, fighting the Russians, in this weather, at this time of day, with this military strength . . .”), then hit “Go”, and the entire level would be created for them.

So, one day, the lead designer walks into my office. He’s a big guy, a retired navy lieutenant, I think. He drops a thick three-ring binder on my desk with an audible thunk. The three-ring binder was three inches thick, and full. “This pamphlet,” he actually called it a pamphlet, “was prepared by our military. It is a breakdown of the ordinance practices of every nation we will be dealing with. It tells how the different nations will set up their tanks, vehicles, infantry, whatever, for every conceivable situation. I want every piece of information in this pamphlet,” He tapped the binder, “in our game.”

I glibly replied, “Oh. . . . uh . . . yeah. Okay.”

Now, I should explain something about a relationship that sometimes exists between programmers and designers. This relationship is not always there, but it is more prevalent than you’d expect. A programmer will expect that a designer doesn’t really NEED everything that he’s asking for, so the programmer will give the designer about 80% of everything that they ask for. The designer, knowing that they are going to be second guessed, asks for about 120% of what he expects to receive. In this way, they work out their differences in a fairly passive-aggressive way.

At the time that this game was being written, I did not know about this relationship. So, when the designer asked me to put every piece of information into the game, I did exactly that.

It took about a month of my time, but I managed to make our game take into account every single piece of information that the military would use. When deciding where to place units, our system would take into account weather considerations, each side would use the topology to try to get an ambush position, they both would want their backs to the sun, etc. The ordinance placement was exactly the way a government would place them, correct for the given government. And, here’s the kicker, because it was dynamically created, it was never the same setup twice. If you gave all the same data to the system, the pieces would never be in quite the same locations, so there was no way of cheating by knowing the map beforehand.

It was a thing of beauty. I spent about an hour, just creating levels, seeing how accurate they were, and then destroying them. It was the joy and satisfaction in the knowledge of a long, hard job, well done.
I remember the day that I took that dogeared three-ring binder back to the designer and dropped it on his desk. I saw tears in his eyes as he said, “Really? You managed to get the whole thing in there?”

A few days later, I was sitting in the Lead Programmer’s office when the head QA guy came in. He said, “So, this battle builder thing. It’s random, right?”

I said, “Well, it’s not totally random. It’s based on a lot of complex rules, but I do use a lot of random numbers in the calculations so that, yeah, it’s never the same twice.”

The QA guy said, “Yeah. That’s the problem. We can’t test that.”

There was a long pause as I blinked at the QA guy, and the lead programmer put his head on his desk. I frowned at the QA guy, “Wait, what do you mean?”

“Well, there’s no way for us to recreate a bug if we find one. I mean, if we determine that a bug exists, we can’t do the same thing again to make it happen, and prove that the bug exists.”

The lead’s shoulders were shaking, though with laughter or sobs, I couldn’t be sure. He raised his head and said, “Brand, he’s right. QA won’t sign off on the game as is. We need to take the Battle Builder out.”

“But I put a month’s work into that! Are you telling me that there’s nothing we can do about it?”

And that’s how I lost a month’s work to a lack of communication with QA. I took out the battle builder, and replaced it with a system that allowed players to drag-and-drop units onto the map, and build their own ordinance setup. It was a pale shadow of the previous feature, but it was enough to ship.

I consider that feature one of the biggest character-building experiences of my career. Just knowing that I could cut my work out of the game, square my shoulders, brush myself off and say, “Okay, what’s next.”
 
   

 


 
 
creativelycrazy on
Re: Building character with Gunship
wow, that would have been one heck of a game. i'm talking here assuming such a thing hasn't been brought out since, i honestly don't know.
ironic, u programmed the perfect program - even errors cannot be caught   

SEV
http://blog.severeanomaly.org

jtanner on
Re: Building character with Gunship
Hi, and welcome to tech talk.

So, why couldn't you have seeded the random numbers with a known value so that the testers could have stored the seed value with any bug report?

gamecoder on
Re: Building character with Gunship
Believe me, I suggested several variations on that theme.

"I'll build a version that doesn't use random numbers, just for QA."
"Sorry, Brand, but they only want to test what you're actually going to ship."

"Well, I'll put in a system to record all the values it uses while building, so that we can replay any bugs."
"Yeah, but they have to get a bug to happen a certain number of times before they can say that it's really a bug. That won't work if they're just replaying previous calculations."

Frankly, it was badly handled. I mean, we weren't the first game to have dynamic content. It's just one of those things that QA decided they weren't going to allow on this game.

jtanner on
Re: Building character with Gunship
ARGH!!!

"Yeah, but they have to get a bug to happen a certain number of times before they can say that it's really a bug. That won't work if they're just replaying previous calculations."

So, let me get this strait.  QA complained that since the mission generator wasn't deterministic, they couldn't repeat any seen bug; however, once the generator was deterministic, they complained that they would be seeing the exact same bug (which is the definition of repeatability).  Did I miss something?

Man, if you could just shrug that off, you're a better man than I.  The thing is, it's not the lost work that would have pissed me off the most.

First off, I have a serious problem with QA having that kind of pull over the design of a game.  Their place is to test what is given to them in accordance to what the development team needs, not to dictate what they will and won't test.  QA is not a part of the core development team, and only under extreme circumstances should they have any direct say in how a game is designed.

And second, what kind of lead programmer would allow one man-month of work to be wasted on a feature that he should have known, by his own admission, couldn't be shipped with the game (an assumption I don't agree with)?  Besides, being a lead, he should have had the experience to know that you can reasonably test randomly generated content, and he sure as hell should have stood up for one of his programmers when the QA lead started pushing his weight around.  And covering his head on his desk?  That sounds like a sign of a good leader.  I think I read that in Sun Tzu somewhere.

gamecoder on
Re: Building character with Gunship
Awwww. Don't say that. He was a really great guy. Problem is, he loved his job. And he worked hard to keep his job by any way possible.

Did I mention that the Studio Head had fired the previous QA manager, and hired her husband to fill the opening? So, yeah. QA had a lot of unrealistic pull with that company.

jtanner on
Re: Building character with Gunship
Yeah, right after I wrote that, I thought that I might have been a little hard on him.  After all, I don't know anything about him other than what you've written here.  I almost deleted that last paragraph, but I talked myself out of it for one reason.

You see, I have a real problem with leads who essentially become yes-men to anyone asking (or telling) them just about anything.  That seems to be par for the course at a lot of companies in this industry, and usually it's the guys busting their butts under the leads that suffer.  This situation here really struck me as an obvious example of this.

gamecoder on
Re: Building character with Gunship
This guy had been a lead programmer for Microprose all the way back to when they were making coin-op flight sims. He's was working on games before I was in school, and I hold him in high regard.

I wouldn't blame him for caving on this one, because I know how many things he had to fight just to get the game out the door. There was a lot of politics going on at Microprose (we nearly didn't ship the game, because he refused to list the studio head's cat in the credits), and I'm just glad I didn't have to be part of it very often.

And I wouldn't judge him based on the two lines I gave him in one blog post. The fact that he put his head down, laughing at the stupidity of it all is not an example of weakness, but rather his cynical mirth.

By the way, for anybody else reading this. Mr. Tanner is not a mean person. In real life, he's a friendly, amiable, cuddly bear. But give him a keyboard, and he becomes Che Guevara
jtanner on
Re: Building character with Gunship
Ah yes, cynical.  A personality trait I can relate to. 

You know, I still stand by my opinion that there are way too many leads in this industry who are more concerned with avoiding conflict rather than doing what's best for their team; however, upon further reflection, I don't think this guy is one of them.  The perfect one word rebuttal to everything I've written about him so far would be: politics.

And Brand's right, I'm not mean.  Insightful?  Perhaps.  Opinionated?  Definitely.  Cuddly bear?  Well, that's just disturbing.  Also, I don't think I had anything to do with the formation of the Republic of Cuba, but things are a little fuzzy up until I was about five or so, so maybe.


 
Login to replyToggle picture size
 

Latest Comment
Re: The GSU health center is useless. (health bitching) - Maybe your MD needs a reminder that more and more...

Read...


 
© 2005-2007 MindSay Interactive LLC
| Terms of Service
| Privacy Policy
My Account
Inbox
Account Settings
Lost Password?
Logout
Blog
Update Blog
Edit Old Entries
Pick a Theme
Customize Design
Modify Plugins
Community
Your Profile
Wiki Pages
MindSay Tags
Video & Photos
Geographic Directory
Inside MindSay
About MindSay
MindSay and RSS
Report Spam
Contact Us
Help