The reason the camera feels sluggish and unresponsive is primarily because it uses 3D position interpolation, not ‘mouse smoothing’ per se.
What this means is that the client calculates where the camera is ‘supposed to be’ based on user input, and then the camera moves to that spot over some (short but perceivable) interval of time, usually less than a second, but more than a single rendered frame. This is the behavior that people refer to when they say the camera ‘floats’.
This results in the camera always feeling ‘a little bit behind’ because it is in fact behind. It is always playing catch-up to where the user really wants it to be, except of course when the user is not sending input.
Other games feel more responsive because they do not do this interpolation, but rather calculate where the camera should be, and simply place it there, subject to collision restrictions, which is something the GW2 camera handles horribly, but a mostly separate topic.
There is a time and place for cameras that rubber-band like this, but for a game like GW2 (and I would argue MMOs in general), responsiveness is key, and adding in any kind of interpolation ruins the feeling of responsiveness.
The best way to do camera control for a game like this is to maintain the camera offset from character position in 3D polar coordinates i.e. pitch, yaw, and distance; use these to compute camera world space position every frame, and then perform collision checks on the result and adjust accordingly such that the camera doesn’t clip through the environment. The only interpolation that is OK in this case is interpolation along the vector connecting the camera position with the player position, i.e. animating the distance to/from the player. Everything else will make it feel sluggish.
If you guys (ANet) continue to use a solution that has interpolation built in, I strongly urge you to (1) offer a slider to control the speed of interpolation, giving a higher maximum speed than what is in place currently, and (2) change the interpolation to use an arc around the character rather than linearly interpolating between ‘camera position right now’ and ‘camera destination position’. Using an arc avoids some of the more disconcerting behaviors associated with interpolation, such as swinging in close to the character and then back out during quick turns. All that being said, removing the interpolation entirely is still the best approach.
TL;DR: interpolating camera 3D position bad and makes for laggy feel, don’t do it mmmkay
Kintari | Rintaki | Rin Taki | Kian Tir | Zahinn | Lith <<< Blackgate >>>