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
Physics for Game Programmers: GDC 2013 Schedule Builder
In this developer diary, meet the God of War: Ascension multiplayer team and learn about some of our lag hiding tricks
The open beta is live on Playstation Plus now, so hop on and try it out!
After 4 years of hard work we are now in the open beta phase of God of War: Ascension
I’ve had the distinct honor of working with SuperBot Entertainment over the last 2 years helping them out with netcode. Finally their game is released!
Regular readers of this blog know that I started work at Sony after leaving Pandemic. But what have I been working on? Until now this has been a secret…
I’m proud to be finally be able to talk about what I do at work.
I’m the Lead Network Programmer on God of War: Ascension!
I can’t wait until you guys get to play this online. There are so many cool lag hiding techniques that we have developed just for this title, completely new stuff! Never been done before! I wish I could talk about more but it will have to wait until after we are shipped.
To my friends at That Game Company: It has been a pleasure working with you over the past few years, sharing some low-level network code with you and brainstorming over networking techniques and strategies. These times were a highlight of my time at Sony so far.
Your game is an amazing acheivement and I’m a huge fan.
I’m so proud that I was able to play a small part helping you make your game.