Convite de Amigo para Sala
Resumo
Define como um jogador convida um amigo para a sala em que está. Depende de Amigos. O fluxo é direto — convidar pelo perfil, notificação dupla (push + in-app) — e o convite não reserva vaga: a sala continua sendo preenchida normalmente até as 12 posições; se completar com humanos antes do amigo aceitar, o convite vira inválido. TTL fixo de 5 minutos.
Distinto de Fila em Grupo: convidar para sala puxa um amigo para uma sala/lobby que já existe (sem reserva); a fila em grupo entra no matchmaking já como party. São dois caminhos diferentes de “jogar com amigos” — a conciliação dos dois na UI é pendência aberta lá.
Esta nota registra as decisões do card Definir convite de amigo para sala (2026-05-12) e a decisão extra sobre ciclo de vida de salas para controle de custo.
Fluxo do convite
- Jogador A entra em uma sala (lobby de matchmaking ou sala pós-partida via “Voltar ao Lobby” em Pós-Partida).
- A abre o perfil do amigo B — ponto de entrada padrão para qualquer ação social entre amigos (ver Amigos).
- A clica em Convidar.
- B recebe simultaneamente:
- Push notification no device, no formato padrão de push do app.
- Notificação in-app, caso B esteja com o jogo aberto.
- B aceita o convite → entra na sala de A, ocupando uma vaga humana (substituindo um bot, se houver — ver Quórum).
- B ignora ou deixa expirar → nada acontece; A não recebe feedback explícito além de eventualmente perder o convite ativo pela expiração do TTL.
Texto exato das notificações, comportamento da UI in-app (toast, modal, badge na caixa de pedidos de Amigos) e deep linking direto do push para a tela de aceite ficam pendentes.
Capacidade — sem reserva
A sala não reserva vaga para o convidado. Decisão explícita: o convite é uma chamada, não uma reserva.
- Se outros humanos entrarem na sala pelo matchmaking enquanto o convite está ativo, eles ocupam as vagas livres normalmente.
- Não existe slot “guardado” para o amigo enquanto o convite está pendente.
- A consequência aceita é que o amigo pode chegar tarde e não encontrar lugar — ver próxima seção.
A escolha de não reservar foi feita para não bloquear o matchmaking dos outros jogadores: reservar vaga atrasaria o início da partida toda vez que alguém esquecesse de aceitar.
Sala cheia → convite inválido
Se a sala atingir 12 vagas humanas antes do amigo aceitar (matchmaking completou com outros jogadores reais), o convite deixa de ser aceitável:
- O amigo, ao tentar aceitar, recebe mensagem de “sala cheia” e o convite é descartado.
- Não há fila de espera, não há substituição de outro humano pelo convidado.
- Como o sistema de Quórum preenche com bots, o cenário “sala cheia de humanos” só acontece quando o matchmaking efetivamente entrega 12 jogadores reais — geralmente uma boa notícia para a experiência de partida, mas que custa o convite específico.
Esse comportamento é uma consequência direta da decisão de não reservar vagas. Se no futuro reservar vagas virar prioridade, esta nota precisa ser revisitada.
TTL — 5 minutos
- O convite fica ativo por 5 minutos a partir do envio.
- Após esse tempo, o convite expira mesmo se a sala ainda tiver vaga.
- A janela de 5 min foi escolhida para cobrir o caso típico (amigo viu o push em até alguns minutos) sem deixar convites antigos poluindo o estado da caixa de notificações.
Comportamento se A sair da sala antes do TTL expirar (o convite vira inválido imediatamente? ainda redireciona B para algum lugar?), múltiplos convites simultâneos para o mesmo amigo, e disparo de novo convite após expiração — ficam pendentes.
Ciclo de vida da sala — cleanup de salas vazias
Decisão tomada fora do escopo direto do card mas registrada aqui porque afeta diretamente o que acontece com salas onde convites podem ser enviados.
- Se manter salas de lobby abertas tiver custo de infraestrutura (instâncias do Cloud Code, conexões persistentes, etc.), o jogo precisa de um sistema que delete a sala e remova os jogadores quando ela ficar vazia ou abandonada — para poupar gastos.
- O critério exato de “vazia/abandonada” e o tempo de tolerância antes da deleção ficam pendentes com o time técnico.
- Esta regra vale tanto para o lobby de matchmaking quanto para o lobby pós-partida criado pelo botão “Voltar ao Lobby” de Pós-Partida.
Esta decisão vai além do escopo de convite e provavelmente justifica uma nota dedicada de Ciclo de Vida da Sala quando o tema for retomado — incluindo regras de timeout, salas sem host (cruzamento com Migração de Host), e salas só com bots após múltiplas saídas.
Pendências (a definir em rodadas futuras)
- Copy e UX da notificação (push + in-app), incluindo deep link para tela de aceite.
- Comportamento ao convidar amigo que já está em outra sala ou em partida ativa: bloquear o envio? Permitir e exibir aviso?
- Convites simultâneos: posso convidar múltiplos amigos de uma vez? Existe limite de convites ativos por sala?
- A sai da sala antes do TTL expirar: o convite expira automaticamente ou aponta para outro lugar?
- Novo convite após expiração ou recusa — existe cooldown anti-spam?
- Sala cheia ao aceitar: mensagem padrão de erro, e se há alternativa proposta (matchmaking normal?).
- Convite cruzando com Voltar ao Lobby: amigo aceita convite que aponta para sala que acabou de ser convertida em lobby pós-partida — fluxo é transparente?
- Ciclo de vida da sala (cleanup): critério de inatividade, tempo de tolerância antes da deleção, comportamento se há convite ativo apontando para sala que vai ser deletada.
- Bots permanecem no lobby durante a janela de convite ou são adiados até o início do matchmaking?
Ver Também
- Amigos
- Quórum
- Pós-Partida — “Voltar ao Lobby”
- Fila em Grupo — mecanismo distinto: entrar na fila como party
- Segundo Plano — infraestrutura de push notification
- Migração de Host — interação com salas sem host