EN FR
← Projets / Heist Day / heist-day-matchmaker
// project_heist_day_matchmaker
2025 Done
step_02 // backend

heist-day-matchmaker

Backend de matchmaking en Go pour Heist Day — gestion des lobbies, équilibrage des équipes et orchestration des sessions.

GoREST APIMatchmakingBackend

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.

01 API REST & Communication HTTP

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).

02 Système de File Thread-Safe

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.

03 Équilibrage & Attribution des Équipes

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.

04 Orchestration Dynamique des Serveurs Unreal

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.

05 Gestion Asynchrone via Goroutines

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.

heist-day-matchmaker is an independent, high-performance, concurrent backend service in Go, designed to manage player matchmaking and the full lifecycle of game servers for Heist Day.

01 REST API & HTTP Communication

Lightweight HTTP server communicating via JSON, exposing queue routes for clients (/matchmake) and callbacks for the dedicated servers (/server_ready).

02 Thread-Safe Queueing System

Matchmaking algorithm secured by sync.Mutex to safely handle concurrent access. The system manages both solo players and pre-formed groups (lobbies) while filtering out duplicate requests.

03 Team Balancing & Assignment

Dynamic distribution logic ensuring that friend groups remain on the same team (Robbers or Security) when the 2v2 match launches.

04 Dynamic Unreal Server Orchestration

Instead of running idle servers, the backend launches Unreal Server processes on the fly via exec.Command, dynamically allocating ports from an available pool managed via Channels — supporting up to 10 simultaneous servers.

05 Asynchronous Management via Goroutines

Advanced Go concurrency (Goroutines + Channels). When a match is found, the backend asynchronously holds the clients' HTTP responses until the Unreal server confirms it is fully launched and ready, preventing client-side connection timeouts.