[gameprogrammer] Re: My game
- From: Josh Stewart <aek@xxxxxxxxx>
- To: gameprogrammer@xxxxxxxxxxxxx
- Date: Mon, 26 Sep 2005 17:55:20 +0800
Thanks for the reply :)
Kevin Jenkins wrote:
Bug tracking is done through an automated system. We get a bug, mark
it fixed, which sends it to the testers again or we can reassign it to
others. Communication through this system is very slow and very
inaccurate. The slowness comes from the delay caused by each link in
the communication chain. If a bug has to go through 5 people, each
person takes 3 days to get to the bug, then 2 days to work on and
reassign it that is 5 weeks just to process one bug.
At least you have a bug tracking system. We have email, and maybe a
spreadsheet somewhere on a network drive. Most bug tracking is formal
and requires 20 bits of paper and 40 signatures at each step, and
someone down the chain enters it into some ancient database. Thats what
you get when its a critical system, every bug fix has to be justified
and re-proven, regession tested and to insert that into a running
system, you need the engineering rigour behind changes to the
configuration (thats why bugs are cheaper when fixed earlier in
development)..
This can be used for good or evil. It's good because it makes a
person responsible for a bug. Some people will ignore bugs if you
just email it to them. But it's bad because it's very easy to pass
the buck. If you don't want to do a bug you can just mark it
'explain' or reassign it to another and know you won't see it again
for a week or more, if ever.
I wonder if something like collabnet could proved a suitable 3rd party
method for sharing a bug tracking database between testers at the
publisher and developers, that would speed this process up? (or do you
already have this sort of thing?) Then it would be straight from tester
to developer (with maybe someone in the middle on each side to sort
through the noise and collate results back and forward, if the project
was big enough and time was critical).
The hardest part of dealing with a large system is that nobody really
understands any of the code. There's too much of it, the things that
break tend to be things that nobody remembers. The company I'm at has
a turnover rate typical of most game companies. So it's usually the
case that no matter what code you are dealing with the author no
longer works there. The programmers are very self-reliant out of
necessity. The downside of this is that it takes 10X longer to do
anything. In my opinion if a company were just able to hold onto its
original programmers that company would be an order of magnitude more
productive.
Yes this is true at my work also, and holding onto the original talent
is important, however you cant guarantee anything and if someone knows
they are critical they can ask for unrealistic pay rises because they
know they are invaluable. And if the employeer got into that situation,
employee's should make the most of it :)
I think the answer to this is to get middle managers to discard their
rustic belief that resuing legacy company IP/software/tools from 7 years
ago, will save the project time and money. The following rant is
entitled "Reuse should have a 'used by' date"
As you said it takes ages to get anything done because you have to try
and understand what some guru was trying to do years ago.. sometimes
with no comments or documentation. Perhaps its a weird optimisation that
is totally irrelevant these days? Perhaps its a library that was written
to fill some need and your better off downloading a new library off the
net instead of digging up some ancient library thats buggy, poorly
documented, feature poor and difficult to integrate because of poor
design methadologies employed back when the code was written. You might
be tempted to write a new library. But if your trying to get a title
out, you dont have time to do it properly. If you do write your own,
your hack up version will plague future generations at the company,
continuing the cycle.
These days it can better to look around and evaluate 3rd party tools and
components, or if the company is big enough have separate teams working
on in-house components and tools exclusively. Then the game programmer
for a title becomes the integrator, taking all the best components they
can find/afford and making them work together.
The integrator should be able to pick the best tools they can, and not
be told by some manager they need to reuse some ancient component to
save $1000, but its up to the developer to make them understand this.
This can keep the work interesting because you can use new technologies
and design methadologies in areas your interested in (the game engine
framework, or key new features of the game, or gameplay machanics), and
farm out the rest of the work to 3rd party components.
Finding components that integrate well is another challenge, and you
also need talented people that really know there stuff to put it
together, nothing just plugs and plays together. If someone has written
a physics engine before, they are gonna be great at integrating another
one with the engine.
People might worry about their job, if its too easy to plug these bits
on. That is silly because people still need to extend 3rd party
components and work on new components. If you have some 3D programming
prodigy, keep them employed and interested by letting them work on the
3D engine component.. when they are done, get them to make the next 3D
engine. If your game sucks you can still license the 3D engine to other
people.
An example was a assignment I just did for uni. I found a heap of maths
libraries, XML tools, model loaders, TGA file libraries, and sound
libraries.. I ended up using the XML SXP/expat DLL and got that
functionality working in a day, then got a milkshape loader and extended
it to load in extra info for the models (bounding boxes etc). The TGA
library worked out of the box and the maths libraries were horribly
complex, so I wrote my own one over a day. I spent $40 on Milkshape.
Other people are still trying to roll their own crappy TGA loader.. I
dont care about the TGA compression format, but I do need to know how to
use the image data it spits out in my engine.
Software is unique in that builders can decide to make their own bricks
or find used bricks of unknown quality at the rubbish tip instead of
driving to brickland.
Josh Stewart
---------------------
To unsubscribe go to http://gameprogrammer.com/mailinglist.html
Other related posts: