Bug na separação de sessões por IP ou dispositivo Session keyed by IP or machine ID
ID da causa pt-session-key · Responsável principal Desenvolvimento do servidor (Equipe de desenvolvimento) · Também envolvidos Desenvolvimento do cliente (Equipe de desenvolvimento)
Se o servidor ou um servidor intermediário distingue as conexões por IP ou ID do dispositivo, dois clientes no mesmo PC (mesmo IP público) são tratados como uma só pessoa.
Por quê Tabela de sessões montada por IP ou por IP + ID do dispositivo → Efeito Os dados do segundo cliente sobrescrevem a primeira sessão ou se misturam com ela → Na tela Em um lado os NPCs ficam invisíveis, e no outro a conexão cai ou chegam dados de outra pessoa
Só um dos clientes no mesmo PC, Mesma casa, Região ou operadora específica
Quando
Logo após login ou manutenção
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: distinguir as conexões por um token de sessão único por conexão, tanto no servidor quanto nos servidores intermediários; corrigir sem falta, porque várias pessoas na mesma casa (atrás do NAT do roteador) e usuários de rede móvel em que a operadora divide um IP entre vários assinantes (CGNAT) têm o mesmo problema. Cliente: usar um token de sessão recebido separadamente por cada cliente aberto.
No gráfico
Alto só em alguns · Sessões simultâneas no mesmo IP público, sessões sobrescritas
Onde olhar
Registrar nos logs do servidor e dos servidores intermediários a chave usada para achar a sessão, o token de sessão e o IP e porta do cliente, e ver se a sessão existente mudou no momento em que chegou a segunda conexão do mesmo IP. Reproduz abrindo dois clientes, um depois do outro, no mesmo PC
Confirma se
No momento em que o segundo cliente se conecta, o endereço ou os dados de personagem da primeira sessão mudam, e outros jogadores atrás do mesmo roteador ou da mesma rede móvel (CGNAT) também têm as mesmas desconexões
Descarta se
Duas sessões do mesmo IP mantidas separadas, com tokens diferentes: a causa é outra. Os dois processos usam a mesma porta local: “Conflito de porta UDP fixa”
Como verificar
Exige logs e métricas do servidor ou do cliente do jogo