Em um mecanismo de física que estou desenvolvendo (para aprender) usando o love-2d , implementei resoluções de colisão desta maneira:
FixedUpdate(dt) // I use fixed timestep
foreach collide c1 in allNotStaticColliders
c1.integartePhysic // i.e. apply gravitational force..
foreach collider c2 "near" c1 // "near"= I use spatial hashing
if collide(c1,c2)
resolve collision (c1,c2) // the heavy operation
collison callbacks c1
collison callbacks c2
...
Como você pode ver no final da animação gif, há uma deterioração do FPS quando todos os colisores estão quase aterrados sobre um objeto estático.
Isso ocorre porque o número de resoluções de colisão aumenta à medida que os objetos passam mais tempo tocando enquanto se acomodam. No entanto, muitos dos cálculos são "inúteis" porque os objetos já se estabeleceram em posições estáveis um contra o outro.
Qual é a melhor prática (espero que não exija um diploma de física) para evitar essas detecções de colisão "inúteis"?
Editar: dicas DMGregory aceitas e chegar a esse resultado (ainda não é o ideal)
(Vermelho = estático, Azul = ativo, Verde = em suspensão)