한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Libro blanco del lag en juegos › L1 Proceso del juego en el cliente

Cuello de botella al procesar paquetes en el hilo principal Network processing on the main thread

ID de la causa cg-net-mainthread · Responsable principal Desarrollo de cliente (Equipo de desarrollo) · También Desarrollo de servidor (Equipo de desarrollo)

Abrir la ficha interactiva con gráficos y simulaciones →

Si el cliente solo procesa una cantidad fija de paquetes recibidos por frame, cuando llegan muchos de golpe se acumulan y se van pasando una y otra vez al frame siguiente.

Por qué Donde hay mucha gente llegan miles de actualizaciones por segundo → Efecto El hilo principal topa con su límite de procesamiento por frame y no alcanza a leerlas todas → En pantalla Los movimientos de los demás se aplican cada vez más tarde y todos de golpe

Síntomas
Cámara rápida, Input lag
Factores
Detención, Latencia
A quién afecta
Una zona o un canal, Solo yo
Cuándo
Cuando se junta mucha gente
Responsable
Responsable principal Desarrollo de cliente (Equipo de desarrollo) · También Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Cliente: recibir y decodificar en un hilo aparte, fusionar las actualizaciones de posición antiguas de una misma entidad y aplicar solo la más reciente. Servidor: donde hay mucha gente, enviar con menos frecuencia las actualizaciones de los personajes lejanos para reducir el volumen de envío.
Cifras de referencia
Si se acumulan paquetes sin procesar, en pocos segundos ya hay un segundo entero de retraso.
En el gráfico
Sube con la carga · Paquetes recibidos sin procesar, retraso entre recepción y aplicación
Dónde mirar
Registrar en logs cuántos paquetes deja sin procesar el cliente en cada frame y el retraso desde que llega un paquete hasta que se aplica al juego, y verlo junto al número de jugadores cercanos
Se confirma si
Donde hay mucha gente, los paquetes pendientes y el retraso de aplicación no paran de crecer, mientras que en ese mismo momento el ping y el intervalo de envío del servidor son normales
Se descarta si
Si no hay retraso de aplicación pero los paquetes ya llegan tarde, el problema está en la red. Si el tiempo de frame sube mucho: “Carga de renderizado de multitudes”
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego

Fuentes

  1. Actor Priority in Unreal Engine Epic Games
    Cuando falta ancho de banda, no se replican todos los actores cada vez; se priorizan según la distancia al observador y el tiempo desde la última replicación
  2. Replication Graph in Unreal Engine Epic Games
    Los juegos con muchos jugadores conectados y muchos objetos que replicar (MMORPG, etc.) tienen que agruparlos por posición y enviar solo lo necesario para evitar un cuello de botella en la CPU del servidor

Ver también

Misma capa: L1 Proceso del juego en el cliente

Causas de otras capas con el mismo síntoma (Cámara rápida)

Ver la ficha interactiva con gráficos y simulaciones