GDC 2013: Speaking at the Physics Tutorial Again!

by Glenn Fiedler on February 3, 2013

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”.

go board outside cafe

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.

top-down go board on tartan table cloth

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!

Go stone side profile sizes

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

{ 3 comments }

Watch the first 30 minutes of God of War: Ascension

by Glenn Fiedler on February 1, 2013

{ 0 comments }

God of War: Ascension Live Action Trailer

by Glenn Fiedler on February 1, 2013

{ 0 comments }

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!

{ 23 comments }

God of War: Ascension Multiplayer Open Beta

by Glenn Fiedler on December 13, 2012

After 4 years of hard work we are now in the open beta phase of God of War: Ascension

{ 0 comments }

Playstation All-Stars: Battle Royale Released!

by Glenn Fiedler on November 21, 2012

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!

Congratulations SuperBot!

{ 0 comments }

SHOUT OUT to our biggest fan – Hip Hop Gamer!

by Glenn Fiedler on June 10, 2012

{ 2 comments }

God of War: Ascension Multiplayer!

by Glenn Fiedler on May 2, 2012

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.

{ 8 comments }

Journey Released!

by Glenn Fiedler on March 13, 2012

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.

Congratulations!

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.

{ 0 comments }

GDC2011: Networking for Physics Programmers

by Glenn Fiedler on February 24, 2011

This year I’ll be presenting a new version of Networking for Physics Programmers as part of the physics tutorial day on Tuesday.

As for the material to be presented this year, it will differ significantly from prior years. I’m going for more advanced material this year so I’m not going to spend 5 minutes explaining UDP vs. TCP. We’ll be skipping that and going right to the interesting stuff which is:

1. How to develop your own custom network protocol in UDP. Reliability and acks, node / transport abstraction, how to structure your game protocol and serialize packets.

2. Overview of game networking models. Pure client/server, FPS networking model with client side prediction, deterministic lockstep, authority scheme. Examples of games using each technique. How each networking model works. Advantages and disadvantages. Understand the trade-offs so you can pick the best networking model for your situation.

3. Worked example: authority scheme for networked physics in a large streaming world. Same cube demo. Different networking strategy. This year I’ll be doing it dedicated client/server style instead of P2P and I’ll focus on all the practical details and tricks required to synchronize physics state in under 64kbit/sec such as: compression tricks for position, orientation and linear/angular velocity, how to prioritize object updates when you have too many objects to fit in one packet, using a reliability system and acks to avoid sending at rest objects over and over, lossy compression, quantization and other neat tricks.

Hope to see you Tuesday, March 1, in Room 3007, West Hall Moscone Center. I’ll be talking from 3:30PM- 4PM

Schedule details here.

UPDATE: Unfortunately the original material as presented above consistently took 2.5 hours during practice sessions. As a result, I’ve had to cut section 1 and 3. There is a lot of great info in section 2 and the feedback from practice sessions was consistently that it was the best section of the talk. If you’d like some information about #1 and #3 you can ask questions during Q&A, plus I’ll be available during GDC for impromptu meetings etc. where I can go over this info with a whiteboard or a notepad. DM me on twitter if you’d like to meet up: @gafferongames

{ 28 comments }