
Comment ajouter le matchmaking à un jeu multijoueur social
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 multijoueur social.
C'est également le seul système de matchmaking (à notre connaissance) avec des règles de matchmaking basées sur la latence pour fournir l'expérience multijoueur en ligne idéale pour votre jeu, quel que soit le moteur (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 besoin, 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 bogues, des pannes, de l'évolutivité 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 à votre jeu multijoueur social
-> Cet article est basé sur la documentation sur le 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 fréquemment à jour.
L'exemple suivant vous aidera à tester le flux de base des joueurs de matchmaking, à savoir :
Créer l'instance de matchmaking sur le cluster d'hébergement partagé,
Définir des règles et paramètres dans votre configuration de matchmaking,
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 matchmaking à votre jeu :
La première étape consiste à créer un compte et à utiliser notre exemple de jeu social. Voilà, vous avez (techniquement) terminé la moitié du chemin ! Vous devrez simplement intégrer le matchmaking dans votre jeu (voir l'étape 5).
Maintenant, vous ne devez jamais suivre aveuglément un exemple JSON trouvé sur Internet, il est donc fortement recommandé d'adapter les règles ci-dessus à votre jeu au tour par tour. L'étape 2 (“Explorer la configuration”) est notre “comment lire” qui explique le fonctionnement de chaque rules de matchmaking (“Explorer la configuration”).
L'étape 3 (“Vérifier les détails de l'instance”) couvre votre matchmaker personnel et spécifique afin d'assurer 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 des tickets”), concerne le test de vos demandes de matchmaking pour s'assurer qu'elles sont reçues par le matchmaking, appelées tickets.
L'étape 5 (“Intégrer le matchmaking dans votre jeu”) met en avant comment intégrer le matchmaking dans le projet de votre moteur.
Si vous avez des défis de dépannage, notre Centre d'apprentissage approfondi a des conseils supplémentaires de dépannage.
1. Configuration de la catégorie gratuite
Inscrivez-vous pour votre compte Edgegap gratuit, et naviguez vers la page du tableau de bord de matchmaking.
Pour cela, cliquez d'abord sur Créer un matchmaker et entrez :
Un nom pour votre matchmaker – qui est purement pour votre propre référence, par exemple
quickstart-dev
,Ensuite, téléchargez l'exemple simple ci-dessous en tant que configuration JSON pour votre jeu multijoueur social :
(rappel amical pour s'assurer de changer le nom
de l'application et version
pour correspondre à votre application et versions!)
S'il n'y a pas d'erreurs de validation, cliquez sur Créer et démarrer et attendez la fin du processus. Cela résultera en un nouveau cluster gratuit démarrant, avec votre matchmaker exemple simple.
Vous pouvez maintenant passer à l'étape suivante.
2. Explorer la configuration
Règles de jeu multijoueur social uniques
Avec un nombre d'équipes de 1 et une taille d'équipe de 50, nécessitant 50 joueurs par jeu (tous les joueurs étant dans la même équipe).
Spécifiquement pour les jeux sociaux, vous pouvez définir des profils de matchmaking pour des règles et paramètres spécifiques aux modes de jeu :
laisser les joueurs fournir leurs préférences de modes de jeu et choisir un mode convenable pour tous,
Rejoindre en groupe pour des lobbys préconçus ou pour remplir des équipes sans dépasser les tailles d'équipe,
ajouter une 🗺️ Interface de sélection de région pour restreindre les adversaires à des régions spécifiées,
permettre une latence plus élevée pour préférer des matchs plus rapides avec plus de joueurs,
allouer plus de CPU ou de mémoire en utilisant différentes 🏷️ versions d'application lorsque plus de joueurs sont autorisés.
Élargir les restrictions pour assurer des matchs rapides :
relâcher rapidement les restrictions de latence pour trouver plus de joueurs,
diminuer lentement la taille de l'équipe pour nécessiter moins de joueurs et commencer le jeu plus tôt,
optionnellement, vous pouvez laisser le serveur remplir les emplacements vides avec des joueurs IA,
si aucun coéquipier n'est trouvé, lancez le jeu en solo et utilisez Backfill pour ajouter des joueurs plus tard,
cela permettra aux joueurs de rejoindre des matchs existants plutôt que de nouveaux pour maximiser l'interaction sociale.
Versioning sémantique
À mesure que nous publions des mises à jour pour le matchmaking, chaque nouvelle version utilise le versioning sémantique pour communiquer clairement l'impact des changements en interprétant le format major.minor.patch
:
major
les versions incluent des changements majeurs et nécessitent une révision de l'intégration,minor
les versions incluent des améliorations substantielles compatibles avec les versions précédentes,patch
les versions incluent des corrections de bogues et des améliorations mineures.
Certains déploiements peuvent entraîner des erreurs. Nous essayons 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 imprévus du client ou des tickets abandonnés ne restent pas et n'occupent pas les ressources de votre matchmaking, les tickets seront annulés après ticket_expiration_period
ce qui entraînera un changement de leur statut en CANCELLED
avant d'être 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 queue de matchmaking complètement isolée, pointant vers versions d'application avec une quantité pré-définie de ressources CPU et de mémoire (RAM) requises.
Règles de matchmaking dans l'ensemble de règles initial doit être respecté pour que les joueurs soient regroupés, chacun défini par trois propriétés :
nom de votre choix, par exemple -
taille de match
,type de règle, également connu comme opérateur, par exemple -
nombre_de_joueurs
,et enfin les attributs de l'opérateur, par exemple
nombre_d_equipes
outaille_dequipe
.
Règle du nombre de joueurs
Ceci 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 tous contre tous,taille_dequipe
fait référence au 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 de latence
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 de trajet aller-retour (ping) contre tous les balises disponibles, Gen2 ne prendra en compte que les matchs dont la valeur de difference
dans les valeurs de ping, mesurée contre Ping Beacons. Cela présente une solution "douce" pour diviser votre base de joueurs, permettant le matchmaking avec 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 le matchmaking contre les joueurs situés loin.
Vous pouvez maintenant passer à l'étape suivante.
Notre règle d'exemple ci-dessus avec "difference": 50, "max_latency": 200
initialement :
Alice et Bob seront appariés, puisque Pékin est écarté (>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 pourront pas appariés, puisque | C-D | > 50 pour la balise 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 latence" ne peuvent être définies qu'une seule fois dans vos règles de configuration initiales.
3. Vérifier les détails de l'instance
Vérifiez les détails de votre nouveau matchmaker dans notre tableau de bord une fois qu'il est initialisé :

Status indique la santé du service, peut être EN LIGNE, HORS LIGNE ou ERREUR.
Identifier aide le personnel d'Edgegap à trouver votre matchmaker rapidement si vous avez besoin d'aide pour le dépannage.
Commencé à peut être utile pour suivre le dernier temps de mise à jour.
Taille correspond à l'un de nos niveaux de prix.
API URL sera utilisée par les clients de jeux et les serveurs de jeux pour communiquer avec Gen2.
Swagger URL est une spécification openAPI pratique que nous fournissons pour explorer le schéma API.
Token d'authentification est un jeton secret unique utilisé par les clients de jeux et le serveur de jeux pour l'authentification.
Pour tester votre nouveau matchmaker à l'aide de l'API, vous aurez besoin de l'URL Swagger, de l'URL de l'API et de la clé d'authentification.
Vous pouvez maintenant passer à l'étape suivante.
4. Tester l'API des tickets
Tout d'abord, ouvrez votre URL Swagger pour inspecter votre schéma openAPI dans l'interface Swagger
Cliquez sur l'URL /...swagger.json
sous le 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éléctionnez Afficher les paramètres d'importation et modifiez 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'authentification - Clé API,
Clé - “Authorization”
Valeur - insérez votre valeur AuthToken ici,
Ajouter à - Header.
Appuyez sur (CTRL/CMD+S
) ou sur l'icône de sauvegarde pour sauvegarder les modifications. Le point orange dans l'onglet Postman devrait disparaître.
Dans votre collection Matchmaker, sélectionnez tickets et Créer un ticket de matchmaking, ouvrant un nouvel onglet.
Sélectionnez l'onglet Corps pour prévisualiser votre demande de ticket de joueur :
remarquez que player_ip
est réglé sur null
- cela provoquera l'utilisation de l'adresse IP ajoutée automatiquement à votre requête (voir Intégration Serveur à Serveur pour d'autres options),
profile
se réfère à vos profils de matchmaking,attributes
incluent des valeurs pour vos règles de matchmaking, dans ce cas pour lalatences
de la règle,la règle
player_count
est la seule règle qui ne nécessite aucun attribut dans les tickets des joueurs.
NOTE: Assurez-vous de vous référer à la configuration d'importation de l'exemple Swagger.
Cliquez sur Envoyer et examinez la réponse à votre demande de ticket de joueur :
id
est votre ID unique de ticket de matchmaking, gardez cela enregistré pour vérifier votre ticket plus tard,profile
confirmant le choix de profils de matchmaking,group_id
est un ID de groupe unique attribué à chaque ticket, un joueur seul est représenté comme un groupe de 1,voir Rejoindre en groupe pour le matchmaking avec vos amis ou des lobbys,
player_ip
est l'adresse IP publique résolue du joueur, quel que soit le mode d'identification utilisé,assignment
est réglé sur null pour indiquer que le ticket n'a pas encore été apparié ou attribué à un serveur,created_at
fournit des informations sur le moment où le ticket de joueur a été créé pour l'utilisation de l'interface utilisateur du jeu,status
indique le statut actuel du ticket, tous les tickets commencent enSEARCHING
(voir Processus de matchmaking pour plus de détails).
Créez un deuxième ticket en appuyant à nouveau sur Envoyer, afin que nos deux joueurs s'apparent et qu'un serveur soit lancé.
Dans votre collection Matchmaker, sélectionnez {ticketId} et Lire un ticket de matchmaking.
Entrez l'ID de ticket de la réponse de l'étape précédente et cliquez sur Envoyer.

Vérifiez l'attribution mise à jour pour votre ticket de joueur :
le statut a changé en
MATCH_FOUND
au départ, tout en gardantassignment
réglé surnull
pour indiquer que les joueurs se sont appariés et qu'un serveur est en cours d'attribution,

Cliquez sur Envoyer à nouveau pour vérifier votre ticket, et examinez 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 le profil pour une traçabilité accrue.

Essayez de vous connecter depuis votre client de jeu au serveur désigné.
Une fois que vous avez vérifié 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 la prochaine version.
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 les tickets de joueurs,
avec Serveur de jeu, pour :
traiter les préférences des joueurs passées par leurs tickets,
optionnellement pour soutenir Backfill pour ajouter ou remplacer des joueurs après le démarrage.
Pour dans Client de jeu, nous recommandons de fournir des mises à jour de statut des tickets tout au long du Processus de matchmaking aux joueurs en utilisant l'interface utilisateur du jeu pour la meilleure expérience des joueurs. Voir :
Edgegap - SDK de matchmaking Unity Gen2,
importer un exemple simple et le personnaliser selon vos besoins,
Betide Studio - Kit d'intégration Unreal Engine Edgegap,
télécharger le projet exemple et le personnaliser selon vos besoins.
Dans Client de jeu, assurez-vous de gérer les erreurs non réessayables :
HTTP 404 Non trouvé
- le ticket a été supprimé,HTTP 500 Erreur interne du serveur
- interruption temporaire du service.
Dans Serveur de jeu, traitez les préférences des joueurs et le contexte initial du serveur. Aucune intégration API n'est requise :
Lisez Variables d'environnement injectées (Gen2) pour récupérer les données de matchmaking initiales des joueurs.
Lisez Variables d'environnement injectées (Versions d'application) pour les paramètres spécifiques à la version, les réglages (capacité des joueurs), et les secrets.
Lisez Variables d'environnement injectées (Déploiement) pour les informations de déploiement, telles que l'adresse IP, l'emplacement, ou plus.
Une fois les joueurs connectés, Serveur de jeu et Clients de jeu démarrent 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 utilisateur sociale type lobby, ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation progresse.
Une fois Clients de jeu complètement chargés, les joueurs chargent/voyagent vers la scène principale du gameplay.
Optionnellement, Serveur de jeu peut créer et gérer des Backfill et la capacité des joueurs (ajouter ou remplacer des joueurs qui partent).
Assurez-vous que votre déploiement sera arrêté correctement à l'aide de URL DELETE injecté, si :
aucun joueur ne rejoint le match,
tous les joueurs ont quitté le match,
le match se termine correctement.
Félicitations, vous avez terminé l'intégration du Matchmaker d'Edgegap ! Si vous souhaitez en savoir plus, lisez tout à ce sujet dans notre Centre d'apprentissage.
Écrit par
l'équipe Edgegap
