<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="/index.css"> <title>Physics for Games</title> <link rel="shortcut icon" href="/favicon/favicon.ico" type="image/x-icon"> <meta name="description" content="A place to learn all about real-time physics simulations through descriptions, code snippets, and example programs all written in C++ and OpenGL."> <meta name="og:description" content="A place to learn all about real-time physics simulations through descriptions, code snippets, and example programs all written in C++ and OpenGL."> </head> <body> <header> <h1><a title="physicsforgames.com" href="/">Physics for Games</a></h1> </header> <main> <nav> <ul class="outer-tree"> <li><a href="/">Introduction</a></li> <li> <span>🏀<span>2D</span></span> <ul class="inner-tree"> <li><label>Rigidbody</label></li> <li><a title="/2d/rigidbody/rigidbody_1.html" href="/2d/rigidbody/rigidbody_1.html">Linear Forces</a></li> <li><a title="/2d/rigidbody/rigidbody_2.html" href="/2d/rigidbody/rigidbody_2.html">Rotational Forces</a></li> <li><a title="/2d/rigidbody/rigidbody_3.html" href="/2d/rigidbody/rigidbody_3.html">Collisions</a></li> <li><label>Collisions</label></li> <li><a title="/2d/_collisions/rectangle_rectangle.html" href="/2d/_collisions/rectangle_rectangle.html">Rectangle-Rectangle</a></li> <li><a title="/2d/_collisions/polygon_polygon.html" href="/2d/_collisions/polygon_polygon.html">Separating Axis Theorem</a></li> <li><label>Softbody</label></li> <li><a title="/2d/softbody/softbody_1.html" href="/2d/softbody/softbody_1.html">Springs</a></li> <li><a title="/2d/softbody/softbody_2.html" href="/2d/softbody/softbody_2.html">Springy Rectangle</a></li> </ul> </li> <li> <span>🌠<span>3D</span></span> <ul class="inner-tree"> <li><label>Rigidbody</label></li> <li><a title="/3d/rigidbody.html" href="/3d/rigidbody.html">Rigidbody in 3D</a></li> </ul> </li> <li> <span>🔧<span>WebAssembly</span></span> <ul class="inner-tree"> <li><a title="/intro/intro.html" href="/intro/intro.html">Introduction</a></li> </ul> </li> <li> <span>🛈<span>About</span></span> <ul class="inner-tree"> <li><a title="/roadmap.html" href="/roadmap.html">Roadmap</a></li> </ul> </li> </ul> </nav> <style> section ul { list-style: none; padding-left: 0; } section li { position: relative; padding-left: 1.5em; /* space to preserve indentation on wrap */ } section li:before { content: ''; position: absolute; left: 0; width: 1rem; height: 1rem; } section ul { list-style: none; } section ul li:before { content: '-'; } .done { color: green; } .halfway { color: orange; } .failed { color: red; } .abandoned { color: grey; } section ul li.done:before { content: '✓' } section ul li.halfway:before { content: '⚠' } section ul li.failed:before { content: '✗' } </style> <article> <section> <h1>October 2021: Get back at it. 3D first</h1> <p> 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. </p> <ul> <li>3D Rigid Body Physics</li> </ul> </section> <section> <h1>July 2021: 2D loose ends and 3D headway</h1> <ul> <li class="done">Finish SAT Collision Info (very close)</li> <li class="halfway">2D rigidbody explanation 3</li> <li class="failed">3D Rigid Body Collisions</li> <li class="failed">ZIP file creator for downloads</li> <li class="failed">Explanation of Quaternions</li> </ul> <p> 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. <br /><br /> 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. </p> </section> <section> <h1>May/June 2021: More Collisions</h1> <ul> <li class="halfway">SAT Collisions for Convex Polygons with Explanation</li> <li class="done">2D rigidbody physics demo + explanation 1</li> <li class="done">2D rigidbody physics demo + explanation 2</li> <li class="halfway">2D rigidbody physics demo + explanation 3</li> <li class="done">Remove (or hide) ellipse collision pages for now</li> <li class="done">3D scene setup</li> <li class="abandoned">3D scene basic physics with spheres bouncing around a scene</li> <li class="abandoned">Pill Collisions</li> </ul> <p style="font-size: 18px;"> 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 <i>instead</i> 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. <br/><br/> 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. <br/><br/> 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. <br/><br/> <i>Edit:</i> 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. </p> </section> <hr/> <section> <h1>April 2021: Ground Work and Initial Collisions</h1> <ul> <li class="done">Orthographic rendering basics</li> <li class="done">Uniform build Process for WebAssembly</li> <li class="done">WASM Framework with simulation loop</li> </ul> <h2>2D Collisions with Descriptions</h1> <ul> <li class="halfway">Ellipse-Line Collision</li> <li class="failed">Ellipse-Ellipse Collisions</li> <li class="failed">Ellipse-Circle Collisions</li> <li class="failed">Ellipse-Square Collisions</li> <li class="done">Rectangle-Line Collisions</li> <li class="halfway">Circle-Line Collisions (Redo)</li> <li class="failed">Rectangle-Circle Collision</li> </ul> <h2>Brief Wasm Series</h1> <ul> <li class="halfway">Getting started with WASM docs</li> <li class="halfway">Wasm examples</li> </ul> <p style="color: black; font-size: 18px;"> Everything above has a due date of <b>April 30th, 2021</b>. None of it is that hard, so this should be a very doable timeline. </p> </section> </article> </main> </body> </html>