Can someone explain how unity calculates forces because this just doesn't make sense.

Even with all units being generic, forces should still be calculated using the proper formulas, but unity seems to just throw logic out the window and use made up crap to calculate forces.

with a gravity of -10, I took a box (call it boxA) of mass 1 attached with a fixed joint to a box (call it boxB) fixed in space, i set the break force to 10, and slowly increased the mass of boxA until the joint broke. oddly enough a mass of ~16.0802 was needed to break to joint, to add to the strangeness, the reported breakforce (via onjointbreak) was an insane number in the billions (something like 1.065353E+09). This just doesn’t make sense, unless that huge number is measured in microns or something it just doesn’t make sense…

I know my physics, and this is just … wtf?

The reason for the late break is the forcemode, which is ForceMode.Force. This means the rigidbody gets accellerated over time rather than instantly. The joint breaks are made for explosion like forces rather than gradual ones.

I tested it myself and I was able to increase the mass to about 50, which matches my physics frame rate. When I applied forces via script using AddForce(*, ForceMode.Impulse) it worked like you would expect it.

In real life physics the force is mass time change of velocity over time. You calculate it for an infinitesial small time step. In computer physics however this is generally impossible. The smalles fraction of time we could deal with in unity is one (physics) frame. However it seems like the joints have been tweaked for a timestep of one second. Else the joint break was framerate dependant which is to avoid whenever possible.

For the debug message: I got the same thing even if I applied a force of 14 manually. I suggest you file a bug report for this one.