I've developing a small pong-like game for educational purposes and I've reached the point where I'm looking at implementing network gameplay. The idea is that a player can either wait for someone to connect to him (as the host) or he can attempt to connect to someone else (as the client). This means there is no server-arbitrer or other authoritative middleman.
I was looking into what optimizations are usually performed for a smooth experience since latency can cause jitterry movements if not handled properly. I know that client-side prediction is used and read up on it but it seems to me that this is applies in client-server types of multiplayer. Is this true, and if yes why?
Are there any other techniques or tricks that I should look into? The game as you can understand isn't at all complicated and the only movement that might be jitterry is the remote player's paddle movement. Also, although the ball's movement in general is not controlled by the player, it's reaction to a paddle hit depends on where exactly on the paddle the ball landed. This might differ from one client to another. Would prediction for example help in this case?