Archive for the 'Rants' Category

Not Invented Here?

(Note: this post comes from a debate I was having over on gamedev.net, so the tone is a bit harsher than my usual friendly demeanor. :))

I suggest you read the following article to understand my position:

Joel on Software

The conventional wisdom is that it is better to use components off the shelf (COTS). It seems mature, modern, and hip. It is also over generalized.

So license Renderware, license Havok, and so on. Put this altogether and just concentrate on gameplay. Sounds great, right? But what happens when EA comes along and buys up your middleware? What if EA is your main competitor? How good is support going to be at that point?

What if you need a new feature for a totally new game play mechanic, are you going to ask EA to implement this for you? How long will it take? In our game, my turn around time for new features is typically a day or two. My turn around time for support is a 10 second walk across the office.

If physics or graphics are a core feature of your game, it is incredibly risky to out-source this to an external library. That’s why I think many games so far have had limited use of physics, because it is not core, it is out-sourced.

The State of Game Physics

Game physics is a difficult subject. It must be layered on top of collision detection, which is also difficult. So the difficulty is compounded. In my opinion, the difficulty in writing a physics engine is not entirely necessary.

Learning the physics and mathematics necessary to write a physics engine is challenging and a good education helps. However, education is not enough because many of the techniques needed to write an efficient physics engine are not taught in school. Furthermore, I have not found any book that shows how to write a physics engine. Yes, there are books on game physics. I’ve seen at least three. But none of these books comes close to showing how to write a physics engine.

There are good books on collision detection by Gino van den Bergen, Christer Ericson, and Dave Eberly. They have proven invaluable to me in my day-to-day work. So why are there no books that explain the algorithms needed to write an efficient physics engine? Well, until recently there has not been any papers on the matter.

Yes, I know about the papers by Baraff, Mirtich, Jakobsen, Anitescu, and Guendelmen. I would argue that none of these algorithms are used in commercial physics engines without serious overhaul.

It seems to me that almost everyone who develops a good algorithm for game physics keeps it under wraps. This is too bad. The graphics community has shared algorithms since the beginning and look at how far it has progressed. What has stopped the game physics literature from flourishing in a similar way?

This is my open question to you.