Reconexão
Resumo
Define o que acontece quando um jogador perde conexão durante uma partida. Premissa: o Conduta é um jogo de leitura social com partidas curtas; fazer kick imediato quebra a partida para todos, então a regra é dar uma janela curta para o jogador voltar com tudo no lugar — voto, conduta, anotações, estado de habilidades, identidade. A partida não pausa e a votação segue em andamento (pass-through), porque parar a mesa para esperar uma reconexão punir os outros jogadores.
Esta nota registra o que foi decidido na reunião de design do card Definir fluxo de reconexão mid-match (2026-05-06).
Janela de reconexão
- 60 segundos desde a perda de conexão detectada pelo servidor.
- Dentro dessa janela, o jogador é considerado desconectado temporário: o assento permanece na mesa, o estado é preservado e a partida segue normalmente para os demais.
- Após 60s sem reconexão, o jogador é considerado kickado da partida. O que acontece exatamente no kick (morte automática, substituição por bot, manutenção da carta como “ausente” até o fim) fica pendente — ver pendências.
- O cronômetro não pausa entre fases: 60s totais a partir do drop, independente de o jogador ter caído na noite, no dia ou na votação.
Estado preservado
Tudo que o jogador tinha na partida no momento da desconexão é mantido. Isso é proposital — qualquer reset parcial criaria injustiça e abriria espaço para uso estratégico da queda de conexão.
Itens explicitamente preservados:
- Identidade da rodada: time, conduta e função sorteados continuam atribuídos ao jogador.
- Habilidades: cargas, cooldowns, alvos selecionados e marcações pendentes (ver Turnos).
- Voto atual (se já registrado na fase corrente).
- Anotações (Anotações) — texto e marcações por jogador.
- Mute local (Mute) — lista de jogadores silenciados localmente na partida.
- Cooldown de chat (Sanções) — se o jogador está cumprindo cooldown, ele continua valendo ao reconectar.
- Histórico de chat da partida (público e privado liberado por habilidade).
- Resultados de habilidades já recebidos (investigações, leituras, mensagens privadas).
A regra geral: estado de partida é canônico no servidor, então a reconexão recompõe o cliente a partir do servidor. O cliente não precisa persistir nada localmente para manter integridade.
UX do jogador que volta
- Ao reconectar dentro da janela, o jogador vê uma tela de “Reconectando…” enquanto o cliente recompõe o estado.
- Saindo da tela, o jogador entra na fase corrente da partida — não há replay da fase perdida nem retorno à fase em que ele caiu.
- O jogo não rebobina o que o jogador perdeu durante a desconexão. O que pode ser reconstituído pelo histórico já visível (chat, anotações próprias, resultados de habilidade) aparece normalmente; o que era efêmero (animações de morte, popups de fase) fica perdido e não é repostado só por causa da reconexão.
- Voto da fase atual, se já registrado antes do drop, aparece como já submetido.
Detalhamento da tela de reconexão (mensagem, animação, botão de cancelar/sair) fica pendente com a equipe de UI.
UX dos demais jogadores
- Na carta do jogador desconectado, aparece um ícone de Wi-Fi cortado (símbolo de sinal com risco).
- O ícone deve ser visível em todos os pontos onde o jogador é representado: lista de jogadores na mesa, HUD, modal de info, tela de votação, tela pós-partida.
- O ícone substitui (ou se sobrepõe a) qualquer outro indicador de status que esteja na carta enquanto a desconexão estiver ativa, para que o estado seja imediatamente legível.
- Quando o jogador reconecta, o ícone some imediatamente.
- Quando a janela de 60s expira, o ícone é trocado pelo indicador de jogador efetivamente fora da partida (formato a definir junto com a regra de kick — ver pendências).
Comportamento em votação ativa
A regra é pass-through: a desconexão não pausa nem estende a votação, e o estado de voto do jogador passa adiante exatamente como estava no instante do drop.
- Se o jogador já tinha registrado um voto quando caiu, esse voto continua valendo e é contabilizado normalmente na apuração.
- Se o jogador não tinha votado, o ausente é tratado como abstenção — não conta como voto em ninguém e não impede a apuração.
- O timer da fase (incluindo
DayMiddle, ver Turnos) continua correndo normalmente. A mesa não espera o jogador voltar. - Ao reconectar dentro da janela e ainda na mesma fase de votação, o jogador pode alterar/registrar voto normalmente, sob o tempo restante da fase. Reconexão depois que a fase de votação terminou não permite votar retroativamente.
A escolha por pass-through em vez de “voto nulo” é deliberada: anular o voto automaticamente puniria o jogador desconectado e poderia distorcer resultados próximos. Manter o voto registrado preserva a intenção do jogador no instante do drop.
Pendências (a definir em rodadas futuras)
- Comportamento após kick (60s): a política geral de preenchimento por bot está definida em Quórum — qualquer vaga vazia mid-match vira bot. Falta apenas confirmar se o bot herda o estado exato do slot (voto, cargas de habilidade) ou começa “limpo”.
- Penalidade econômica/sancional para queda confirmada (sem reconexão dentro da janela). O caso de AFK por inatividade já tem auto-report definido em AFK; falta decidir se a queda de conexão sem retorno aplica o mesmo tratamento (kick + bot + auto-report) ou se segue regra própria.
- Múltiplas desconexões na mesma partida: cada queda reinicia a janela de 60s, ou existe um teto agregado (ex.: máximo de 3 minutos somados antes de kick)?
- Detecção do drop: heartbeat, timeout de RPC, ack de mensagens — qual sinal o servidor usa para iniciar o cronômetro de 60s.
- Tela de “Reconectando…” — copy, animação, botão de “sair da partida” antes do fim da janela.
- Ícone de Wi-Fi cortado — arte definitiva, posição na carta, comportamento em diferentes telas (mesa, HUD, votação).
- Chat privado em curso (Chat privado) durante a desconexão — a janela de privado continua correndo? O parceiro vê o ícone de queda?
- Habilidades com prompt aberto quando o jogador cai (ex.: seleção de alvo) — o prompt expira sozinho ao fim da fase ou é cancelado imediatamente no drop?