I have been reading about client-side prediction lately and I have been thinking of ways to implement it into my multiplayer game. I think I have a pretty good understanding of client-side prediction but I am a bit confused of how packet loss will affect it.
For example, say the client moves left. The client moves left on its side and also sends a packet to the server. If the server received this packet, it would see it was a valid move and send a packet back validating the clients decision. But if the packet didn't make it, the server would not move left and if the client moves left again their move will seem invalid to the server, giving the client a choppy experience.
So my question is how is client-side prediction implemented without this problem? Thanks for your help.