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

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

Autoridade do cliente Client-authoritative results

ID da causa sy-client-auth · Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do cliente (Equipe de desenvolvimento)

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

Quando cada um decide o próprio resultado, sua tela fica fluida, mas os resultados divergem da tela dos outros e o jogo fica vulnerável a hacks.

Por quê O cliente decide posição e acerto, e o servidor só repassa → Efeito Dois jogadores dizem que acertaram primeiro, e o servidor não tem como verificar → Na tela O adversário teleporta ou atravessa paredes, “eu acertei, mas não contou”

Sintomas
Teleporte, Ação perdida / rollback
Fatores
Latência
Quem é afetado
Servidor inteiro
Quando
Sempre
Responsável
Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do cliente (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Servidor: validar por conta própria os resultados importantes (acertos etc.), checar velocidade e distância no movimento. Cliente: ao receber um resultado rejeitado ou corrigido pelo servidor, voltar para esse valor.
No gráfico
Sempre alto desde o início · Reports de velocidade de movimento impossível e de acertos conflitantes
Onde olhar
Gravar no servidor a posição e os acertos exatamente como o cliente reportou, calcular a velocidade de movimento pelos reports de posição consecutivos e contar os reports acima da velocidade máxima e os casos de dois jogadores dizendo que acertaram primeiro
Confirma se
O servidor repassa os reports a outros clientes sem validar, e velocidades impossíveis ou reports de acerto conflitantes aparecem de forma constante, seja qual for o patch ou a região
Descarta se
Se o servidor calcula ou valida os resultados por conta própria, a causa é outra. Nesse caso, para o teleporte, verificar perda de pacotes ou o buffer de interpolação
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo

Fontes

  1. Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization (Yahn W. Bernier, GDC 2001) Valve
    Deixar o cliente reportar os resultados só funciona quando dá para confiar no cliente. Pelo risco de hacks, usa-se servidor autoritativo
  2. Peeking into VALORANT's Netcode Riot Games
    Modelo de autoridade do servidor: o servidor nunca confia no estado do jogo visto pelo cliente
  3. Distributed authority topologies (Netcode for GameObjects 2.5) Unity
    Dividir a autoridade com os clientes facilita a trapaça e elimina a simulação única que governa todas as entidades

Veja também

Mesma camada: Design de sincronização

Mesmo sintoma (Teleporte) em outras camadas

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