Physics for Games

October 2021: Get back at it. 3D first

If I'm being honest, I was busy moving to Canada the last two months, so I hardly made any headway at all in the realm of physics engine work. Now that I am settled, it is time to get back on the horse! My goal is to have a believable 3D physics engine (rigidbody mostly) by the end of the year. From there, I will figure out what I want to do next.

  • 3D Rigid Body Physics

July 2021: 2D loose ends and 3D headway

  • Finish SAT Collision Info (very close)
  • 2D rigidbody explanation 3
  • 3D Rigid Body Collisions
  • ZIP file creator for downloads
  • Explanation of Quaternions

The last two months went almost as planned. I think I misjudged how long and how much brainpower it would take me to write explanations for all of these things. A classic engineer mistake. We see writing, and we think, "Easy, I can do that." And I usually can, but I am a bit rusty as of late. Additionally, this writing involved a lot of diagrams and math equations that I struggled to put into HTML. I even had to learn to make some simple drawings in gimp, which was a bit of a hurdle.

That being said, I am fairly configdent that I can finish the above items in the month of July (maybe minus the quaternion work, but we will see). To get my confidence up, I am going to begin with the ZIP file creator for downloading individual projects. That will definitely be worthwhile.

May/June 2021: More Collisions

  • SAT Collisions for Convex Polygons with Explanation
  • 2D rigidbody physics demo + explanation 1
  • 2D rigidbody physics demo + explanation 2
  • 2D rigidbody physics demo + explanation 3
  • Remove (or hide) ellipse collision pages for now
  • 3D scene setup
  • 3D scene basic physics with spheres bouncing around a scene
  • Pill Collisions

Obviously, the month of April did not go as planned. I got caught up with a number of tasks that I couldn't handle, namely, the pill collisions. These, as I discovered, were quite unfeasible and involved a lot of complex maths that I didn't quite yet understand. They are also unreasonable for game development's sake, so I will ditch that effort and focus on doing other things. This, of course, is not time entirely wasted, as I now I have a somewhat better understanding of why ellipses (and by extension ellipsoids, although I am not entirely sure of this). I should instead try to figure out the intersection using pills, not ellipses. Pills are simply 2D shapes made of a rectangle in the middle and two half-circles at either ends. This is a far less expensive collision to calculate.

I also failed when it came to getting a good physics collision system going. This stemmed from a general misunderstanding of moment of inertia and how it can properly be implemented for each shape. I think I am getting a better grip on it now, however.

And that brings me to May/June. I am combining these two months because I am quite busy in May with family stuff, and hence won't be able to give my full attention to the project. That being said, as a high-level goal, I hope to get some more 2D collisions going, and maybe move onto 3D fairly soon. For 3D, I would simply like to get the physics simulation up and running with simple objects (spheres, cubes, etc.). From there, I want to begin exploring more complex physics simulation topics like oct-trees, multiple collision resolution, etc. We will see what happens, but I am optimistic, so long as I stay the course.

Edit: I am going to focus on SAT collision and AABB collision detection going forward for this month. In addition, I am going to finish the descriptions/demos for regular rigidbody collision. Afterwards, if I have time, I will move onto 3D collisions.


April 2021: Ground Work and Initial Collisions

  • Orthographic rendering basics
  • Uniform build Process for WebAssembly
  • WASM Framework with simulation loop

2D Collisions with Descriptions

  • Ellipse-Line Collision
  • Ellipse-Ellipse Collisions
  • Ellipse-Circle Collisions
  • Ellipse-Square Collisions
  • Rectangle-Line Collisions
  • Circle-Line Collisions (Redo)
  • Rectangle-Circle Collision

Brief Wasm Series

  • Getting started with WASM docs
  • Wasm examples

Everything above has a due date of April 30th, 2021. None of it is that hard, so this should be a very doable timeline.