Physics Body & Solver General Settings: Finding the Sweet Spot Between Performance and Jiggle
Hi everyone,
Today I’d like to share some tips on how I configured the physics settings for the best balance between performance and visual results. Of course, this is highly subjective — tastes may vary. :)
The physics system is one of those features where “more accurate” does not always mean “better looking”. In fact, pushing the simulation too hard can sometimes make the body look overly stiff, unstable, or noisy. The goal is not to create a perfect engineering simulation, but to get something that feels responsive, soft, stable, and believable during gameplay.
Soft Body Settings
The most important values are Stiffness, Damping, Mass, and Incompressibility.
Stiffness controls how strongly the simulated body tries to return to its original shape.
Higher stiffness makes the body feel tighter and more elastic, while lower stiffness creates a softer and heavier look. If stiffness is too high, the simulation can start to look nervous or twitchy, especially with fewer solver iterations.
Damping reduces motion over time.
This is useful to prevent endless bouncing or wobbling. Too little damping can make the body feel like jelly, while too much damping removes most of the secondary motion and makes the simulation feel dead.
Mass affects how heavy the simulated parts feel.
Higher mass usually makes the movement slower and heavier, but it can also require stronger constraints or more solver work to remain stable.
Incompressibility controls how much volume the soft body tries to preserve.
Higher values help prevent the mesh from collapsing too much.
Solver Iterations and Sub Steps
The solver settings have the biggest impact on performance.
Iteration Count determines how often the solver tries to satisfy the constraints per simulation update.
More iterations usually means a more stable and accurate result, but also more CPU cost. Fewer iterations improve performance significantly, but the simulation becomes softer, less stable, and more wobbly.
For my current setup, I intentionally keep the iteration count low. This gives a softer look and saves a lot of performance, which is important because the simulation needs to run in real time during gameplay.
Sub Steps split a simulation frame into smaller internal steps.
This can improve stability, especially when fast movement or strong forces are involved. However, sub steps are also expensive because the solver has to run multiple times per frame.
A good rule of thumb is:
More iterations = stronger and more stable constraints
More sub steps = smoother and more stable motion over time
Fewer iterations/sub steps = better performance, but more wobble
For my game, I prefer a slightly imperfect simulation if it means the performance stays high.
Fixed Timestep
The Fixed Timestep option is very important for consistency.
Without a fixed timestep, the physics simulation can behave differently depending on the frame rate. This can cause the body physics to look different on different PCs, or even change when the GPU load changes.
With a fixed timestep enabled, the simulation uses a consistent time interval. This makes the result more predictable and easier to tune.
The Timestep value itself is another important trade-off. In my setup, a slightly higher timestep helps reduce high-frequency wobbling and makes the motion feel calmer. However, setting it too high can make the simulation less responsive or cause it to miss small details.
So the timestep is not simply a “quality” slider. It changes the behavior of the simulation. Lower values are not always visually better.
Threaded Advance
Threaded Advance can improve performance by running parts of the simulation asynchronously. This is especially useful when the physics system becomes more complex.
The downside is that threaded simulation can sometimes make debugging harder, because timing-related issues are more difficult to reproduce. Still, for normal gameplay, it is usually worth enabling if the result remains stable.
Gravity
Gravity can be enabled or disabled depending on the desired look.
For soft body character physics, gravity is not always necessary. Sometimes gravity makes the simulated parts sag too much or creates motion that looks less controlled. In many cases, the animation itself already provides enough movement, and the soft body simulation only needs to add secondary motion on top.
That is why I treat gravity as an artistic option rather than a physically mandatory setting.
My Current Goal
My current goal is not maximum physical accuracy. The goal is:
stable enough to avoid broken deformation
soft enough to look natural
cheap enough to run during gameplay
responsive enough to react to movement and interaction
The best settings are always a compromise. Increasing quality settings is easy, but keeping the result stable and performant is the real challenge.
For now, I am using relatively low solver settings because they provide the best trade-off for my current build. The result is not physically perfect, but it gives a nice soft-body effect without destroying the frame rate.
As always, these settings may change over time as I continue improving the physics system.
