Easel’s multiplayer architecture is predictive: to keep clients in sync it snapshots world state and rolls it back on misprediction. With an off-the-shelf physics engine that means restoring the entire world every frame, which is what kept large worlds — an Among Us-sized spaceship of walls, panels and vents — out of reach for the engine.

The new physics engine snapshots and rolls back only the parts of the world that change:

  • Immediate sleep. Bodies stop simulating and stop being snapshotted the moment velocity hits zero, rather than after a few seconds of inactivity. With thousands of static objects and fewer than 30 changing per frame, rollback work drops by roughly 30–50x.
  • Force-aware stacks. Gravity would otherwise keep everything awake, so Easel tracks forces and reaction forces per body; a stack stays awake while any body in it is unbalanced.
  • A lazy BVH. The broad-phase tree rebalances incrementally, and only while it is already being modified. It also indexes collider categories, so “find the nearest player” does not walk every collider in the world.
  • Stepping without bounce. The usual add-velocity-then-subtract-it trick reintroduces bounce when a character hits something mid-step. Easel implements stepping as position correction instead, so the ejection impulse lasts one frame while real knockback survives.
  • Continuous collision detection. Two fast fireballs can pass through each other between frames. Easel resolves collisions first and then sweeps for time-of-impact, which avoids the wrong-direction sweep Rapier can produce when a body starts the frame touching a wall.

The comparisons are the most useful part. Box2D 2.4 simulates fully and backtracks; Box2D 3.0 dropped dynamic-to-dynamic CCD entirely; Photon Quantum, a professional rollback netcode engine, has none, citing a stateless physics engine as too expensive. Incremental snapshotting is what makes it affordable here.

The transferable idea is that rollback cost should scale with change, not with world size. Treating “unchanged” as a first-class state is what turns a level full of static geometry into a few dozen live objects per frame.