ID da causa hn-nat · Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do servidor (Equipe de desenvolvimento)
O roteador apaga da tabela NAT as conexões ociosas, sem tráfego por um tempo. É uma causa comum de a conexão cair no instante em que o jogador volta a se mexer depois de ficar parado.
Por quê O roteador registra a conexão “dispositivo de dentro ↔ servidor de fora” na tabela NAT (tabela de tradução de endereços) → Efeito Sem pacotes por um tempo, a entrada é apagada da tabela (no UDP, em geral 30–120 s) → Na tela Os pacotes do servidor não conseguem entrar na casa, e a conexão cai
Responsável principal Desenvolvimento do cliente (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do servidor (Equipe de desenvolvimento)
O que fazer (Equipe de desenvolvimento)
Cliente: enviar heartbeats em intervalo de no máximo metade do menor timeout de inatividade (o mapeamento UDP só é renovado com certeza por pacotes que saem de dentro da casa, por isso quem envia é o cliente), reconectar automaticamente se cair. Servidor: responder aos heartbeats, encerrar a conexão por conta própria se ficar um tempo sem recebê-los e, mesmo que o mapeamento seja apagado e o endereço e a porta externos mudem, confirmar pelo token de sessão (o código de confirmação recebido na conexão) que é o mesmo jogador e retomar a sessão.
No gráfico
Queda de conexões em massa · Desconexões (timeout de heartbeat), tempo ocioso antes da queda
Onde olhar
Reunir os motivos de desconexão no servidor e o tempo decorrido desde o último pacote trocado naquela conexão antes da queda (tempo ocioso) e ver a distribuição. Para testar, aumentar o intervalo entre pacotes UDP para 30 s, 60 s e 120 s e medir em qual intervalo as respostas param
Confirma se
Só caem conexões que estavam paradas, e o tempo ocioso se concentra logo acima de um valor específico (algo entre 30 e 120 s). Com heartbeats em intervalo menor que esse, o problema some
Descarta se
Cai mesmo em movimento: aponta para a conexão ou a rota. Concentrado em valores curtos só em certa operadora móvel: “IP compartilhado pela operadora (CGNAT)”
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo