Getting Your Physics Playable Without Breaking Everything
Most indie devs waste three weeks on physics systems before they ever ship a single level. I ran into this problem firsthand when I was building a platformer that used Unity's built-in Rigidbody system. The collision detection was fine on a demo scene with ten objects, but once I had over two hundred entities on screen with procedural generation kicking in, the frame rate collapsed. The issue wasn't the physics itself, it was how the engine scheduled all those continuous updates. That's where a Physics Gameplay Quick workflow becomes essential. It's not one tool or plugin, it's a set of habits and shortcuts I've collected over years of shipping physics-heavy games. Here's how it actually works in practice.
Physics Gameplay Quick: The Short-Cuts That Matter
Step one is stopping the habit of using real-time physics for everything. The default setting in Unity or Unreal is to simulate every Rigidbody every frame at the main timestep. For a platformer, you don't need sub-stepping on your enemy AI or static props. You only need precise continuous collision detection on the player character and a handful of moving platforms that interact with the world in complex ways. Everything else can run on discrete checks, and a lot of that can skip entirely. I learned this the hard way with a top-down game where the player could push crates around. Every crate had a full Rigidbody with continuous collision. The scene had roughly sixty crates active at once. The CPU hit 40 percent just on the physics update loop. My fix was to switch all crates to a simple AABB overlap check that only ran when the player was within a three-meter radius. The physics for the player character stayed full fidelity. The rest became a lazy evaluation system. Frame time dropped from 18 milliseconds to about four. That's not a typo. That's how much unnecessary simulation cost you.
Simplifying Collision Shapes
Box colliders are cheap. Sphere colliders are even cheaper. Capsule colliders are fine for characters but expensive if you're spawning dozens of them. The most expensive primitive by far is the mesh collider, which should basically never be used for anything that moves. If you're getting poor performance and your objects have complex geometry, the first thing to check is whether you're using mesh colliders where a box or sphere would do ninety-five percent of the job. Another thing nobody tells you early on: convex mesh colliders are acceptable for dynamic objects, but they still carry a significant cost compared to primitives. I once spent two days debugging a jittery vehicle suspension system only to realize the wheels had convex hulls instead of spheres. Swapping them out fixed the instability and improved the framerate at the same time. Convex hulls force the physics engine to compute separating axis theorem tests instead of using optimized sphere intersection math.
Get the Full Details

The Fixed Timestep Problem
Every major game engine defaults to a fixed timestep for physics. That's usually set to fifty hertz, meaning the physics solver runs twenty times per second regardless of your render framerate. This creates a mismatch. When your game runs at sixty frames per second, the physics update fires between two rendered frames, and the engine has to interpolate positions. This is usually fine. When your game drops to thirty frames per second, physics updates twice per frame, and you start getting tunneling artifacts where fast objects pass through walls. The workaround I use is to decouple the physics timestep from the render loop in custom movement scripts. Instead of relying on the engine's built-in physics interpolation for player controllers, I do explicit position corrections after each physics tick. It means writing a bit more code for character movement, but it eliminates the sliding stutter that happens when physics and rendering get out of sync. I apply this pattern to every character controller I build. It took me about a day to set up properly on my first project, and it saved me from having to rewrite the whole system six months later.
When to Skip Physics Altogether
This is the most important point and the one most beginners miss. You don't need physics simulation for everything that moves on screen. If an object follows a predictable arc or slides along a surface at constant velocity, a kinematic animation or a simple LERP does the job with zero solver overhead. I've replaced entire particle systems that were driven by physics joints with scripted trajectories. The result looks identical to the player. The CPU cost went to near zero. Pre-baked ragdolls are another good example. If you need a character to fall over when defeated, don't activate the full ragdoll at runtime. Pre-bake a few animation clips covering different fall directions and play one based on the impact angle. You get the visual result without the constraint solver running on twenty bones every frame. I used this technique in a beat-em-up that had simultaneous ragdoll effects on screen. With full physics active, the game choked on anything beyond four enemies. With pre-baked clips, we could run twelve or more without a hiccup.
Profiling Before Optimizing
The biggest mistake people make is optimizing the wrong thing. Open your profiler and look at where the time actually goes. In Unity, the Physics Module shows you per-frame collision queries, solver steps, and constraint resolution time. In Unreal, the Stat Phys command gives you similar breakdowns. Most of the time you'll find that the bottleneck is not the number of objects but the number of collision layers that are configured to check against each other. Every physics layer combination that's enabled creates potential overlap checks, and the engine has to evaluate them all. I cut my physics overhead dramatically on a recent project by reducing the collision matrix from twenty active layer combinations down to six. I had previously enabled collision checking on nearly every pair of layers because I was too cautious about objects passing through each other. The result was the engine was doing thousands of unnecessary overlap tests per frame. After pruning the matrix and accepting that some obscure interaction cases would need manual handling, the physics update time dropped by about sixty percent with zero visible change to the gameplay.

Practical Rules of Thumb
Use discrete collision detection for anything moving slower than roughly ten meters per second at sixty frames per second. Use continuous collision detection only for fast-moving objects or objects where tunneling would break gameplay. Disable gravity on static props. Set the sleep threshold appropriately so objects that aren't being acted upon actually go to sleep and stop consuming solver cycles. And never, ever use FixedUpdate for anything that isn't directly related to physics simulation. Input, UI updates, and game logic should all run in the normal update loop. A Physics Gameplay Quick approach is really about making intentional choices about where to spend your computational budget. You can't optimize what you haven't measured, and you can't measure what you haven't profiled. Start with a profiler, find the actual bottleneck, and apply the cheapest fix that addresses it. More often than not, the answer is simpler than you expect and involves removing something rather than adding it.