Couldn't find much on this topic online, so here we go:
Suppose you have a game like rocket league. I've never played the game, but I've seen videos of it being played. It's really smooth. I'm gonna go ahead and assume that each client is predicting the ball and every other player in the game. The question is, how do they get it so smooth?
If you're predicting a player's car to be turning right, but it's actually turning left in that time, surely you'd have some pretty jarring corrections right? The only way I could think of solving this problem is by buffering the states the same as we do with remote entity interpolation. That way the visual car is going to lag behind the actual real time predicted physics car to provide some extra smoothing and maybe insert some extra artificial states in between, if the correction is too large. To make myself extra clear, I'm not talking about interpolating between the last/current predicted state. I'm talking about actually keeping a longer buffer so that I can insert artificial states halfway between the predicted position and the corrected position if they're too big of difference. And then interpolate normally at the framerate.
I look forward to reading the responses.
Edit: After thinking about this for a while, maybe I was completely wrong in my text above. I think I'm overestimating the amount of misprediction that can happen from a car turning it's wheels. Perhaps interpolating between last and current simulated states @ the tick accumulation % might be the only way to do it. If the visual is lagging behind too much like I originally wrote, that kinda just defeats the purpose of predicting other clients in the first place.