Bean Network Tester

Simular lag y pérdida de paquetes en juegos

El netcode se escribe en una conexión local con 1 ms de ping y lo prueban jugadores con el Wi-Fi de un hotel. Esto cierra esa brecha en tu propia máquina, solo en el proceso del juego, mientras el resto del sistema sigue siendo utilizable.

Empieza aquí

Apunta al cliente del juego, dale una mala conexión realista y deja que se detenga solo a los cinco minutos:

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

También hay una línea de tiempo lista para esto: overloaded-game-server.json, en la carpeta scenarios, lleva una conexión a la congestión y de vuelta, para que veas cómo gestiona el cliente los dos sentidos del cambio. Consulta escenarios temporales.

Por qué un juego muestra pérdida y un navegador no

La mayor parte del tráfico de juegos es UDP, y UDP no tiene nada tras lo que esconder la pérdida. Una página web sobre TCP retransmite en silencio y solo tarda más, por eso un navegador puede sentirse bien con un 5 % de pérdida mientras una partida con ese mismo 5 % da tirones, retrocede y se desincroniza.

Eso convierte a un juego en el lugar honesto para probar la pérdida: lo que ajustas es lo que el cliente experimenta de verdad.

Qué ajustar y qué pone a prueba

AjustePruebaQué deja al descubierto
Latencia80 a 250 msPredicción e interpolación. ¿Tu personaje retrocede después de un disparo?
Jitter40 a 100 msAlmacenamiento en búfer. Unos 200 ms estables se disimulan mejor que un ping que no deja de moverse.
Pérdida2 a 10 %Actualizaciones de estado perdidas, y si el cliente se recupera o se desvía.
Picos1 segundo, rara vezLa parada que causa un traspaso entre antenas. Normalmente la más fea.
Enlace que va y vieneciclo de 10 s, 30 % caídoReconexión y reincorporación.

Mide el jitter como la diferencia entre el percentil 95 y la mediana, y no como un promedio: el jitter apenas mueve un promedio, y por eso una ejecución puede parecer idéntica sobre el papel y jugarse de otra manera.

Comparar dos compilaciones necesita una semilla

La pérdida aleatoria hace distintas dos ejecuciones, así que «la compilación nueva se siente peor» no es una prueba. La misma semilla reproduce la misma pérdida y el mismo jitter, y eso convierte una sensación en una comparación:

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

Lo que no puede hacer

Esto modela el tráfico de tu máquina. No ralentiza el servidor, no cambia su tick rate y no pone a otros jugadores en una mala conexión, así que prueba tu cliente frente a un mal enlace, no tu servidor bajo carga. Para el lado del servidor necesitas pruebas de carga, y para una sala llena de malas conexiones necesitas más de una máquina.

Siguiente

¿Listo para romper tu propia red a propósito?

Descargar para Windows