Research & Development

Three Big Lies: Typical Design Failures in Game Programming (GDC10)

Posted on Mar 14, 2010, 4:00 pm
Recovering from another inspiring GDC. This presentation went pretty well I think. Unfortunately we had to turn away something like 200 people because the room wasn't big enough. And quite a lot of those people were exactly the folk I wanted to get feedback from! So my appologies to anyone who came to the door and wasn't able to get in.
 
I received a lot of comments from people afterward that it inspired them to rethink their approach. Which is absolutely the best result I could hope for. There are a lot of poor practices with years of traction in the programming industry as a whole (not just game development) and I think it's well past time that we take the time to remember our first principles and keep ourselves from straying further.
 
Fundamentally this whole thing comes down to a simple truth: Computers transform data and nothing else. It's our job as programmers to make sure that data gets transformed. Our job is *not* to write code, but to make sure that data is transformed properly. And when we forget that, we end up with poorly-performing, over-complex, over-abstracted programs that simply do not do the job they need to do and cannot be made to do it well without heroic effort, if it's at all possible.
 
Nothing in this presentation should come as a real surprise to those that know me, but I absolutely believe it remains a problem and it's a problem I'm passionate about fixing.
 
Mike.
 
+7

7 COMMENTS

SHARE
3 PEOPLE LIKE THIS     LIKE     COMMENT
midpipps
midpipps Mar 15, 2010, 10:40 pm
Some really interesting ideas in there. Could probably get more out of it with the audio. But it still got me thinking.
cmoidel
cmoidel Mar 16, 2010, 7:45 am
I was one of many that disappointingly got turned away at the door. Thank you for posting the slides online. I look forward to reading them. Do you know if the "GDC Vault" is going to have audio or video for your presentation? I was told that only some talks were recorded.
Vortex646
Vortex646 Mar 17, 2010, 1:06 am
Almost hard to understand xD
Fersis
Fersis Mar 17, 2010, 9:49 pm
While i agree with the 3, 'Code designed around a model of the word' is the most important (Since it affects much more than code)
Great read.
gha
gha Mar 24, 2010, 9:57 am
hi
the last part and the examples are hard to understand. I think that you are right, but the problem is bigger and the programming community (not only game programmers) are full of vicious. First OOP isn't well suited for a data driven approach because the code and the data are 'mixed' in the same place (classes) and in a more orthogonal language (like C ou Go) you can think about the data first and then think about the code. when you define all data structures the code comes naturally.
The excess of abstraction is nocive too, a lot of design patterns can be avoided using more simple solutions. I remember an old demo with sourcecode from Crytek about normal mapping (the demo was published in some shaderX series), to use the code and call the function that calculate the TBN matrix you must use proxy pattern, why create thousand of classes if you can instead create a simple array ? Its only an example, a lot of code from software (game) industry is over-complicated.
macton
macton Mar 27, 2010, 5:58 am
@cmoidel Apparently video is available in the GDC Vault. I'm told some people have watched it.
macton
macton Mar 27, 2010, 9:29 am
@cmoidel Apparently video is available in the GDC Vault. I'm told some people have watched it.

LEAVE A COMMENT



You must be logged in to add a comment
LATEST ARTICLES