Saltar para o conteúdo
Voltar aos projetos

FEUP · Computação Paralela e Distribuída · 2024

Matchmaking Game Server

Um sistema cliente–servidor concorrente com autenticação, filas ranqueadas e reconexão.

Código-fonte (abre num novo separador)Sem versão pública em produção

O problema

Desenhar um servidor de jogos que muitos clientes possam usar em simultâneo: autenticar jogadores, emparelhá-los em jogos casuais ou ranqueados e manter o comportamento correto quando os clientes são lentos ou se desligam.

O que foi construído

  • Servidor TCP que atribui cada ligação de cliente a uma thread dedicada.
  • Filas de emparelhamento partilhadas, protegidas por locks explícitos para evitar condições de corrida.
  • O modo ranqueado só emparelha jogadores cujo rank esteja dentro de um limite definido; a fila casual emparelha por ordem de chegada.
  • Tokens de sessão permitem que um jogador desligado volte e retome um jogo encontrado durante a ausência; timeouts impedem que clientes lentos bloqueiem os restantes.
  • Credenciais guardadas como hashes SHA-256; os jogos são de Jogo do Galo, no terminal.

O meu papel

Projeto de grupo da unidade curricular de Computação Paralela e Distribuída.

Tecnologias

  • Java
  • TCP sockets
  • Threads
  • ReentrantLock
  • SHA-256