Lidando com a latência em jogos em rede

Estou pensando em fazer um jogo em rede. Sou um pouco novo nisso e já encontrei muitos problemas tentando montar um bom plano para calcular a latência e a latência da rede, por isso adoraria ver uma boa literatura sobre o assunto. Vou descrever os métodos que considerei.

Originalmente, enviei a entrada do jogador para o servidor, simulei lá e transmitei alterações no estado do jogo para todos os jogadores. Isso dificultou a trapaça, mas sob alta latência as coisas eram um pouco difíceis de controlar, pois você não vê os resultados de suas próprias ações imediatamente.

Este artigo sobre GamaSutra possui uma solução que economiza largura de banda e faz com que a entrada local apareça suave, simulando também no cliente, mas parece lançar a prova de trapaça pela janela. Além disso, não tenho certeza do que fazer quando os jogadores começam a manipular o ambiente, empurrando pedras e coisas do gênero. Esses objetos anteriormente neutros se tornariam objetos sobre os quais o cliente precisa enviar PDUs, ou talvez vários jogadores façam ao mesmo tempo. De quem PDUs ganharia? Quando os objetos deixariam de ser duplamente rastreados por cada jogador (para comparar com a versão morta)? O Céu proíbe que dois jogadores participem de uma partida de sumô (por exemplo, comece a se empurrar).

Este bit gamedev.net mostra a solução gamasutra como inadequada, mas descreve um método diferente que realmente não corrige meu exemplo colaborativo de empurrar pedras. A maioria das outras coisas que encontrei são específicas para atiradores. Adoraria ver algo mais voltado para jogos que jogam como o SNES Zelda, mas com um pouco mais de física / momento envolvido.

Nota: Não estou perguntando sobre simulação de física aqui - outras bibliotecas têm isso coberto. Apenas estratégias para tornar os jogos suaves e reativos, apesar da latência da rede.

questionAnswers(5)

yourAnswerToTheQuestion