Eu tenho os fundamentos dos soquetes TCP, comunicação UDP etc., mas não consigo encontrar muito sobre como aplicá-los a um ambiente de jogo em tempo real.
Eu tenho um clone Pong, com 4 jogadores, e preciso sincronizar as posições de remo entre os três clientes e o servidor (o servidor é o quarto jogador). Atualmente, uso o UDP para enviar atualizações em tempo real (movimentos de remo) e o TCP para configurar o lobby do jogo etc.
É uma coisa ruim estar enviando spam enormes quantidades de tráfego UDP? Devo procurar algo como o DCCP por seus recursos de congestionamento? Ou isso não é realmente um problema com um projeto de pequena escala como esse?
Quando as mensagens de sincronização devem ser enviadas entre cliente / servidor? Atualmente, o servidor está enviando spam pacotes UDP com o estado atual do jogo o mais rápido possível, e os clientes enviam sua posição de remo para o servidor o mais rápido possível. Esse é o melhor jeito de fazer isso? Há algum tipo de atraso que devo adicionar para que as mensagens sejam enviadas uma vez a cada X milissegundos ou devo enviar apenas mensagens à medida que os eventos acontecem? (por exemplo, velocidade da pá alterada devido à entrada do usuário)
Seria melhor fazer com que os clientes comuniquem suas posições de remo entre si, ponto a ponto?
Estou fazendo essas perguntas no contexto de Pong, mas também estou interessado em saber como esses problemas seriam superados em outros jogos ou soluções generalizadas.