
Hello fellow game engine devs. People sometimes have called me insane for making a game engine and I'm here to give them even more fuel to their fire because I made a physics engine too. Just slowly ticking off that list of things you should never code yourself.
Anyway, for the past 4 years I've been making a game engine called Easel which makes your game multiplayer automatically. It's only possible because you code everything in the Easel programming language, which has rollback netcode built into the language itself, which is how it can guarantee deterministic execution and snapshotting of your entire codebase.
One thing I wanted to support was much bigger games like Among Us where you walk around a spaceship. But with thousands of colliders, rollback netcode is infeasible because it has to snapshot everything every frame. Until now.
This past month I made a new physics engine for Easel that only snapshots the parts which change. If you're walking around a gigantic spaceship with lots of rooms, most of the bodies/colliders are static, and so every frame it only needs to snapshot maybe 30 objects. It's really cheap to snapshot and rollback.
Incremental rollback has been how the rest of Easel has worked for a while, but I never took the step to rewrite the physics engine thinking it was too daunting, and so physics had really been the thing holding it all back (Amdahl's law, am I right?). It wasn't until the other month when I was submitting a pull request to the physics engine I was using that I realised maybe it might be within my capability, so I went for it, and it's been working great!
It was really fun making a physics engine. I wondered if some of the people here are also physics engine devs? What was your reason for making one?