Skip to content

[Feature] Jogadores que entrarem após o início da partida devem aguardar a próxima rodada #64

Closed

Description

@caioross

🚀 Feature

Impedir que novos jogadores participem de uma rodada que já foi iniciada.


📖 Contexto

Atualmente qualquer jogador pode entrar em uma sala mesmo que a corrida já tenha começado.

Isso gera uma situação bastante comum: uma partida está praticamente terminando, um novo jogador entra na sala e passa a participar daquela mesma rodada. Como consequência, todos os jogadores que já finalizaram precisam aguardar o novo participante terminar (ou desistir), aumentando artificialmente o tempo entre partidas.

Na prática isso quebra completamente o ritmo da sala.


❌ Problema

Hoje a lista de participantes permanece aberta durante toda a partida.

Isso causa diversos problemas:

  • jogadores entram no último momento;
  • aumenta o tempo de espera entre rodadas;
  • quebra o fluxo natural da partida;
  • gera frustração em quem terminou rapidamente.

Uma partida deve ser composta apenas pelos jogadores presentes no momento em que ela começou.


💡 Proposta

Quando o líder iniciar uma partida:

  • congelar imediatamente a lista de participantes;
  • impedir novas entradas naquela rodada;
  • qualquer jogador que entrar posteriormente deverá ficar em modo espectador.

Esses jogadores participarão automaticamente da próxima rodada.


🖥️ Experiência do usuário

Ao entrar em uma sala durante uma partida:

🏁 Partida em andamento

Você entrou como espectador.

Assim que esta rodada terminar você participará automaticamente da próxima.

Enquanto isso o jogador pode:

  • acompanhar o chat;
  • visualizar o progresso dos participantes;
  • conversar normalmente;
  • aguardar o início da próxima corrida.

✅ Critérios de aceite

  • Após o início da partida, a lista de jogadores é congelada.
  • Novos usuários entram como espectadores.
  • Espectadores não participam da rodada atual.
  • Ao iniciar uma nova rodada eles passam a competir normalmente.
  • Nenhum jogador ativo precisa esperar alguém que entrou depois do início.

🎯 Benefícios

  • ritmo muito melhor entre partidas;
  • elimina esperas desnecessárias;
  • melhora a competitividade;
  • deixa o comportamento semelhante ao de outros jogos multiplayer.

📝 Observações

No futuro pode ser interessante exibir uma pequena badge:

👀 Espectador

para deixar claro o motivo pelo qual aquele usuário ainda não está competindo.

Activity

  1. added
    enhancementNew feature or request
    area:multiplayerSalas, Realtime, presença, leaderboard, persistência
    em-resolucaoClaim: um Resolvedor está trabalhando nisto
    and removed
    em-resolucaoClaim: um Resolvedor está trabalhando nisto
    on Jul 25, 2026
  2. caioross commented on Jul 26, 2026

    @caioross
    OwnerAuthor

    Resolvida em PR #80 — #80 (solicitei quórum, §7.2 — muda a semântica de fim de corrida).

    • isSpectatorJoin() puro classifica quem entra depois do start_at como espectador da rodada; o gate de fim passa a ignorar espectadores, então um retardatário não prende mais a sala.
    • Espectador vê SpectatorView (banner "Partida em andamento" + pista ao vivo + chat) e entra automaticamente na próxima rodada.
    • Gate verde: typecheck · build · test (40, +6 de classificação) · validate-metrics (37) · validate-persistence (22).
    • Verificação: a view de espectador exige 2 clientes simultâneos num canal Realtime real (inviável headless nesta rodada); a classificação está coberta por unit tests determinísticos. Sugiro ao PR Doctor um teste com duas abas para confirmação visual.
  3. added 3 commits that reference this issue on Jul 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Prioridade normalarea:multiplayerSalas, Realtime, presença, leaderboard, persistênciaenhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions