heist-day-matchmaker
Backend de matchmaking en Go pour Heist Day — gestion des lobbies, équilibrage des équipes et orchestration des sessions.
heist-day-matchmaker est un service backend indépendant, performant et concurrent en Go, conçu pour gérer le matchmaking des joueurs et le cycle de vie complet des serveurs de jeu pour Heist Day.
Serveur HTTP léger communiquant en JSON, exposant des routes pour les clients (/matchmake) et des callbacks pour les serveurs dédiés (/server_ready).
Algorithme de matchmaking sécurisé par sync.Mutex pour gérer les accès concurrents en toute sécurité. Le système gère aussi bien les joueurs solo que les groupes préformés (lobbies), tout en filtrant les requêtes en double.
Logique de distribution dynamique garantissant que les groupes d'amis restent dans la même équipe (Voleurs ou Sécurité) lors du lancement d'un match 2v2.
Plutôt que de maintenir des serveurs inactifs, le backend lance les processus Unreal Server à la volée via exec.Command, en allouant dynamiquement des ports depuis un pool géré par des Channels — jusqu'à 10 serveurs simultanés.
Concurrence Go avancée (Goroutines + Channels). Lors de la formation d'un match, le backend maintient les réponses HTTP des clients de manière asynchrone jusqu'à ce que le serveur Unreal confirme qu'il est lancé et prêt, évitant les timeouts côté client.