
Comment ajouter un matchmaking à un jeu multijoueur PvE
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 PvE.
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, 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 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 la scalabilité ou de la gestion de la base de données. Nous nous occupons de tout pour vous. Réduisant ainsi votre charge de travail DevOps à presque zéro.
Comment intégrer le matchmaking dans votre jeu multijoueur PvE
-> Cet article est basé sur la documentation Matchmaking. Si vous rencontrez des problèmes ou des divergences, assurez-vous de vous référer au guide original, car ils sont mis à jour plus fréquemment.
L'exemple suivant vous aidera à tester le flux principal de matchmaking des 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 de matchmaker,
Et enfin, tester le flux des joueurs et gérer les tickets joueurs avec notre API.
Il y a cinq étapes pour implémenter notre matchmaker dans votre jeu :
La première étape consiste à créer un compte et à utiliser notre exemple de jeu PvE. Voilà, vous avez (techniquement) terminé à moitié ! Vous n’aurez plus qu’à intégrer le matchmaker dans votre jeu (voir étape 5).
Désormais, vous ne devriez jamais suivre aveuglément un exemple JSON trouvé sur Internet, et 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 aborde 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écifie afin de garantir qu'il est déployé et fonctionne avec la conception de votre jeu.
L'étape 4, comme son nom l'indique (« 4. Tester l'API de tickets »), consiste à tester que vos demandes de matchmaking des joueurs sont 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 difficultés de dépannage, notre centre de formation approfondi propose des conseils supplémentaires sur le dépannage.
1. Configuration du niveau gratuit
Inscrivez-vous pour votre compte Edgegap gratuit, et accédez à la page de tableau de bord Matchmaker.
De là, cliquez d'abord sur Créer un matchmaker puis saisissez :
Un nom pour votre matchmaker – qui est uniquement à titre de référence personnelle, par exemple
quickstart-dev,Ensuite, téléchargez l'exemple simple suivant en tant que configuration JSON ci-dessous pour votre jeu PvE :
(rappel amical de bien vouloir s'assurer de changer le nom de l'application et version pour correspondre à votre Application et versions !)
Si aucune erreur de validation n'apparaît, appuyez sur Créer et démarrer et attendez que le processus se termine. Cela démarrera un nouveau cluster gratuit avec votre matchmaker Exemple simple.
Vous pouvez maintenant procéder à l'étape suivante.
2. Explorer la configuration
Règles uniques de jeu multijoueur PvE
Spécifiquement pour les jeux PvE, vous pouvez définir plusieurs profils de matchmaking pour les règles et les paramètres spécifiques aux modes de jeu :
laisser les joueurs fournir leurs préférences de carte et choisir une carte adaptée à tous,
permettre aux joueurs de choisir une difficulté de jeu particulière adaptée au niveau de compétence de chacun,
restreindre la différence de niveau des joueurs pour aligner les joueurs avec un degré similaire de progression dans le jeu,
Rejoignez en groupe pour des lobbies préfabriqués ou pour remplir des équipes sans dépasser la taille des équipes,
permettre une latence plus élevée pour privilégier des matchs plus rapides avec des préférences de joueur plus granulaires,
allouer plus de CPU ou de mémoire à l'aide de 🏷️ différentes versions de l'application lorsque plus de joueurs sont autorisés.
Commencez par les conditions idéales et étendez les restrictions pour garantir des matchs rapides :
détendre progressivement les restrictions de latence pour trouver plus de joueurs,
réduire progressivement la taille des équipes pour nécessiter moins de joueurs et démarrer le jeu plus rapidement,
optionnellement, le serveur peut remplir les emplacements vides avec des coéquipiers IA,
augmenter progressivement la différence de niveau des joueurs autorisée pour trouver plus de joueurs,
si aucun coéquipier n'est trouvé, lancer le jeu en solo et utiliser Backfill pour ajouter des joueurs plus tard.
Versionnage Sémantique
À mesure que nous publions des mises à jour de Matchmaker, chaque nouvelle version utilise le versionnage sémantique pour communiquer clairement l'impact des changements en interprétant le format major.minor.patch :
les versions
majorincluent des changements révolutionnaires et nécessitent une révision de l'intégration,les versions
minorincluent des améliorations substantielles compatibles avec les versions antérieures,les versions
patchincluent des corrections de bugs et des améliorations mineures.
Certaines déploiements peuvent 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 les plantages imprévus du client ou les tickets abandonnés ne traînent pas et n'occupent pas vos ressources de matchmaker, les tickets seront annulés après ticket_expiration_period entraînant le changement de leur statut en CANCELLED et ensuite supprimés définitivement après ticket_removal_period.
L'essentiel de notre logique de matchmaking est configuré dans les profils de matchmaking. Chaque profil est une file d'attente de matchmaking complètement isolée, pointant vers des versions d'application avec une quantité prédéfinie de ressources CPU et mémoire (RAM) requises.
Les règles de matchmaking dans l'ensemble de règles initiale doivent être respectées pour que les joueurs soient regroupés, chacune définie par trois propriétés :
nom de votre choix, par exemple -
taille de l'équipe,type de règle, également connu sous le nom d'opérateur, par exemple -
nombre_de_joueurs,et enfin attributs de l'opérateur, par exemple
nombre_d'équipesoutaille_de_l'équipe.
Règle de comptage des joueurs
C'est une règle spéciale définissant combien de joueurs doivent correspondre pour lancer l'affectation :
nombre_d'équipesréfère au nombre d'équipes, 1 équipe peut être utilisée pour des modes coopératifs ou chacun pour soi,taille_de_l'équiperéfère au nombre de joueurs par équipe.
Notre simple exemple démontre un jeu coopératif avec 2 joueurs.
Veuillez noter que la "règle de comptage des joueurs" est requise et ne peut être définie qu'une seule fois dans vos règles de configuration initiales.
Règle de latence
Utilisez cette règle pour offrir le ping le plus bas possible à tous les joueurs. Une fois que les clients mesurent et soumettent leur temps d'aller-retour (ping) contre toutes les balises disponibles, Gen2 ne considérera que les matches dans une différence spécifique des valeurs de ping, mesurée par rapport aux balises de ping. Cela présente une solution « douce » à la division de votre base de joueurs, permettant de faire correspondre avec les régions voisines, améliorant particulièrement la vitesse des matchs pour les régions moins peuplées. Utilisez latence_maximale pour empêcher les correspondances avec des joueurs situés loin.
Vous pouvez maintenant passer à l'étape suivante.
Notre exemple de règle balises ci-dessus avec "différence": 50, "latence_maximale": 200 initialement :
Alice et Bob se correspondent, car 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 se correspondent pas, car | 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. Examiner les 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, il peut être EN LIGNE, HORS LIGNE ou ERREUR.
Identifiant aide le personnel d'Edgegap à trouver rapidement votre matchmaker si vous avez besoin d'aide pour résoudre des problèmes.
Démarré à peut être utile pour suivre le dernier temps de mise à jour.
Taille correspond à l'un de nos niveaux de prix.
URL API sera utilisée par les clients de jeu et les serveurs de jeu pour communiquer avec Gen2.
URL Swagger est une interface graphique openAPI pratique que nous fournissons pour explorer le schéma de l'API.
Jeton d'authentification est un jeton secret unique utilisé par les clients de jeu et le serveur de jeu pour l'authentification.
Pour tester votre nouveau matchmaker à l'aide de l'API, vous aurez besoin de l'URL Swagger, de l'URL API et du jeton d'authentification.
Vous pouvez maintenant passer à l'étape suivante.
4. Tester l'API de tickets
Tout d'abord, ouvrez votre URL Swagger pour inspecter votre schéma openAPI dans l'interface graphique 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 à partir de l'étape précédente :
laissez Collection Postman sélectionnée,
sélectionnez Afficher 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 sur la gauche, intitulée Matchmaker.

Afficher plus d'actions, ouvrez l'onglet Autorisation et choisissez :
Type d'authentification - Clé API,
Clé - « Authorization »
Valeur - insérez ici la valeur de votre Jeton d'authentification,
Ajouter à - En-tête.
Appuyez sur (CTRL/CMD+S) ou sur l'icône Enregistrer 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, ouvrant un nouvel onglet.
Sélectionnez l'onglet Corps pour prévisualiser votre demande de ticket joueur:
remarquez player_ip défini sur null - cela utilisera automatiquement l'adresse IP ajoutée à votre demande (voir Intégration serveur à serveur pour des alternatives),
profilréfère à vos profils de matchmaking,attributsincluent des valeurs pour vos règles de matchmaker, dans ce cas pour la règlelatences,la règle
player_countest 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 du Swagger de l'échantillon.
Cliquez sur Envoyer et examinez la réponse à votre demande de ticket joueur :
idest votre ID de ticket de matchmaking unique, conservez-le pour vérifier votre ticket plus tard,profilconfirmant le choix des profils de matchmaking,group_idest un identifiant de groupe unique attribué à chaque ticket, un joueur solo est représenté comme un groupe de 1,voir Rejoindre en groupe pour le matchmaking avec vos amis ou lobbies,
player_ipest l'adresse IP publique résolue du joueur, quelle que soit la méthode d'identification utilisée,assignmentest défini sur null pour indiquer que le ticket n'a pas encore été apparié ou affecté à un serveur,created_atfournit des informations sur la date de création du ticket joueur pour l'utilisation de l'interface utilisateur du jeu,statutindique l'état 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'accordent et qu'un serveur soit démarré.
Dans votre collection Matchmaker, sélectionnez {ticketId} et Lire un ticket de matchmaking.
Entrez l'ID de ticket de la réponse à l'étape précédente et cliquez sur Envoyer.

Examinez l'affectation mise à jour pour votre ticket joueur :
le statut est passé à
MATCH_FOUNDd'abord, tout en gardantassignmentdéfini surnullpour indiquer que les joueurs ont été appariés et qu'un serveur est en cours d'affectation,

Cliquez à nouveau sur Envoyer pour vérifier votre ticket et examinez l'affectation mise à jour pour votre ticket joueur :
le statut est passé à
HOST_ASSIGNEDavecassignmentcontenant les détails du serveur assigné.
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 assigné.
Une fois que vous avez vérifié que vous êtes en mesure de vous connecter à votre déploiement sans problème et que vous avez terminé le test, arrêtez votre déploiement pour libérer de l'espace 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 le client de jeu, pour gérer les tickets joueurs,
avec le serveur de jeu, pour :
traiter les préférences des joueurs transmises via leurs tickets,
optionnellement pour supporter 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 statut des tickets tout au long du processus de matchmaking aux joueurs à l'aide de l'interface utilisateur du jeu pour la meilleure expérience du joueur. Voir :
Edgegap - SDK de matchmaking Unity Gen2,
importer un exemple simple et personnaliser selon vos besoins,
Betide Studio - Kit d'intégration Edgegap Unreal Engine,
télécharger le projet exemple et personnaliser selon vos besoins.
Dans le 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- 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 d'API n'est requise :
Lisez les variables d'environnement injectées (Gen2) pour récupérer les données initiales de matchmaking des joueurs.
Lisez les variables d'environnement injectées (versions de l'application) pour les paramètres, les paramètres (capacité des joueurs), et les secrets spécifiques à la version.
Lisez les 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, le serveur de jeu et les 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 de type lobby, ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation est en cours.
Une fois les clients de jeu complètement chargés, les joueurs chargent/voyagent vers la scène principale du jeu.
Optionnellement, le serveur de jeu peut créer et gérer Backfill et la capacité des joueurs (ajouter ou remplacer les joueurs qui partent).
Assurez-vous que votre déploiement sera arrêté correctement en utilisant l'URL DELETE injectée, 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 d'Edgegap Matchmaker ! Si vous souhaitez en savoir plus, lisez tout à ce sujet dans notre centre de formation.
Écrit par
l'équipe Edgegap








