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

Guia do Lag em Jogos › Design de sincronização

Janela de tempo curta consumida pelo ping Timing window too short for latency + reaction

ID da causa sy-short-window · Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do cliente (Equipe de desenvolvimento), Infraestrutura de servidores (Equipe de infraestrutura)

Abrir o card interativo, com figuras e simulações →

Quando o tempo para reagir é curto, como em esquiva, parry ou defesa, o ping consome esse tempo e surgem ataques impossíveis de evitar.

Por quê Janelas de tempo curtas, como um aviso de ataque do boss de 0,5 s ou uma janela de parry de 0,2 s → Efeito Você vê o aviso tarde (latência servidor → cliente + interpolação), e seu input também chega tarde (latência cliente → servidor + espera do tick) → Na tela Você desviou, mas levou o golpe; o parry não saiu

Sintomas
Ação perdida / rollback, Input lag
Fatores
Latência
Quem é afetado
Só eu, Só um recurso específico
Quando
Ao fazer ações específicas
Responsável
Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do cliente (Equipe de desenvolvimento), Infraestrutura de servidores (Equipe de infraestrutura)
O que fazer (Equipe de desenvolvimento)
Servidor: agendar o aviso de ataque pelo horário do servidor e enviá-lo antes, alongar a janela de tempo na medida do ping (compensação de lag). Cliente: reproduzir o aviso recebido no horário agendado, pelo relógio do servidor.
O que fazer (Equipe de infraestrutura)
Instalar servidores perto das regiões com mais jogadores (servidores regionais) para reduzir o próprio ping.
Números de referência
Com ping de 150 ms e interpolação de 100 ms, o aviso leva cerca de 0,18 s para aparecer na sua tela e seu input leva cerca de 0,1 s para chegar ao servidor. Somando a reação humana de 0,25 s, um aviso de 0,5 s fica quase impossível.
No gráfico
Alto só em alguns · Taxa de falha de esquiva e parry (por faixa de ping)
Onde olhar
Registrar no log do servidor o início e o fim da janela de tempo, o horário de chegada do input do jogador ao servidor e o RTT dele, e separar a taxa de falha por faixa de ping (ex.: de 50 em 50 ms)
Confirma se
Quanto maior a faixa de ping, claramente maior a taxa de falha, e os inputs que falharam chegam um pouco depois do fim da janela (dentro de RTT + tempo de interpolação)
Descarta se
Taxa de falha parecida em todas as faixas de ping: problema de dificuldade do padrão de ataque. Input que chegou dentro da janela e ainda assim conta como falha: verificar o código de decisão ou a validação do servidor
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo

Fontes

  1. Factors influencing the latency of simple reaction time (Frontiers in Human Neuroscience, 2015) Frontiers
    Tempo de reação simples médio de cerca de 231 ms (213 ms corrigindo o atraso do equipamento); grandes estudos recentes ficam entre 233 e 400 ms
  2. Latency and Player Actions in Online Games (Communications of the ACM, 2006) ACM
    Quanto mais precisa a ação e mais curto o prazo, maior a sensibilidade à latência (limites em cerca de 100 ms na primeira pessoa, cerca de 500 ms na terceira pessoa e cerca de 1.000 ms na visão onisciente)
  3. NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
    Método que agenda eventos pelo horário do servidor (ServerTime) para que todos os clientes os reproduzam no mesmo instante

Veja também

Mesma camada: Design de sincronização

Mesmo sintoma (Ação perdida / rollback) em outras camadas

Ver o card interativo, com figuras e simulações