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

Guia do Lag em Jogos › Problemas que só afetam alguns

Limitação de processamento da janela em segundo plano Background window throttling

ID da causa pt-background · Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento) · Também envolvidos Externo (Externo)

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

Em um cliente que está em janela em segundo plano, o jogo, a engine e o SO reduzem frames e processamento. Os pacotes recebidos não são processados a tempo e acumulam ou estouram o buffer.

Por quê Limite de frames em segundo plano nas opções do jogo ou no driver de vídeo (ex.: o driver da NVIDIA permite escolher de 20 a 200 por segundo), economia de energia, configuração da engine que pausa em segundo plano. O SO também prioriza CPU e GPU para a janela em primeiro plano → Efeito Menos pacotes processados por frame, a fila acumula, e quando o buffer de recepção estoura os pacotes são descartados → Na tela Ao trazer a janela para a frente, tudo aparece de uma vez, ou alguns NPCs nunca aparecem

Sintomas
Invisível / entidade fantasma, Avanço rápido, Desconexão
Fatores
Paralisação, Perda de pacotes
Quem é afetado
Só um dos clientes no mesmo PC
Quando
Depois de ficar parado, Sempre
Responsável
Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento) · Também envolvidos Externo (Externo)
O que fazer (Equipe de desenvolvimento)
Manter a recepção de rede em uma thread separada do game loop, garantir uma vazão mínima de processamento mesmo em segundo plano, ligar a opção de execução em segundo plano da engine (no Unity, runInBackground).
O que fazer (Externo)
Orientar os jogadores a desligar o limite de frames em segundo plano do driver de vídeo e o modo de economia de energia do PC.
Números de referência
No Unity, com a opção runInBackground desligada, o game loop para no instante em que a janela perde o foco. Se a recepção acontece só nesse loop, nenhum pacote é processado nesse tempo.
No gráfico
Lacuna e depois tudo junto · Intervalo entre frames do cliente, pacotes processados por frame
Onde olhar
No mesmo PC, deixar uma janela na frente e outra atrás e comparar trocando os papéis. Medir o intervalo entre frames dos dois processos com o PresentMon e, com logs do jogo, ver o estado de foco da janela e os pacotes processados por frame
Confirma se
Só em segundo plano o intervalo entre frames aumenta muito (com limite do driver, achata no intervalo correspondente ao número de frames configurado) ou o processamento para, e ao trocar as janelas o problema passa para o outro cliente
Descarta se
Acontece igual na janela da frente: a causa não é o limite em segundo plano. Sempre o mesmo cliente com problema, seja qual for a posição da janela: opções de exibição ou versão diferentes
Como verificar
Verificação no ambiente do jogador

Fontes

  1. Application.runInBackground Unity
    O padrão de runInBackground é false, e nesse caso o app pausa em segundo plano
  2. Manage 3D Settings (reference) — NVIDIA Control Panel Help NVIDIA
    Background Application Max Frame Rate: limita o FPS máximo de jogos em segundo plano a um valor entre 20 e 200
  3. Priority Boosts Microsoft
    O Windows eleva a prioridade do processo da janela em primeiro plano acima da dos processos em segundo plano
  4. PresentMon README Intel
    Ferramenta que coleta, por app, o tempo de frame de CPU, GPU e tela de apps gráficos no Windows

Veja também

Mesma camada: Problemas que só afetam alguns

Mesmo sintoma (Invisível / entidade fantasma) em outras camadas

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