Sponsored By

GDC 2009 - Day 2.1 - Physics abandoned. Retreating to Indie Games

One man's failure to conquer the full day tutorial 'Physics for Programmers'. Starring Erwin Coumans, Gino van den Bergen, and special guest Erin Catto.

Jim McGinley, Blogger

March 25, 2009

4 Min Read

Continue to breathe the toxic zenite gas.


1. Anatomy of a Physics Engine - Erwin Coumans

Arrive slightly late.
Erwin's delivery is matter of fact... too matter of fact, in fact.
What's he hiding?
Erwin's showing Newton's Laws of Motion - I believe it's a trick
i.e. they only show you something you understand when they're about to blow your mind
Current diagram will eventually evolve into Brute Force Physics Pipeline.
It's already more complicated than anything I've ever coded. Not good.

In order to implement a physics engine, ALL you need to do is...
Apply gravity and constrained motion (using an iterative constraint solver)
and do a pairwise test during the narrowphase collision stage
(which has all sorts of complex problems including tunneling)
TA DA!

Of course, doing all that would kill your framerate,
which is why all the cool kids do a broadphase collision test first.
Techniques exist for this, and the best one can be thwarted by a large rubber ducky.

Of course, doing all that would still kill your framerate,
which is why you create "simulation islands" that don't need to check for collisions
(since everything in them has stopped moving).
Of course, tracking these sleeping islands will kill your framerate,
so it's better to simply remove stopped objects altogether.
While that's a problem, it's not a collision problem, so we ignore it.

Of course, the best optimization is the artist who creates the collision mesh to begin with.
Oh artists! Is there anything they can't do!?

It's 11am.


2. Collision Detection Crash Course - Gino van den Bergen

Playtime is over. We're starting to get serious.
Gino is a good presenter. He knows his stuff and can explain things clearly.
He also looks a little like Roger Federer which means he's dreamy.

How do you tell if a sphere and cube collide?
Merge them into a sphube (a configuration space),
and see if contains the origin using the Seperating Axis Method (SAT).
Just remember all the sphubes you seperated as a kid.

Of course, SAT will kill your framerate, which is why all the cool kids use GJK.
Like yesterday's Quaternions, no-one understands GJK but everyone uses it.
Gino explains GJK. I now understand why no-one understands.

Of course, before you can use GJK you need to break down your world into simple geometry.
Dreamboat says that AABB Bounding Volumes are all the rage,
and proves it without breaking a sweat.
Demos showed a donut efficiently boxed - eat your heart out Tim Horton's.
Now all you gotta do is sweep & prune,
with a dash of encapsulation and some queued swaps.

But what if that donut was moving in 1 direction...
which really means 500 bounding boxes moving in 1 direction...
do i really need to sweep & prune every little box?
no you don't you clever little minx!
A giant moving jello brain demo proves this.
Somewhere, Bill Cosby smiles.

Someone pointed out that Gino's techniques wouldn't work with 2 line segments.
With a sly smile, and a cocked eyebrow, Gino cutely replied
"with my engines, I've never had to worry about it".
You had me at "with".


3. Modeling and Solving Constraings - Erin Catto

Implicit Euler is so yesterday. Today, Erin's all about the Jacobians.
Presentation starts off with a bang, showing several Box2D demoes
"it's fun to mix all kinds of constraints together"
note to self: there's more than 1 constraint
A bead on a wire, and a little calculus, reveals the Jacobian in our hearts.
Leonard Cohen would be proud.
Erin pauses for lunch, he's just getting warmed up...


Lunch

Realizing I've been defeated,
I tip my hat to the unsung heroes that make solid worlds possible,
and retreat to the clouds aka. the Indie Games Love-In.
My respect for what the Troglytes do has increased 10 fold,
while my understanding about what they do has decreased twice that amount.
My brain, like my physics engines, doesn't follow the law of preservation of energy.
I will never >EVER< complain about collision detection problems or poor physics in a game.


Epilogue

I ran into a colleague this evening. He lasted that fated afternoon session.
He told me it was great, and fluid physics was actually easy to understand
(it just required a lot of computation power).
He also mentioned that the networked physics presentation was "pretty cool".


Bastard.


Note: He redeemed himself by mentioning he loved Squirrel's presentation.

Read more about:

Blogs

About the Author(s)

Daily news, dev blogs, and stories from Game Developer straight to your inbox

You May Also Like