Imaginer, плавности добиваются не этим. Обычно опираются на дельту времени кадра и интеполируют значения, в идеале с последующей корректировкой через кадры.
Т.е. к примеру, у тебя 60 фпс, просчет физики fps\3 =20. Недостающие кадры ты интерполируешь (тупо высчитываешь следующую координату из предыдущей и вектора движения), на ключевом кадре когда произойдет симуляция физики(со смещением времени) сравниваешь текущее интерполируемое значение и просимулированное, в случае различия двигаешь все на просимулированные данные т.к. они корректны и точны. Ошибки будут но они зависят от сложности физики, числа взаимодействующих объектов и фпс физики.
Примерно так оно везде устроено если упрощенно, на самом деле могут еще и уменьшать число фпс физики в зависимости от дальности объекта от камеры и прочие прочие трюки.
По потокам, дроби свой метод update на более мелкие задачи которые можно запустить параллельно. К примеру:
- скайбокс на котором упрощенно двигаются облачка, самолетики и прочее, на геймплей не влияют как и на физики, можно спокойно вынести это в поток
- расчет звуковых симуляций, это не бросится в глаза при неточностях.
Раздербанивать опираясь на то какая у тебя игра именно, и чаще всего в потоки получится вынести очень малую часть от всего объема