
Comment ajouter un matchmaking à un MOBA
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 MOBA.
C'est également 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, peu importe 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'onboarding vous accompagnent à chaque étape du processus.
Lorsque votre jeu est en ligne, comme notre système de matchmaking est entièrement géré, vous n'avez pas besoin de gérer l'infrastructure, les bugs, les pannes, la scalabilité ou la gestion de 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 MOBA
-> Cet article est basé sur la documentation de Matchmaking. Si vous rencontrez des problèmes ou des divergences, veuillez vous référer au guide original, car ils sont plus fréquemment mis à jour.
L'exemple suivant vous aidera à tester le flux principal de joueurs de matchmaking, à savoir :
Créer l'instance du matchmaker sur le cluster hôte partagé,
Définir les règles et paramètres dans votre configuration de matchmaker,
Et enfin, tester le flux de joueurs et gérer les billets de 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 MOBA. Voilà, vous avez (techniquement) fait la moitié du chemin ! Il vous suffirait d'intégrer le matchmaker dans votre jeu (voir étape 5).
Maintenant, vous ne devriez jamais suivre aveuglément un exemple JSON trouvé sur Internet, il est donc fortement recommandé d'adapter les règles ci-dessus à votre jeu. L'étape 2 (« Explorer la configuration ») est notre mode d'emploi qui explique la fonction de chaque règle de matchmaking.
L'étape 3 (« Examiner les détails de l'instance ») traite de votre matchmaker personnel et spécifique pour s'assurer qu'il est déployé et fonctionne avec la conception de votre jeu.
L'étape 4, comme le nom l'indique (« 4. Tester l'API des billets »), concerne entièrement le fait de tester que vos demandes de matchmaking venant des joueurs soient reçues par le matchmaker, appelés billets.
L'étape 5 (« Intégrer Matchmaking dans votre jeu ») met en évidence comment intégrer le matchmaker dans le projet de votre moteur.
Si vous rencontrez des problèmes de dépannage, notre centre d'apprentissage approfondi contient des conseils supplémentaires de dépannage.
1. Configurer le niveau gratuit
Inscrivez-vous pour votre compte Edgegap gratuit, et accédez à la page du tableau de bord du Matchmaker.
De là, cliquez d'abord sur Créer un Matchmaker puis saisissez :
Un nom pour votre matchmaker – qui est uniquement pour votre propre référence, par exemple
quickstart-dev,Ensuite, téléchargez l'exemple simple suivant en tant que configuration JSON ci-dessous pour votre jeu MOBA :
(rappel amical de s'assurer de changer le nom et version de l'application 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 entraînera le démarrage d'un nouveau cluster gratuit avec votre matchmaker Simple Example.
Vous pouvez maintenant passer à l'étape suivante.
2. Explorer la configuration
Règles de jeu MOBA uniques
Spécifiquement pour les jeux MOBA, vous pouvez définir plusieurs profils de matchmaking pour les règles et réglages spécifiques des modes de jeu :
restreindre le grade dans une différence entre deux joueurs pour des jeux plus décontractés,
restreindre la différence de grade pour n'autoriser que les adversaires ayant le même grade pour les jeux classés,
permettre aux joueurs de fournir leurs préférences de carte et de choisir une carte adaptée à tout le monde,
ajouter une interface de sélection de hub pour restreindre les adversaires aux balises de ping spécifiées,
restreindre la latence de matchmaking à un seuil maximum pour éviter de faire correspondre les joueurs éloignés,
restreindre la latence de matchmaking à une différence maximum pour maximiser l'équité du ping,
allouer plus de CPU ou de mémoire en utilisant différentes versions d'application lorsque plus de joueurs sont autorisés,
Rejoindre comme groupe pour des lobbies préfabriqués ou pour remplir des équipes sans dépasser les tailles d'équipe.
Commencez avec les conditions idéales et étendez les restrictions pour assurer des matchs rapides :
desserrez lentement les restrictions de latence au fil du temps pour trouver plus de joueurs,
augmentez lentement la différence de grade autorisée pour trouver plus de joueurs,
augmentez le temps entre les extensions pour les plus hauts grades (challengers), car moins de joueurs sont disponibles.
Créez des billets avec un grade supérieur pour des matchs de promotion, pour affronter des adversaires plus coriaces.
Définissez des profils de tricheurs séparés pour garantir que les tricheurs signalés ou les joueurs ayant un grand nombre de rapports de modération n'affectent 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 changements en interprétant le format major.minor.patch :
les versions
majeuresincluent des changements importants et nécessitent une révision de l'intégration,les versions
mineuresincluent des améliorations substantielles rétrocompatibles,les versions
correctivesincluent des corrections de bugs et des améliorations mineures.
Certaines déploiements peuvent entraîner des erreurs. Nous tentons de résoudre ce problème en réessayant le déploiement jusqu'à max_deployment_retry_count fois automatiquement (sans confirmation client).
Pour garantir que les plantages clients inattendus ou les billets abandonnés ne persistent pas et n'occupent pas vos ressources de matchmaker, les billets seront annulés après ticket_expiration_period causant leur statut à changer en ANNULÉ puis définitivement supprimés après ticket_removal_period.
Le cœur 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 versles versions de l'app avec un montant prédéfini de ressources CPU et mémoire (RAM) requises.
Les règles de matchmaking dans l'ensemble de règles initiales doivent être remplies pour que les joueurs soient regroupés ensemble, chacune définie par trois propriétés :
nom de votre choix, par exemple -
taille du match,type de règle, également connu sous le nom d'opérateur, par exemple -
nombre_de_joueurs,et enfin attributs d'opérateur, par exemple
nombre_d'équipesoutaille_d'équipe.
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'équipesfait référence au nombre d'équipes, 1 équipe peut être utilisée pour des modes coopératifs ou tous contre tous,taille_d'équipefait référence au nombre de joueurs par équipe.
Notre simple exemple démontre un jeu coopératif avec 2 joueurs.
Veuillez noter que la règle "Nombre de joueurs" est requise et peut être définie une seule fois dans vos règles initiales de configuration.
Règles 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 de trajet aller-retour (ping) contre toutes les balises disponibles, Gen2 ne considérera que les matchs dans une différence de valeurs de ping spécifique, mesurée par rapport aux balises de ping. Cela présente une solution « douce » pour diviser votre base de joueurs, permettant une correspondance avec des régions voisines, améliorant particulièrement la vitesse des matchs pour les régions moins peuplées. Utilisez max_latencepour éviter d'apparier des joueurs situés loin.
Vous pouvez maintenant passer à l'étape suivante.
Notre exemple de règle balises ci-dessus avec "différence": 50, "max_latence": 200 initialement :
Alice et Bob se correspondraient, puisque Pékin est écarté (>200) et le reste est | 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 correspondraient pas, car | C-D | > 50 pour la balise 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 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 sur notre tableau de bord une fois qu'il est initialisé :

Statut indique la santé du service, pouvant être EN LIGNE, HORS LIGNE ou ERREUR.
Identifiant aide le personnel d'Edgegap à trouver rapidement votre matchmaker si vous avez besoin d'aide au dépannage.
Démarré le peut être utile pour retracer le temps de la dernière mise à jour.
Taille correspond à l'un de nos niveaux de tarification.
URL API sera utilisée par les clients et serveurs de jeu pour communiquer avec Gen2.
URL Swagger est une interface ouverte de spécifications API que nous fournissons pour explorer le schéma API.
Jeton d'authentification est un jeton secret unique utilisé par les clients et serveurs 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'authentification.
Vous pouvez maintenant passer à l'étape suivante.
4. Tester l'API des billets
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 swagger.json fichier de l'étape précédente :
gardez Postman Collection sélectionné,
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 à 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 la valeur de votre AuthToken,
Ajouter à – En-tête.
Appuyez (CTRL/CMD+S) ou sur l'icône d'enregistrement pour enregistrer les modifications. Le point orange dans votre onglet Postman devrait disparaître.
Dans votre collection Matchmaker, sélectionnez billets et Créer un billet de matchmaking, ouvrant un nouvel onglet.
Sélectionnez l'onglet Corps pour prévisualiser votre demande de billet de joueur :
remarquez player_ip défini sur null - cela utilisera l'adresse IP automatiquement ajoutée à votre demande (voir Intégration serveur à serveur pour d'autres options),
profilfait référence à vos profils de matchmaking,attributsincluent des valeurs pour vos règles de matchmaker, dans ce cas pour lalatencerègle,règle
nombre_de_joueursest la seule règle qui ne nécessite pas d'attributs dans les billets de joueur.
REMARQUE : Assurez-vous de vous référer à la configuration de l'importation du Swagger de l'échantillon.
Cliquez sur Envoyer et examinez la réponse à votre demande de billet de joueur :
idest votre enquête de billet de matchmaking unique, conservez-le enregistré pour vérifier votre billet ultérieurement,profilconfirmant le choix des profils de matchmaking,groupe_idest un identifiant de groupe unique émis à chaque billet, un joueur solitaire est représenté comme un groupe de 1,voir Rejoindre comme groupe pour le matchmaking avec vos amis ou des lobbies,
player_ipest l'adresse IP publique résolue du joueur, quel que soit la méthode d'identification utilisée,attributionest définie sur null pour indiquer que le billet n'a pas encore été apparié ou attribué à un serveur,créé_lefournit des informations sur la date de création du billet de joueur pour l'utilisation de l'interface utilisateur de jeu,statutindique le statut actuel du billet, tous les billets commencent parRECHERCHE(voir Processus de Matchmaking pour plus de détails).
Créez un deuxième billet en appuyant à nouveau sur Envoyer, afin que nos deux joueurs soient appariés et qu'un serveur soit démarré.
Dans votre collection Matchmaker, sélectionnez {ticketId} et Lire un billet de matchmaking.
Saisissez l'identifiant du billet à partir de la réponse de l'étape précédente et cliquez sur Envoyer.

Examinez l'attribution mise à jour pour votre billet de joueur :
statut changé en
PARTIE_TROUVÉEd'abord, tout en gardantattributiondéfinie surnullpour indiquer que les joueurs ont été appariés et qu'un serveur est en cours d'attribution,

Cliquez sur Envoyer de nouveau pour vérifier votre billet et examiner l'attribution mise à jour pour votre billet de joueur :
statut changé en
HÔTE_ATTRIBUÉavecattributioncontenant les détails du serveur attribué.
Inspectez votre nouveau déploiement sur notre tableau de bord :
remarquez que chaque déploiement est étiqueté avec tous les ID des billets et le profil pour plus de traçabilité.

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ème 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
L'intégration du matchmaking d'Edgegap comprend :
avec Client de jeu, pour gérer les billets de joueurs,
avec Serveur de jeu, pour :
traiter les préférences des joueurs passées par leurs billets,
facultativement pour prendre en charge le 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 de billets tout au long du processus de matchmaking aux joueurs à l'aide de l'interface utilisateur du jeu pour une meilleure expérience. 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 pour vos besoins.
Dans Client de jeu, assurez-vous de gérer les erreurs non réessayables :
HTTP 404 Non trouvé- le billet a été supprimé,HTTP 500 Erreur interne du serveur- panne 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 nécessaire :
Lisez les variables d'environnement injectées (Gen2) pour récupérer les données de matchmaking initiales des joueurs.
Lisez les variables d'environnement injectées (versions d'app) pour les paramètres spécifiques aux versions, les paramètres (capacité des joueurs) et les secrets.
Lisez les variables d'environnement injectées (déploiement) pour obtenir des informations sur le déploiement, telles que l'adresse IP, l'emplacement ou autre.
Une fois les joueurs connectés, le serveur de jeu et les clients de jeu commencent une scène de chargement pour exécuter les é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 type lobby ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation progresse.
Une fois que les clients de jeu sont entièrement chargés, les joueurs chargent/voyagent vers la scène principale de gameplay.
Facultativement, le serveur de jeu peut créer et gérer le Backfill et la capacité des joueurs (ajouter ou remplacer des joueurs qui partent).
Assurez-vous que votre déploiement sera correctement arrêté en utilisant l'URL DELETE injectée, si :
aucun joueur ne rejoint la partie,
tous les joueurs ont quitté la partie,
la partie se conclut correctement.
Félicitations, vous avez complété 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








