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