Skip to content

[Feature] Sistema automático de desistência por inatividade #65

Description

@caioross

🚀 Feature

Criar um sistema que detecte jogadores inativos e os remova automaticamente da rodada.


📖 Contexto

É bastante comum alguém entrar em uma partida e abandonar o computador.

Como atualmente a partida aguarda todos os jogadores terminarem, apenas um usuário inativo consegue prender toda a sala durante vários minutos.

Esse comportamento prejudica todos os demais participantes.


❌ Problema

Hoje não existe nenhuma detecção de inatividade.

Consequências:

  • partidas ficam presas;
  • jogadores precisam esperar alguém que nem está presente;
  • experiência extremamente frustrante;
  • salas acabam sendo abandonadas.

💡 Proposta

Monitorar continuamente a atividade de digitação do jogador.

Caso nenhuma tecla seja pressionada durante 30 segundos, iniciar uma contagem regressiva.

⚠️ Você está inativo.

Digite qualquer tecla para continuar.

Desistência automática em:

10...
9...
8...

Caso o jogador volte a digitar:

  • cancelar imediatamente a contagem.

Caso a contagem termine:

  • marcar o jogador como desistente;
  • removê-lo da rodada atual;
  • permitir que a partida continue normalmente.

🖥️ Funcionamento esperado

30 segundos sem digitar
        ↓
Mostrar aviso
        ↓
Contagem de 10 segundos
        ↓
Jogador digitou?
        ↓
Sim → cancela
Não → desistência automática

✅ Critérios de aceite

  • Detectar ausência de digitação.
  • Após 30 segundos iniciar a contagem.
  • Exibir aviso visual claro.
  • Qualquer tecla cancela o processo.
  • Após 10 segundos remover o jogador da rodada.
  • Os demais jogadores não precisam mais aguardá-lo.

🎯 Benefícios

  • partidas mais rápidas;
  • elimina jogadores AFK;
  • melhora significativamente a experiência multiplayer;
  • reduz salas travadas.

🔮 Melhorias futuras

No futuro essa lógica pode considerar outros eventos além da digitação, como movimentação do mouse ou interação com a página.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions