Bean Network Tester

Simule lag e perda de pacotes em jogos

O netcode é escrito em uma conexão local com 1 ms de ping e testado por jogadores no Wi-Fi de um hotel. Isto fecha essa lacuna na sua própria máquina, só no processo do jogo, enquanto o resto do computador continua utilizável.

Comece aqui

Mire no cliente do jogo, dê a ele uma conexão ruim realista e deixe parar sozinho depois de cinco minutos:

BeanNetworkTester.exe --latency 120 --jitter 60 --loss 3 --target mygame.exe --duration 300

Também há uma linha do tempo pronta para isso: overloaded-game-server.json, na pasta scenarios, leva uma conexão à congestão e de volta, para você ver como o cliente lida com os dois sentidos da mudança. Veja cenários no tempo.

Por que um jogo mostra perda e um navegador não

A maior parte do tráfego de jogos é UDP, e o UDP não tem nada para esconder a perda. Uma página web sobre TCP retransmite em silêncio e só demora mais, e por isso um navegador pode parecer bem com 5% de perda enquanto uma partida com os mesmos 5% engasga, volta no tempo e perde a sincronia.

Isso faz de um jogo o lugar honesto para testar perda: o que você define é o que o cliente realmente vive.

O que definir e o que isso procura

ConfiguraçãoTesteO que expõe
Latência80 a 250 msPredição e interpolação. O seu personagem volta para trás depois de um tiro?
Jitter40 a 100 msBuffering. Constantes 200 ms são mais fáceis de esconder que um ping que não para de mexer.
Perda2 a 10%Atualizações de estado ausentes, e se o cliente se recupera ou se desvia.
Picos1 segundo, raramenteA travada que uma troca de torre causa. Geralmente a mais feia.
Link liga e desligaciclo de 10 s, 30% fora do arReconexão e reentrada.

Meça o jitter como a diferença entre o percentil 95 e a mediana, e não como uma média: o jitter mal mexe em uma média, e é por isso que uma execução pode parecer idêntica no papel e jogar diferente.

Comparar dois builds exige uma semente

A perda aleatória torna duas execuções diferentes, então “o build novo parece pior” não é evidência. A mesma semente reproduz a mesma perda e o mesmo jitter, o que transforma uma sensação em uma comparação:

BeanNetworkTester.exe --latency 120 --jitter 60 --loss 5 --seed 42 --target mygame.exe --duration 180

O que ele não consegue fazer

Isto molda o tráfego da sua máquina. Não deixa o servidor lento, não muda o tick rate dele e não põe outros jogadores em uma conexão ruim, então testa o seu cliente contra um link ruim, não o seu servidor sob carga. Para o lado do servidor, você quer teste de carga, e para um lobby cheio de conexões ruins você quer mais de uma máquina.

Próximos passos

Pronto para quebrar a sua própria rede de propósito?

Baixar para Windows