What's the difference between a technique and a hack?

Originally posted to Shawn Hargreaves Blog on MSDN, Wednesday, January 28, 2009

While answering a question on the Creators Club forums, I found myself thinking about the difference between general purpose rendering techniques, which tend to be flexible, reusable, and widely understood, versus game specific hacks, which rely on creativity and lateral thinking to achieve their desired result, often by efficiently taking advantage of some other work the game was already doing.

The world is full of knowledge about general purpose rendering techniques. These are presented at conferences, written about in books, and described on blogs and forums. But there is less information about game specific hacks, most likely because these are only relevant to the game they were designed for. Also I suspect some developers might be embarrassed to admit in public just how many shortcuts they took :-)

This struck me as a shame. Sure, these hacks may only be directly applicable to a particular game or platform, but the delicate balancing acts that can achieve interesting effects with a minimum of resources are relevant to all developers.

So I decided to talk about some of the techniques my team used to create MotoGP.

Background:

MotoGP used two "proper" (aka. at least somewhat general purpose) rendering techniques that are, as far as I know, original and unique:

image    image

We also used a number of techniques I have written about elsewhere on this blog:

For laughs, we implemented some stylized rendering effects as unlockable Easter eggs. Our approach was similar to this XNA Framework sample, but with less sophisticated edge detection. I still think it looked pretty cool though:

image    image 

But wait, there is more! Unless you are making a motorbike racing game for Xbox-1 hardware, the following ideas may not all be immediately applicable, but I hope you will find some of them interesting and possibly even useful.

Stay tuned...

Blog index   -   Back to my homepage