Quick answer: High velocity over-stresses the solver. Enable Projection on the constraint, raise solver iterations, enable sub-stepping, and clamp max velocity.
A swinging chain made of physics constraints explodes when the player launches it fast. The solver can’t keep the joints together at that speed.
Enable Projection
On the Physics Constraint: under Projection, enable it and set Linear/Angular Tolerance. Projection snaps drifted bodies back toward the constraint — a stability backstop when the solver can’t fully resolve.
Raise Solver Iterations
Project Settings → Physics, or per-body: increase Position and Velocity solver iteration counts. More iterations = better constraint resolution at the cost of CPU.
Enable Sub-Stepping
Project Settings → Physics → Substepping. With a Max Substep Delta Time around 1/120s, fast motion is simulated in smaller steps — constraints stay coherent.
Clamp Velocity
void AChainLink::Tick(float Dt)
{
FVector V = Mesh->GetPhysicsLinearVelocity();
if (V.SizeSquared() > FMath::Square(MaxSpeed))
{
Mesh->SetPhysicsLinearVelocity(V.GetClampedToMaxSize(MaxSpeed));
}
}
A hard cap prevents the runaway energy that blows constraints apart.
Mass Ratios
Constraints between bodies with extreme mass ratios (1:1000) are unstable. Keep linked bodies within ~1:10 mass ratio.
Verifying
Launch the chain hard. It swings and settles without exploding. Joints hold. Profile the physics cost — sub-stepping is the main expense; tune the substep cap.
“High velocity breaks constraints. Projection, iterations, sub-stepping, and a velocity cap stabilize them.”
For ropes and chains specifically, the Cable Component or a custom verlet solver is often more stable than a chain of rigid-body constraints.