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

Libro blanco del lag en juegos › L9 Proceso del juego en el servidor

Explosión del cálculo de visibilidad (AOI, N²) Area-of-interest explosion

ID de la causa sp-aoi · Responsable principal Desarrollo de servidor (Equipo de desarrollo)

Abrir la ficha interactiva con gráficos y simulaciones →

Si se compara a todos con todos para saber quién puede ver a quién, cuando el número de jugadores se multiplica por 10, el cálculo se multiplica por 100.

Por qué Se compara la distancia entre todos los personajes, o, aun dividiendo el mapa en una cuadrícula, cientos de jugadores se juntan cerca de una misma celda → Efecto Con 100 jugadores, unas 10,000 comparaciones; con 1,000, alrededor de 1 millón → En pantalla En lugares abarrotados, como un world boss o un asedio, el tick se dispara: cámara lenta y tirones

Síntomas
Cámara lenta, Tirones
Factores
Detención
A quién afecta
Una zona o un canal, Todo el servidor
Cuándo
Cuando se junta mucha gente
Responsable
Responsable principal Desarrollo de servidor (Equipo de desarrollo)
Tareas (Equipo de desarrollo)
Dividir el mapa en cuadrículas o sectores y comparar solo lo cercano, actualizar con menos frecuencia lo que está lejos, poner un tope a los jugadores que ve cada uno.
Cifras de referencia
Si cada par de jugadores cuesta 0.1 µs (una diezmillonésima de segundo) entre la comparación de distancia y la actualización de las listas de visibles y no visibles, con 1,000 jugadores (cerca de 1 millón de pares) un tick tarda 100 ms. Es el doble del presupuesto de 20 ticks (50 ms).
En el gráfico
Sube con la carga · Tiempo de tick del servidor, jugadores reunidos en un mismo lugar
Dónde mirar
Jugadores y tiempo de tick por zona y canal en el mismo gráfico, y el tiempo del tick dedicado al cálculo de visibilidad, medido aparte. Si no se mide aparte, peso de CPU por función del proceso del juego con perf top -p
Se confirma si
Cuando se duplican los jugadores reunidos en un lugar, el tiempo de tick casi se cuadruplica, y las funciones de visibilidad y distancia se llevan la mayor parte del tiempo de CPU
Se descarta si
Si el tiempo de tick crece en proporción a los jugadores o pesan mucho las funciones de envío y serialización, apunta a “Explosión de broadcast” o a “Costo de serialización y compresión”
Se verifica con
Requiere logs y métricas del servidor o el cliente del juego

Fuentes

  1. Comparing Interest Management Algorithms for Massively Multiplayer Games ACM
    Artículo de NetGames 2006 (versión pública de los autores). Medir la distancia de todos los pares no escala al aumentar los jugadores; con una cuadrícula de celdas cuadradas, solo se revisan las 9 celdas de alrededor
  2. Replication Graph in Unreal Engine Epic Games
    El método básico, que evalúa todas las conexiones para cada actor, es un cuello de botella de CPU en el servidor con muchos jugadores y actores; los MMORPG y juegos similares dividen el mundo en una cuadrícula y reutilizan las listas de cada celda
  3. perf-top(1) — Linux manual page perf
    Muestra en tiempo real el peso de uso de CPU por función (símbolo) de un proceso (-p) o hilo (-t) en ejecución

Ver también

Misma capa: L9 Proceso del juego en el servidor

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

Ver la ficha interactiva con gráficos y simulaciones