I used this “change the torso CFrame every render step” method as well, but there seems to be a network interpolation problem with the character parts.
On the client’s screen, it works fine:
However, on other player’s screens, it’s all janky looking:
My guess is that there’s a disagreement on the server as to how your character is rotated. It’s receiving packets that say you’re oriented in the camera’s (mouse-locked) direction, but also receiving packets sent between render steps which say you’re oriented in the movement direction, and the server tries to interpolate between these rotation updates.
It looks like there used to be a way to apply the character lock without needing to fork the camera module,
but it doesn’t work anymore.