Looking for some advice on implementing a first person shooter style camera in a 3d engine. I have a working solution, but I'm starting to think I may have implemented this in a weird way. Currently, I am utilizing a fixed timestep loop and interpolating my camera translation/ rotation / scale.
The translation seems fine, but it's the rotation that's bothering me. It seems that fixed timestep updates and interpolation of rotations yields an unnatural feel when rotating via the mouse. You can feel when you drag the mouse to look around, that something's off like there's either a delay, or that the screen's not exactly where you'd think it would be. The lower you set the fixed timestep, the more apparent this becomes.
My first thought to resolve this was to simply update the camera outside of the fixed timestep loop, however the dilemma I'm facing is that the game this engine will be utilized for requires that all updates happen within the fixed loop so inputs can produce the exact same results across multiple clients.
With that said, how do other games / engines handle this situation (counter strike would be a good example as the mouse input feels very immediate, but the game is processing within a fixed timestep loop)?
I suppose one solution could be to update the camera outside the fixed timestep loop, then track the fixed translation / rotation, using those values for the logical updates, then check every so often that the camera's translation / rotation is not way off from the actual logical translation / rotation…?
Open to any / all suggestions. Just trying to figure out what the best way is to handle this situation.