
Comment ajouter un système de matchmaking à un jeu de sport multijoueur
Le matchmaker d'Edgegap est un système de matchmaking entièrement géré et infiniment personnalisable qui regroupe de manière optimale les joueurs du monde entier – et son utilisation est gratuite pendant le développement de votre jeu de sport multijoueur.
C'est aussi le seul système de matchmaking (à notre connaissance) avec des règles de matchmaking basées sur la latence pour offrir l'expérience multijoueur en ligne idéale pour votre jeu, quelle que soit la plateforme (Unity, Unreal, etc.) ou les services de jeu (EOS, UGS, PlayFab, Heroic Labs Nakama, Braincloud, etc.).
Comme notre matchmaker est basé sur des paramètres, il n'est pas nécessaire d'écrire du code. L'intégration est donc très facile et, si nécessaire, nos guides d'intégration vous accompagnent à chaque étape.
Lorsque votre jeu est en ligne, comme notre système de matchmaking est entièrement géré, vous n'avez pas besoin de vous occuper de l'infrastructure, des bugs, des pannes, de la scalabilité ou de la gestion de la base de données. Nous nous occupons de tout pour vous. Réduisant votre charge de travail DevOps à presque zéro.
Comment intégrer le matchmaking dans votre jeu sportif multijoueur
-> Cet article est basé sur la documentation du matchmaking. Si vous rencontrez des problèmes ou des incohérences, veuillez vous assurer de vous référer au guide original, car il est plus souvent mis à jour.
L'exemple suivant vous aidera à tester le flux principal de matchmaking pour les joueurs, à savoir :
Créer l'instance du matchmaker sur le Cluster d'Hébergement partagé,
Définir des règles et des paramètres dans votre Configuration du matchmaker,
Et enfin, tester le flux des joueurs et gérer les Tickets de Joueurs avec notre API.
Il y a cinq étapes pour intégrer notre matchmaker à votre jeu :
La première étape est de créer un compte et d'utiliser notre exemple de jeu stratégique. Voilà, vous êtes (techniquement) à mi-chemin ! Vous n'auriez qu'à intégrer le matchmaker dans votre jeu (voir étape 5).
Maintenant, vous ne devez jamais suivre aveuglément un exemple JSON que vous avez trouvé sur Internet, il est donc fortement recommandé d'adapter les règles ci-dessus à votre jeu sportif. L'étape 2 (“Explorer la Configuration”) est notre “comment lire” qui traite de la fonction de chaque fonction de règles de matchmaking (“Explorer la Configuration”).
L'étape 3 (“Examiner les Détails de l'Instance”) couvre votre matchmaker personnel et spécifique pour garantir qu'il est déployé et fonctionne avec le design de votre jeu.
L'étape 4, comme son nom l'indique (“4. Tester l'API Ticket”), concerne le test de vos demandes de matchmaking des joueurs reçues par le matchmaker, appelées tickets.
L'étape 5 (“Intégrer le Matchmaking dans votre Jeu”) souligne comment intégrer le matchmaker dans le projet de votre moteur.
Si vous rencontrez des problèmes de dépannage, notre Centre d'Apprentissage a des conseils supplémentaires.
1. Configuration de la version gratuite
Inscrivez-vous pour votre compte Edgegap gratuit, et naviguez vers la page du tableau de bord du Matchmaker.
À partir de là, cliquez d'abord sur Créer un Matchmaker , puis saisissez :
Un nom pour votre matchmaker – qui est uniquement pour votre référence, par ex.
quickstart-dev
,Ensuite, téléchargez l'exemple simple suivant comme configuration JSON ci-dessous pour votre jeu sportif :
(petit rappel pour s'assurer de changer le nom
de l'application et le version
pour correspondre à votre Application et Versions!)
Si aucune erreur de validation n'apparaît, cliquez sur Créer et Démarrer et attendez que le processus se termine. Cela entraînera le démarrage d'un nouveau cluster gratuit, avec votre Matchmaker d'Exemple Simple.
Vous pouvez maintenant passer à l'étape suivante.
2. Explorer la Configuration
Règles de Jeu Sportif Uniques
Spécifiquement pour les jeux sportifs, vous pouvez définir plusieurs Profils de Matchmaking pour les règles et paramètres spécifiques aux modes de jeu :
restrictions de rang entre deux joueurs pour les jeux plus décontractés,
restriction de la différence de rang pour ne permettre que les adversaires du même rang pour les jeux classés,
laissez les joueurs indiquer leurs préférences de carte et choisissez une carte appropriée pour tout le monde,
ajoutez l'interface utilisateur de sélection de hub pour restreindre les adversaires à des Ping Beacons spécifiés,
limitez la latence du matchmaking à un seuil maximum pour éviter de faire correspondre des joueurs éloignés,
limitez la latence du matchmaking à une différence maximale pour maximiser l'équité de ping,
attribuez plus de CPU ou de mémoire avec différentes versions d'application quand davantage de joueurs sont autorisés,
Rejoindre en tant que Groupe pour des lobbys pré-fabriqués ou pour remplir des équipes sans dépasser les tailles d'équipe.
Commencez avec les conditions idéales, et élargir les restrictions pour garantir des matchs rapides :
relâchez lentement les restrictions de latence dans le temps pour trouver plus de joueurs,
augmentez lentement la différence de rang autorisée pour trouver plus de joueurs,
augmentez le temps entre les élargissements pour les plus hauts rangs (challengers), car moins de joueurs sont disponibles.
Créez des tickets avec un rang plus élevé pour les matchs de promotion, afin de faire correspondre des adversaires plus difficiles.
Définissez des profils de tricheurs séparés pour garantir que les tricheurs signalés ou les joueurs avec un grand nombre de rapports de modération n'impactent pas négativement l'expérience des joueurs légitimes dans les matchs classés.
Versionnage Sémantique
Chaque nouvelle version utilise le versionnage sémantique pour communiquer clairement l'impact des modifications en interprétant le format majeur.mineur.patch
:
les versions
majeures
incluent des changements majeurs et nécessitent un examen d'intégration,les versions
mineures
incluent des améliorations substantielles rétrocompatibles,les versions
patch
incluent des corrections de bogues et des améliorations mineures.
Aucune des déploiements peut entraîner des erreurs. Nous tentons de résoudre cela en réessayant le déploiement jusqu'à max_deployment_retry_count
fois automatiquement (sans confirmation du client).
Pour s'assurer que des plantages de clients inattendus ou des tickets abandonnés ne persistent pas et n'occupent pas vos ressources de matchmaking, les tickets seront annulés après ticket_expiration_period
ce qui modifiera leur statut à CANCELLED
et seront ensuite définitivement supprimés après ticket_removal_period
.
Le cœur de notre logique de matchmaking est configuré dans Profils de Matchmaking. Chaque profil est une file d'attente de matchmaking totalement isolée, pointant vers des Versions d'Application avec une quantité prédéfinie de ressources CPU et de mémoire (RAM) requises.
Les Règles de Matchmaking dans l'ensemble de règles initial doit être remplie pour que les joueurs soient regroupés, chacun défini par trois propriétés :
le nom de votre choix, par ex. -
taille du match
,le type de règle, également connu sous le nom d'opérateur, par ex. -
nombre_de_joueurs
,et enfin les attributs de l'opérateur, par ex.
nombre_d_equipes
outaille_de_l_equipe
.
Règle du Nombre de Joueurs
C'est une règle spéciale définissant combien de joueurs doivent correspondre pour initier l'attribution :
nombre_d_equipes
fait référence au nombre d'équipes, 1 équipe peut être utilisée pour des modes coopératifs ou free-for-all,taille_de_l_equipe
fait référence à la nombre de joueurs par équipe.
Notre exemple simple démontre un jeu coopératif avec 2 joueurs.
Veuillez noter que la règle "Nombre de Joueurs" est requise et ne peut être définie qu'une seule fois dans vos règles de configuration initiale.
Règle des Latences
Utilisez cette règle pour fournir le ping le plus bas possible pour tous les joueurs. Une fois que les clients mesurent et soumettent leur temps aller-retour (ping) par rapport à tous les beacons disponibles, Gen2 ne considérera les matchs qu'à l'intérieur d'une différence
spécifique dans les valeurs de ping, mesurée par rapport aux Ping Beacons. Cela présente une solution “douce” pour diviser votre base de joueurs, permettant de faire correspondre des régions voisines, améliorant particulièrement la vitesse des matchs pour les régions moins peuplées. Utilisez max_latency
pour empêcher de faire correspondre des joueurs situés loin.
Vous pouvez maintenant passer à l'étape suivante.
Notre exemple règles
ci-dessus avec "difference": 50, "max_latency": 200
initialement :
Alice et Bob seront associés, puisque Pékin est rejeté (>200) et le reste est dans | A-B | < 50 :
Alice {Montréal : 12.3, Newark : 45.6, Dallas : 59.9, Pékin : 264.4}; et
Bob {Montréal : 27.3, Newark : 32.4, Dallas : 23.1, Pékin : 252.2}.
Charlie et Dave ne s'associeront pas, puisque | C-D | > 50 pour le Beacon de Dallas :
Alice {Montréal : 5.7 Newark : 44.2, Dallas : 59.5, Pékin : 263.2}; et
Bob {Montréal : 57.8, Newark : 32.0, Dallas : 24.2, Pékin : 272.3}.
Veuillez noter que les "Règles de Latences" ne peuvent être définies qu'une seule fois dans vos règles de configuration initiale.
3. Examens des Détails de l'Instance
Examinez les détails de votre nouveau matchmaker dans notre tableau de bord une fois qu'il est initialisé :

Statut indique la santé du service, peut être EN LIGNE, HORS LIGNE ou ERREUR.
Identifiant aidant le personnel d'Edgegap à trouver rapidement votre matchmaker si vous avez besoin d'aide pour le dépannage.
Démarré à peut être utile pour retrouver la dernière heure de mise à jour.
Taille correspond à l'un de nos Niveaux de Tarification.
API URL sera utilisé par les Clients de Jeu et les Serveurs de Jeu pour communiquer avec Gen2.
Swagger URL est une interface GUI de spécification openAPI pratique que nous fournissons pour explorer le schéma API.
Jeton d'Auth est un jeton secret unique utilisé par les Clients de Jeu et le Serveur de Jeu pour l'authentification.
Pour tester votre nouveau matchmaker en utilisant l'API, vous aurez besoin de l'URL Swagger, de l'URL API et du Jeton d'Auth.
Vous pouvez maintenant passer à l'étape suivante.
4. Tester l'API des Tickets
D'abord, ouvrez votre URL Swagger pour inspecter le schéma openAPI dans l'interface Swagger
Cliquez sur l'URL /...swagger.json
en dessous du titre “Matchmaker” pour ouvrir le schéma JSON brut :

Enregistrez cette page en tant que fichier sur votre disque (CTRL/CMD+S
).
Ouvrez votre application Postman et connectez-vous à votre compte gratuit.
Importez votre fichier swagger.json
de l'étape précédente :
gardez Postman Collection sélectionné,
sélectionnez Voir les Paramètres d'Importation et changez le paramètre génération de paramètres en Exemple.
Confirmez l'importation, cela entraînera l'apparition d'une nouvelle collection dans la liste des Collections à gauche, intitulée Matchmaker.

Voir plus d'actions, ouvrez l'onglet Autorisation et choisissez :
Type d'Auth - Clé API,
Clé - “Autorisation”
Valeur - insérez ici votre valeur AuthToken,
Ajoutez à - En-tête.
Pressez (CTRL/CMD+S
) ou l'icône de Sauvegarde pour enregistrer les modifications. Le point orange dans votre onglet Postman devrait disparaître.
Dans votre collection Matchmaker, sélectionnez tickets et Créer un ticket de matchmaking, en ouvrant un nouvel onglet.
Sélectionnez l'onglet Corps pour prévisualiser votre demande de ticket de joueur :
remarquez que player_ip
est défini sur null
- cela entraînera l'utilisation de l'adresse IP automatiquement ajoutée à votre demande (voir Intégration Serveur à Serveur pour des alternatives),
profil
fait référence à vos Profils de Matchmaking,attributs
incluent les valeurs pour vos règles de matchmaker, dans ce cas pour lalatences
règle,la règle
nombre_de_joueurs
est la seule règle qui ne nécessite aucun attribut dans les tickets de joueurs.
REMARQUE: Assurez-vous de vous référer à la configuration d'importation Swagger de l'exemple.
Cliquez sur Envoyer et passez en revue la réponse à votre demande de ticket de joueur :
id
est votre ID unique de ticket de matchmaking, conservez-le sauvegardé pour vérifier votre ticket plus tard,profil
confirmant le choix des Profils de Matchmaking,group_id
est un ID de groupe unique attribué à chaque ticket, un joueur solo est représenté comme un groupe de 1,voir Rejoindre comme Groupe pour le matchmaking avec vos amis ou des lobbys,
player_ip
est l'adresse IP publique résolue du joueur, peu importe la méthode d'identification utilisée,assignment
est défini sur null pour indiquer que le ticket n'a pas encore été associé ou attribué à un serveur,created_at
fournit des informations sur quand le ticket de joueur a été créé pour l'utilisation dans l'interface de jeu,status
indique le statut actuel du ticket, tous les tickets commencent enSEARCHING
(voir Processus de Matchmaking pour les détails).
Créez un deuxième ticket en appuyant à nouveau sur Envoyer, afin que nos deux joueurs soient associés et qu'un serveur soit démarré.
Dans votre collection Matchmaker, sélectionnez {ticketId} et Lire un ticket de matchmaking.
Entrez l'ID du ticket de la réponse de l'étape précédente et cliquez sur Envoyer.

Examinez l'attribution mise à jour pour votre ticket de joueur :
le statut a changé en
MATCH_FOUND
premièrement, tout en gardantassignment
défini surnull
pour indiquer que les joueurs ont été associés et qu'un serveur est en cours d'attribution,

Cliquez sur Envoyer à nouveau pour vérifier votre ticket, et passez en revue l'attribution mise à jour pour votre ticket de joueur :
le statut a changé en
HOST_ASSIGNED
avecassignment
contenant les détails du serveur attribué.
Inspectez votre nouveau déploiement dans notre tableau de bord :
remarquez que chaque déploiement est étiqueté avec tous les IDs de tickets et profils pour une traçabilité accrue.

Essayez de vous connecter depuis votre client de jeu au serveur attribué.
Une fois que vous vérifiez que vous pouvez vous connecter à votre déploiement sans problèmes et que vous avez terminé les tests, Arrêtez votre Déploiement pour libérer de la capacité dans votre compte pour le prochain build.
Vous pouvez maintenant passer à l'étape suivante.
5. Intégrer le Matchmaker dans votre Jeu
Le matchmaking d'Edgegap s'intègre :
avec Client de Jeu, pour gérer Tickets de Joueurs,
avec Serveur de Jeu, pour :
traiter les préférences des joueurs transmises par leurs tickets,
optionnellement pour prendre en charge Backfill pour ajouter ou remplacer des joueurs après le démarrage.
Pour le Client de Jeu, nous recommandons de fournir des mises à jour de l'état des tickets tout au long du Processus de Matchmaking aux joueurs en utilisant l'interface utilisateur du jeu pour la meilleure expérience possible des joueurs. Voir :
Edgegap - SDK de Matchmaking Unity Gen2,
importer un exemple simple et personnaliser selon vos besoins,
Betide Studio - Kit d'Intégration Unreal Engine Edgegap,
téléchargez le projet exemple et personnalisez-le selon vos besoins.
Dans le Client de Jeu, assurez-vous de gérer les erreurs non récupérables :
HTTP 404 Not Found
- le ticket a été supprimé,HTTP 500 Internal Server Error
- panne temporaire du service.
Dans le Serveur de Jeu, traitez les préférences des joueurs et le contexte initial du serveur. Aucune intégration API n'est requise :
Lire Variables d'Environnement Injectées (Gen2) pour récupérer les données de matchmaking initiales des joueurs.
Lire Variables d'Environnement Injectées (Versions d'Application) pour des paramètres spécifiques à la version, des paramètres (capacité des joueurs) et des secrets.
Lire Variables d'Environnement Injectées (Déploiement) pour des informations de déploiement, telles que l'adresse IP, l'emplacement, ou plus.
Une fois que les joueurs se connectent, Serveur de Jeu et Clients de Jeu commencent une scène de chargement pour effectuer des étapes de synchronisation (par exemple, sélectionner et charger une carte/scène/niveau). Nous recommandons une scène 3D complète, une interface sociale de style lobby, ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation est en cours.
Une fois que les Clients de Jeu sont complètement chargés, les joueurs chargent/voyagent vers la scène de gameplay principale.
Optionnellement, Serveur de Jeu peut créer et gérer Backfill et la capacité des joueurs (ajouter ou remplacer des joueurs qui partent).
Assurez-vous que votre déploiement sera arrêté correctement en utilisant Injected DELETE_URL, si :
aucun joueur ne rejoint le match,
tous les joueurs ont quitté le match,
le match se conclut correctement.
Félicitations, vous avez terminé l'intégration du Matchmaker Edgegap ! Si vous souhaitez en savoir plus, lisez tout à ce sujet dans notre Centre d'Apprentissage.
Écrit par
l'équipe Edgegap
