2D C++ Physics Engine
2D C++ Physics Engine

2D C++ Physics Engine

Created on:
Team Size: 1
Time Frame: 1 Month
Tool Used: C++

This is a 2D physics engine made in C++ with no libraries. It was made during the physics engine module of the SAE Institute.

It has :

  • Circle colliders
  • AABB colliders
  • Broad phase collision detection with a grid

At first the demo scene was made in SFML. But recently, I ported it to raylib so that I could compile the projet to a web version with Emscripten. You can left click to place circles and right click to place squares.

Downloading...

What I Learned

  • The math behind a physics engine: Even though I already studied Newton’s equations, applying them in code is a different challenge.
  • Creating a CMake library: Before this project, using CMake was quite complicated for me and in this project I read a lot of tutorials to be more confortable.
  • What to think about when designing an API: Since my physics engine is a library, I had to think about what the user code would look like.
  • Optimization with data structures: To optimize collision detection, we studied multiple data structures (KD-Tree, Quadtree, Grids). I choose to implement a grid.

Code Reviews

The project was also featured in 3 code review videos made by The Cherno, who was an engine developper at Electronic Arts for 4 years. They accumulated a total of 260’000 views. In these, The Cherno looks at my code and makes comments on the various things that could be improved.