[MUD-Dev] Jeff's Rant: A World Full of Wheel-Makers

Bruce bruce at puremagic.com
Sat May 19 15:29:32 CEST 2001


An old list member, Jeff Kesselman wrote:

http://www.javagaming.org/WeeklyRant/weeklyrant.html

Thanks to Greg Munt for tossing this my way. :)

I couldn't find a archival URL for this, so here it is in its entirety:

=== begin quote ===
Jeff's Rant: A World Full of Wheel-Makers


Since Chris has given us this chance to rant I thought I'd share my 
views on the industry as an ex game-programmer.

Nothing frustrates me more then the amount of duplication of effort 
going on the in games industry.  Its still true today that if you talk 
to most game developers they are convinced that their problems are 
somehow unique and that all their solutions are going to be better then 
anyone else's. Given all of this incredibly talented and creative effort 
you would think that the game industry would be full of wildly different 
products, yet if you walk around E3 you inevitably see a floor full of 
virtually identical product.

What gives?

In engineering in general there is a real tendency to towards NIH or 
"Not Invented Here" thinking.  This is driven by the honest effort to do 
our best work on everything and the irrational fear that others haven't 
had the same drive.  Guess what guys, **everyone** who is any good at 
all feels this way but you cannot possibly do your best effort on 
everything. You just don't have the time or resources.

We can learn a lesson for the economists.  In Paul Samuelson's 
Economics, 10th edition he provides a mathematical proof that even if I 
produce both bicycles and coat hangers cheaper then you do, if I produce 
bicycles cheaper then coat hangers and your produce coat hangers cheaper 
then bicycles, then we both win if we specialize in our locally maximal 
production and freely trade. I do the bicycles and you do the coat hangers.

What does this have to do with us? The same math applies-- even if in a 
perfect world with an infinite amount of time you can do everything 
better then anyone else, in a fixed time effort you will get better 
results through specialization and trade.  Given the complexity of 
modern games this kind of approach has never been as necessary as it is 
today. Creativity is being drowned in the sheer volume of work necessary 
to realize creative visions.

The answer has been known for a long time, reuse of code and 
component-ware. Unfortunately the cards are all stacked against such 
approaches today. You would think that at least within a shop there 
would be code reuse. However my experiences in the industry suggest that 
this almost never happens.  Why?  Ironically the reason I've seen has 
nothing to do with engineering.  It has to do with bookkeeping.

The typical accounting model for game projects looks at each game 
project individually as a profit/loss center.  A given producer is 
responsible for tracking the costs of producing the game and seeing that 
it ultimately earns more then it cost to produce and market.  A producer 
who consistently generates profit will do very well in the industry. A 
producer who produces a string of losses will soon be looking for a new 
job. As such it behooves the producer to keep his costs down.

You might think that reusable code would reduce costs, and it would, but 
that code has to come from somewhere.  Reusable code initially costs 
more to produce then one-off problem-specific hacks.  There is no 
incentive in the system for the producer to spend a penny on future 
games, and every reason not too if it will impact his current game's 
budget. As a result, game engineers are directed and scheduled to 
produce only what is needed for the current project and not a line of 
code more. The reason is that there is no global accounting that credits 
people for doing work that helps the company produce multiple products.

Some game companies attempt to solve this be creating separate "R&D" or 
"Tool" engineering groups.  The role of these groups is to think further 
ahead then just the next game and produce technologies that will benefit 
many game projects. Unfortunately these groups still often fall prey to 
the balance sheet.

I worked for one such group where where our operating budget was paid as 
a fixed charge to the budget sheets of all the in-house game projects. 
Inevitably when game projects ran over estimates and the producers 
started examining their budgets for ways to reduce costs, they wanted to 
know what we were doing for their immediate needs. The end result was 
that we were pushed to act as a direct extension of the game projects' 
engineering staff and all the strategic advantage of having our group 
were lost.

The other way of budgeting such a group is to call it "overhead" like 
the lights and office space.  This keeps the R&D group off of the game 
producers' balance sheets and out of their lien of fire. Unfortunately 
it moves the group directly into the line of fire of higher level 
executives trying to trim costs during downturns. Lights and office 
space they understand, but "R&D" sounds to these generally 
non-engineering types as a "frill" like free-soda and something that can 
be cut with even less complaints from those who "produce the  real 
product."  As the game industry is a boom/bust industry such downturns 
are inevitable and, once the forward planning has been eliminated it 
becomes very hard to bring it back into the system.

So what are the solutions? If I had a 100% sure fire fix this would be 
an MBA thesis, not a rant.  I do have some suggestions though:
Stop thinking in terms of individual products and start thinking in 
terms of suites of products built on top of generic engines.  I don't 
mean very game specific engines like the Quake engine, but rather game 
genre and or functional engines, such as Sierra Online used.  (Very 
successfully, I might add, until they were bought out by someone who 
didn't understand their business model.)

Fight the NIH complex. There are specialists out there who want to write 
components for us. Lets try to encourage that by looking for external 
solutions first and only engineering either the core unique parts of our 
games or places where the externally available components can't be 
reasonably made to fit. At times this may mean diverging slightly from 
our original game designs but the payoffs are well worth it.

Industry Standards!  The best way to encourage both the development and 
sue of component ware is through the development of industry standard 
APIs and data formats.  These allow code to be easily separated while 
still communicating closely in the final application.  Furthermore they 
reduce the risk of using third party components by providing the 
possibility of plug-replacing those that might not live up to our hopes 
or needs.

Number One above is a change that has to happen in game production 
management.  I'd call on those in such management positions to consider 
this and discuss it with your technical experts.

By contrast Two and Three are things engineers can directly address and 
make happen.  We ARE the technical experts and these are choices we can 
make or at least strongly encourage our management to make. A focus on 
Java API's for gaming seeks to address these very problems.
==== end quote ====

Enjoy

  - Bruce

_______________________________________________
MUD-Dev mailing list
MUD-Dev at kanga.nu
https://www.kanga.nu/lists/listinfo/mud-dev



More information about the mud-dev-archive mailing list