I'm a little indecisive when choosing how to render the gamestate on the client.
I can forward extrapolate the other clients to where they would be on the server, but then things like playing animations would need to be forwarded to compensate. As a result, the animation would "jump" into a frame; such that if the latency was half a second and the animation framerate was 60 frames per second, 30 frames would be skipped.
How should I deal with the timing issues?
- Extrapolate forwards by the downstream latency to get the current position of the object
- Render at time of receipt but still run client itself ahead using prediction
Forgetting about the jitter buffer, I'm concerned about hit detection; The first option would potentially be out by some margin, but the latter option would technically be incorrect as it was aiming at the client's old positions. Any thoughts?