If you're a game developer interested in learning game physics, you may find these resources a good place to start.
They may not be page-turners for bed-time reading, but they're useful if you're a looking to start with the more practical side, as developers often do, of a subject that's very theory heavy.
Topics include fun with integration, collision detection, collision resolution and friction.
Disclaimer: I only play with these things in my spare time, so I'm definitely no expert, far from it.
There's probably a bunch of great resources I've missed, so please leave suggestions in a comment.
First, the big guns. These are heavily cited, and for good reasons:
- Advanced Character Physics by Thomas Jakobsen
One of the most famous articles on physics for games. It shows the Verlet mass-constraint approach.
This is where most people seem to start with game physics, including me. You can easilly make fun things like soft bodies. But after a while, you realise that this approach is pretty limited (even though they used it in Hitman).
- Rigid Body Dynamics Articles by Chris Hecker
Chris Hecker is the man when it comes to clear and complete explanations. His articles for Game Developer Magazine are among the best. He explains some of the most fundamental equations you'll end up seeing everywhere.
- Physically Based Modeling Course Notes by Andrew Witkin and David Baraff
- Baraff Papers and Technical Reports by David Baraff
If you do end up reading any papers on the topic, you'll see references to Baraff and Witkin popping up everywhere. These fine chaps helped pioneer the field, while at Pixar.
Their course notes on Rigid Body Simulation become quite readable after you've read Chris Hecker's articles. Their work usually includes super helpful diagrams.
- Iterative Dynamics with Temporal Coherence by Erin Catto
- Continuous Collision by Erin Catto
- Erin Catto's GDC Presentations by Erin Catto
You may or may not know his name, but I bet you've used his engine. Erin Catto is the physics wizard behind Box2D. The engine that powers games like Angry Birds. The paper Iterative Dynamics describes some of the important techniques he uses in his engines, particularly for contact constraint solving. His GDC presentations provide even more clever ideas to solve practical issues you're likely to see when you start getting more advanced.
- A Unified Framework for Rigid Body Dynamics by Helmut Garstenauer
This is a long paper that runs through most major topics involved in physics engines. Garstenauer summarises a large amount of research in a clear and cohesive way. A good reference.
- Integration by Example - Euler vs Verlet vs Runge-Kutta by Florian Boesch
- A Simple Time-Corrected Verlet Integration Method by Jonathan Dummer
- Integration Basics - Runge-Kutta-4 Implementation (RK4) by Glenn Fiedler
Making stuff move realistically requires integration of motion. To do this, you generally have a few choices: Euler, Verlet and RK4. Euler is very easy to understand and is where to begin, but in practice you'll need to learn Verlet or RK4.
- SAT (Separating Axis Theorem) by William Bittle
- GJK (Gilbert–Johnson–Keerthi) by William Bittle
- N Tutorial A - Collision Detection and Response by Raigan Burns and Mare Sheppard
Collision detection is tricky. Fortunately SAT and GJK are two very efficient algorithms to do it.
If you're like me, you tend to be better at reading and visualising code than you are equations. That's why I like William Bittle's articles since he takes a practical approach with code samples, plus he also covers important bits that others miss.
Even still, SAT is hard to grok from just the code. So even better, the "N Tutorial A" uses interactive diagrams to explain SAT visually. They make it easy to see just how clever the algorithm is.
- How to Create a Custom 2D Physics Engine by Randy Gaul
- Physics engines for dummies by Paul Firth
- Physics Posts by Florian Boesch
- Game Physics by Glenn Fiedler
The above are collections of articles that are mostly around developing basic physics engines in general, but some are split into topics. They're a good way to get your head around how all the pieces are related in the whole system.
- Collision Response And Coulomb Friction by Glenn Fiedler
- Collision Handling Methods by Erik Neumann
- Calculating Polygon Inertia by arildno
- Bayazit Convex Polygon Decomposition by Mark Bayazit
Finally, these articles cover some other important bits and pieces that everybody seems to forget. Such as friction, which is far harder to get working properly than you'd think. Simultaneous collision handling is another hard one, because there seems to be no exact answers.
When you get to handling rotation, you may realise something's a little off. You'll need to use the polygon momentum of inertia algorithm. And if you get bored of only having squares, triangles and circles to play with you're gonna need to use polygon decomposition, for example Bayazit's above.
That should get you started. Now, get coding something cool.