Quick answer: Test physics across a range of frame rates because behavior often depends on timestep, watch for tunneling, penetration, and energy explosions, and capture the object states and frame rate behind any glitch. Physics bugs are state-dependent and frame-rate-sensitive, so reproduce them with the captured conditions.

Physics-based games are the most fun to watch break and the most painful to debug. A ragdoll launches into orbit, a car phases through a wall, a stack of crates explodes for no reason, and the clip is hilarious until you realize you have no idea why it happened or how to make it stop. Physics is sensitive to frame rate, timestep, and exact object state in ways that make glitches feel random. QA for physics games is about systematically testing the conditions that cause these failures and capturing the state when they occur.

Why physics is so hard to test

Physics engines integrate motion in discrete steps, and the result depends on the size and timing of those steps. Run the same scenario at a different frame rate and the outcome can change: a jump reaches a different height, a collision resolves differently, an object that was stable starts to jitter. This frame-rate dependence is the root of a huge share of physics bugs.

On top of that, physics is highly sensitive to initial conditions. A tiny difference in position or velocity can blow up into a wildly different result, the classic butterfly effect. This is why a physics glitch can seem impossible to reproduce: the player hit an exact combination of position, velocity, and timing that you are unlikely to recreate by hand without capturing it.

Test across frame rates and timesteps

The single most important physics QA practice is testing at multiple frame rates. Run your game at thirty, sixty, and a high refresh rate, and at artificially low and unstable frame rates, and watch whether physics behavior changes. If your physics is tied to the rendering frame rate rather than a fixed timestep, you will see it immediately.

Use a fixed timestep for physics so behavior is consistent regardless of rendering rate, and test that your fixed-timestep loop handles frame-rate spikes gracefully without spiraling. Many physics bugs that players report as random are actually frame-rate dependent, and you can reproduce them reliably once you test at the frame rate the player was running.

Hunt for tunneling and penetration

Tunneling, where a fast object passes through a wall instead of colliding, is the signature physics bug. It happens when an object moves far enough in a single step to skip past a thin collider entirely. Test with your fastest projectiles and your thinnest walls, because that is exactly the combination where tunneling appears.

Penetration and overlap bugs are the slower cousin: objects that sink into each other and then explode apart as the solver tries to separate them. Test dense stacks and tight spaces where many objects press together, and watch for the jitter or sudden launch that signals the solver is struggling. These conditions are predictable enough to test deliberately rather than waiting to stumble on them.

Capture the state behind a glitch

When a physics glitch occurs, the state that caused it is the position, velocity, and contact information of the involved objects, plus the frame rate at the time. Capture these automatically in your bug reports, because the player can never describe them and they are exactly what you need to reproduce the glitch.

Attach the frame rate and timestep, the transforms and velocities of the relevant rigid bodies, and a short window of recent physics events. A report that a car went through a wall becomes reproducible when you know the car velocity, the wall thickness, and the frame rate, because you can recreate that exact fast-object-thin-wall situation in a test scene.

Setting it up with Bugnet

Add an in-game report option and attach the physics state, frame rate, and relevant object transforms and velocities as custom fields, plus an automatic screenshot of the spectacular moment. Bugnet stores them so a physics glitch arrives with the numeric state behind the visual chaos, not just a funny screenshot.

Enable automatic crash capture too, because some physics failures, an explosion that produces invalid numbers, a solver that diverges, end in a crash with non-finite values. Capturing those with the object state attached points you straight at the body that went numerically unstable, which is often the seed of the whole spectacular failure.

Build deterministic physics tests

The best defense against physics regressions is a suite of deterministic physics tests that run headless at a fixed timestep. Set up a scenario, step the simulation a fixed number of times, and assert the expected outcome. Because you control the timestep, the result is repeatable, and a change that breaks physics behavior fails the test immediately.

Feed your captured glitches into this suite. Each reproducible physics bug becomes a test that recreates the offending conditions and asserts the object behaves correctly, so a tunneling fix or a stability fix cannot silently regress when you touch the physics code later. In a game where physics is the core appeal, that regression safety net is what lets you keep tuning the feel without constantly reintroducing the spectacular failures players love to clip.

Physics glitches look random but obey conditions. Capture the conditions, then recreate them.