After taking a break last year to focus on God of War: Ascension I’m happy to be back this year speaking again as part of the physics tutorial day at GDC 2013.
In previous years I’ve done talks about how to network physics simulations. Topics typically included such things as: how the internet works, UDP vs. TCP, how to synchronize physics state for large open world physics-based games and recently at GDC 2011, showing attendees different strategies for synchronizing their physics simulations over the network (this is a case where one size definitely does not fit all!)
This year I decided to transition to a pure physics programming talk. The talk is introductory in nature and the goal is to give attendees a good quality introduction to rigid body dynamics, collision detection and collision response. But a talk like this can be quite dry and I prefer to do my talks in the context of a worked example with lots of demos!
So, I combined two things that I love: physics simulation and the ancient board game “go”.
Why go? Well, the game of go is extremely interesting! Plus it has links to the game industry, considering it is the origin of the word “Atari”, which by the way, means something akin to “check” in chess, except not necessarily at the end-game. Also, from a game programmer perspective it’s a vastly interesting game for study, being so far entirely resilient to computer solving. It has been said that there are more potential possibilities in the first 10 moves of go on a 19×19 board than all potential chess games and perhaps this explains why unlike chess, the best go AIs at this point are only capable of playing at the level of a strong amateur.
So there are many reasons why go is interesting, but really, I chose it because I love it, and also because the shape of a go stone is so damned interesting and it has this most fantastic wobble when placed on the board and I wanted to see if I could simulate that!
If you are a student, a hobbyist programmer or even professional and you are interested in writing your own physics engine from scratch then this tutorial would be a very good start.
Come to my talk and you’ll learn:
- How to mathematically define the shape of a go stone
- How to tesselate a go stone so it can be rendered efficiently in OpenGL
- How the go stone moves: an introduction to rigid body kinematics
- How to detect collision between the go stone and the board
- How to calculate the inertia tensor of a go stone and what it means
- How to calculate the collision impulse to apply to make the stone bounce
- How to calculate friction between the stone and the board