The day started very early (at 7:30!) with a Dutch Business Breakfast organized by the Dutch Consulate General. It was nice to see a big portion of the Dutch attendees of the GDC, and to catch up with some acquaintances.
As for our GDC-day: We attended the Physics for Game Programmers tutorial. This was a good opportunity to learn more about the implementation of physics engines. I only knew of their internal workings on a very superficial level. The tutorial gave me a better intuition on how physics can work in a game. I also learned in which areas the current developments in physics are. I always thought that rigid body physics was a solved problem in games, but it seems there are still some quirks that can be ironed out. Other developments are in the area of GPU physics, networked physics and fluid dynamics.
Solving the tunneling problem in 2D
During the Motion and Manipulation course at the Utrecht University, the concepts of the Minkowski sum were extensively treated. But the course didn’t discuss the implementation. The talk of Squirrel Eiserloh expanded perfectly on this topic.
The tunneling problem is the problem that a collision can occur between frames. So you have to look at the motion between the frames to do correct collision detection. This is very difficult, but not when simplified extensively. Consider 2 moving polygons A and B. To check for collision, object A should be dilated (Minkowski sum) using the negated shape of B. This simplifies the collision detection to a polygon – point detection. The objects can be translated such that the point is at the origin. Furthermore, in stead of looking at the motion of A and B, place the frame of reference on object A, so that only B seems to move (relative to A). The result is that a moving point has to be intersected with a polygon, which can be done by using a ray cast. (Rotation of two objects still cannot be simplified.)
Physics Networking
Glenn Fiedler gave a great overview of networking models for game physics. Physics involves a lot of interactions, and it is a challenging problem to keep it synchronized on multiple computers over the Internet. There are a few different approaches. The best approach depends on the specific scenario.
- Client/server: The server does the entire physics simulation and sends the result to the clients.
- Client prediction: Similar to 1, but seemingly solves the problem of delay because the client predicts the simulation. When the final simulation is received from the server and something turned out to be wrongly predicted (like when another user influences the simulation). Then the simulation has to rewind and be re-applied with the final information from the server. Not really pretty.
- Deterministic lockstep: The game has to execute fully deterministic, and only input is transferred. The game-simulation can only advance when the input data of all players is received. The input can be transferred peer-to-peer, but that allows for lag-cheating. An alternative is to route the input through a server for better control.
- Authory scheme: A very interesting approach where every client simulates a part of the world and transfers the results to the other players. The key here is that every client simulates the things important for that client (like the local surroundings). This way, the user does not notice any delay while no rewinding of game-state is necessary!
Smoothed Particle Hydrodynamics
The simulation of fluids starts to become feasible for use in games. Particles are used to simulate a fluid. The simulation is based on the density, which generates pressure and viscosity forces (which act like a spring and a damper). The density is calculated by adding smoothing kernels. The smoothing kernels represent the amount of presence of the particle.
Thai Noodle King
We discovered a new type of food: Thai food! It tastes good, it’s cheap and it’s finally something else than hamburgers. It’s also really fun to eat with sticks, although it’s a bit clumsy. Definitely something to keep in mind!
Now we are going to resolve the final conflicts of overlapping sessions in our session-schedule for tomorrow!
Also check out the blog posts on today from Bas and Emiel.
I like this post| 5 people like this post.

Pingback: Rotational Interference - Physics for Game Programmers