Quick answer: Fast-moving GameMaker physics objects tunneling through walls or jittering? Box2D’s solver assumes meter-scale objects; a default GM pixels-to-meters of 1:1 makes the world giant.
Bullets pass through thin walls at high speed. The physics world is treating pixels as meters — the bullet at 600 m/s is faster than any sane simulation.
Scale Pixels to Meters
physics_world_create(32);
// 32 pixels per meter32 px/m is a reasonable default for a tile-based 2D game. Box2D becomes stable; CCD (continuous collision) starts working.
Continuous Collision
For bullets / fast projectiles, set phy_bullet = true on the instance. Engages CCD — expensive per frame but no tunneling.
Substepping
Increase the physics step count via physics_world_update_iterations. More steps per frame = smaller dt = less tunneling. Trade-off: CPU cost.
Mass and Velocity
If bodies have unrealistic mass / velocity, the solver struggles. Keep velocities under ~50 m/s in world units; tune mass for stable interactions.
Verifying
Fast bullets hit walls reliably. No tunneling on standard speeds. Physics objects feel solid and stable.
“Physics needs sensible scale. 32 px/m + bullet CCD for fast objects.”
Test with the fastest projectile your game shoots — usually a single edge case that defines the whole physics tuning.