Recently I started a side project called Solver2D https://github.com/erincatto/solver2d. The idea is to create a platform for prototyping and comparing many different 2D rigid body solvers. So far there are 8 solvers including PGS, TGS, NGS, and XPBD. I've created many tests that push these solvers to their limits. Read about it here https://box2d.org/posts/2024/02/solver2d/ and see the solvers compared here https://www.youtube.com/watch?v=sKHf_o_UCzI
GitHub - erincatto/solver2d: A project for testing rigid body solver algorithms

A project for testing rigid body solver algorithms - GitHub - erincatto/solver2d: A project for testing rigid body solver algorithms

GitHub

@erin_catto Hmm. I had dismissed soft constraints as being a coat of paint on penalty forces. I suppose they are in a way, but they seem to have a number of nice properties anyway.

On the topic of XPBD, isn't one of the main reasons it exists to only operate on positions, removing the possibility of getting the position and velocity out of sync? I don't disagree that XPBD has it's issues, but if you are storing velocities or delta positions directly it makes it a bit unremarkable?

@slembcke soft constraints can act as a low-pass filter for sub-stepping noise/energy. Direct solvers use regularization, which is similar to constraint softness, to deal with over-constrained problems. So they seem like a generally good thing.

On XPBD, the paper I'm following keeps the velocity and position separate. When there is collision overlap, delta positions can imply huge velocities that are not meaningful.