Código líquido: quais são os seus objetivos esperados e máximos de latência e perda de pacotes?

7

Ao criar o código líquido para um videogame, que tipo de metas de latência e taxas de perda de pacotes você cria?

Para ser mais específico, tenho meu código de rede trabalhando na rede local apenas no momento. Planejo usar o WANEM para simular a perda e a latência de pacotes, mas não sei ao certo o que devo usar para valores máximos e médios.

pedregoso
fonte
11
Espero que alguém com mais experiência em rede do que eu converse, mas uma coisa a ter em atenção é a geografia esperada da sua base de jogadores. O requisito de latência para um jogo de festa na LAN é diferente do que é executado por 8 a 16 jogadores aleatórios na Internet, é diferente do seu MMO global hospedado em Boston, que obtém conexões de Taiwan.
Sugiro experimentá-lo com duas ou mais conexões reais à Internet, em vez de usar a simulação com parâmetros adivinhados.
Hendrik Brummermann
@ Joe Wreschnig Sou apenas eu brincando no porão, não há base de jogadores esperada. Eu só estava me perguntando o que seriam alvos realistas a serem almejados.
stonemetal

Respostas:

5

É difícil adivinhar a perda de pacotes, mas provavelmente você deve planejar a latência da Internet de até ~ 750ms, embora a grande maioria esteja abaixo de 500ms. Os maiores outliers são a Austrália <-> pings dos EUA e a Internet via satélite. Dependendo do seu mercado-alvo, talvez você possa ignorá-los. Se você está fazendo coisas para dispositivos móveis, pode ser ainda mais imprevisível. Como um palpite aleatório para menos pacotes, eu diria que planejaria algo entre 1 e 5%, no máximo, geralmente vemos muito menos que isso (~ 0,1% no pior dos momentos) e, geralmente, isso é apenas no Reino Unido <-> Links dos EUA nos horários de pico (pico do Reino Unido). A perda de pacotes em si não é um problema, mas jogue a latência transatlântica na mistura com a retransmissão TCP e você obtém uma conexão muito instável e pode ter problemas ao gerenciar buffers de rede (isto foi para transferências de arquivos,

coderanger
fonte
11
Não sou especialista, mas costumo testar com taxas de perda de pacotes muito piores do que isso; 10-20% no mínimo. Uma vez, eu acidentalmente deixou a packetloss artificial e demoed um jogo com 90% packetloss (ele funcionou perfeitamente);)
Martin
Temos visto casos raros de até 50%, mas não vale a pena testar. Eu acho que o melhor (pior?) Que me lembro foi de um cara que usava wifi de vários prédios em uma base militar na selva hondurenha (que depois passou por satélite para o retorno). ~ 1000ms de latência e 50% de perda de pacotes. Em geral, a janela geralmente impede que o TCP envie muito quando o link fica congestionado, então você apenas vê um aumento na latência. O UDP é outra história, mas você provavelmente não deve usar o UDP para jogos atualmente.
coderanger
2
Eu sempre uso o UDP para jogos, mas isso depende muito do tipo de jogo que você está criando!
Martin
Não, realmente não. Atualmente, o UDP não tem lugar nos jogos. As pessoas parecem pensar que o TCP tem uma sobrecarga maluca quando realmente não acontece, desde que você defina NODELAY.
coderanger
11
@ cododeranger É sobre latência. Às vezes, se um pacote é perdido, você não deseja esperar um tempo inteiro para reenviá-lo! Às vezes, você só quer esquecer o pacote perdido e enviar o próximo pacote de qualquer maneira. Lembre-se, a latência de 100ms é perceptível em um jogo de tiro em ritmo acelerado, e a confiabilidade do TCP pode causar picos de até um segundo.
user253751