
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 sur le matchmaking. Si vous rencontrez des problèmes ou des incohérences, veuillez vous assurer de consulter le guide original, car il est plus souvent mis à jour.
L'exemple suivant vous aidera à tester le flux de joueurs matchmaking , à savoir :
Créer l'instance du matchmaking sur le Cluster d'Hébergement,
Définir des règles et des paramètres dans votre Configuration de matchmaking,
Et enfin, tester le flux de joueurs et gérer les Tickets de Joueurs avec notre API.
Il y a cinq étapes pour implémenter notre système de matchmaking dans votre jeu :
La première étape est de créer un compte et d'utiliser notre exemple de jeu MOBA. Voilà, vous êtes (techniquement) à mi-chemin ! Vous n'avez qu'à 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, et il est donc fortement recommandé d'adapter les règles ci-dessus à votre jeu. L'étape 2 ("Explorer la Configuration") est notre "comment lire" qui explique la fonction de chacune des règles de matchmaking ("Explorer la Configuration").
L'étape 3 ("Vérifier 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 le nom l'indique ("4. Tester l'API des Tickets"), concerne le test des demandes de matchmaking des joueurs reçues par le matchmaker, appelées tickets.
L'étape 5 ("Intégrer le Matchmaking dans votre Jeu") met en avant comment intégrer le matchmaker dans le projet de votre moteur.
Si vous avez des défis de dépannage, notre Centre d'Apprentissage approfondi propose des conseils supplémentaires pour le dépannage.
1. Configuration du Niveau Gratuit
Inscrivez-vous pour votre compte Edgegap gratuit, et naviguez vers la page du tableau de bord du Matchmaker.
De là, cliquez sur Créer un Matchmaker en premier, puis saisissez :
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 suivant en tant que configuration JSON ci-dessous pour votre jeu MOBA :
(rappel amical pour s'assurer de modifier le nom
et version
de l'application pour correspondre à votre Application et Versions!)
S'il n'y a pas d'erreurs de validation, appuyez 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 exemple simple de matchmaker.
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 des règles et des paramètres spécifiques aux modes de jeu :
restreindre le rang dans une différence entre deux joueurs pour des jeux plus décontractés,
restreindre la différence de rang pour n'autoriser que les adversaires avec le même rang pour les jeux classés,
laisser les joueurs fournir leurs préférences de carte et choisir une carte adaptée à tous,
ajouter Interface Utilisateur de Sélection de Hub pour restreindre les adversaires à des Balises de Ping spécifiées,
restreindre latence de matchmaking à un seuil maximal pour éviter de faire correspondre des joueurs éloignés,
restreindre latence de matchmaking à une différence maximale pour maximiser l'équité du ping,
allouer plus de CPU ou de mémoire en utilisant différentes Versions d'App quand plus de joueurs sont autorisés,
Rejoindre en Groupe pour des salons préétablis ou pour remplir des équipes sans dépasser les tailles d'équipe.
Commencez avec les conditions idéales, et étendre les restrictions pour assurer des parties rapides :
détendre progressivement les restrictions de latence au fil du temps pour trouver plus de joueurs,
augmenter progressivement la différence de rang autorisée pour trouver plus de joueurs,
augmenter le temps entre les expansions pour les rangs les plus élevés (challengers), car moins de joueurs sont disponibles.
Créez des tickets avec un rang plus élevé pour les matchs de promotion, afin de correspondre à des adversaires plus coriaces.
Définissez des profils de tricheur séparés afin de 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 Versionnage Sémantique pour communiquer clairement l'impact des changements en interprétant le format majeur.minor.patch
:
majeur
les versions incluent des changements majeurs et nécessitent une révision de l'intégration,mineur
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 tentons de résoudre cela en réessayant le déploiement jusqu'à max_deployment_retry_count
fois automatiquement (sans confirmation du client).
Pour garantir que les pannes inattendues des clients ou les tickets abandonnés ne persistent pas et n'occupent pas les ressources de votre matchmaking, les tickets seront annulés après le ticket_expiration_period
modifiant leur statut en 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 complètement isolée, pointant vers Versions d'App avec un montant prédéfini de ressources CPU et mémoire (RAM) requises.
Règles de Matchmaking dans l'ensemble de règles initial doit être respectées pour que les joueurs soient regroupés ensemble, chacune définie par trois propriétés :
nom au 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 les attributs de l'opérateur, par exemple
nombre_d_equipes
outaille_d_equipes
.
Règle de Nombre de Joueurs
C'est une règle spéciale définissant combien de joueurs doivent correspondre pour initier l'attribution :
nombre_d_equipes
se réfère au nombre d'équipes, 1 équipe peut être utilisée pour des modes coopératifs ou en free-for-all,taille_d_equipes
se réfère 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 initiales.
Règle de 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 de parcours aller-retour (ping) contre toutes les balises disponibles, Gen2 ne considérera que les matchs dans une différence
spécifique de valeurs de ping, mesurées contre Balises de Ping. Cela présente une solution "douce" pour diviser votre base de joueurs, permettant un matchmaking avec des régions voisines, améliorant notamment la vitesse des matchs pour des régions moins peuplées. Utilisez max_latency
pour éviter le matchmaking contre des joueurs situés loin.
Vous pouvez maintenant passer à l'étape suivante.
Notre exemple règles_balises
ci-dessus avec "difference": 50, "max_latency": 200
initialement :
Alice et Bob s'accorderont, puisque Beijing est écarté (>200) et le reste est dans | A-B | < 50 :
Alice {Montréal : 12.3, Newark : 45.6, Dallas : 59.9, Beijing : 264.4}; et
Bob {Montréal : 27.3, Newark : 32.4, Dallas : 23.1, Beijing : 252.2}.
Charlie et Dave ne s'accordent pas, puisque | C-D | > 50 pour le Beacon de Dallas :
Alice {Montréal : 5.7, Newark : 44.2, Dallas : 59.5, Beijing : 263.2}; et
Bob {Montréal : 57.8, Newark : 32.0, Dallas : 24.2, Beijing : 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 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é :

Statut indique l'état 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.
Commencé à peut être utile pour suivre la dernière heure de mise à jour.
Taille correspond à l'un de nos Niveaux de Tarification.
URL de l'API sera utilisée par les Clients de Jeu et les Serveurs de Jeu pour communiquer avec Gen2.
URL Swagger est une interface GUI de spécification openAPI pratique que nous fournissons pour explorer le schéma de l'API.
Token d'Auth est un token 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 de l'API et du Token d'Auth.
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'/...swagger.json
URL 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 Collection Postman sélectionnée,
séléctionnez 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 sur la gauche, intitulée Matchmaker.

Voir plus d'actions, ouvrez l'onglet Autorisation et choisissez :
Type d'Auth - Clé API,
Clé - “Authorization”
Valeur - insérez votre valeur AuthToken ici,
Ajouter à - Header.
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 de 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 défini sur null
- cela fera en sorte d'utiliser l'adresse IP automatiquement ajoutée à votre demande (voir Intégration Serveur à Serveur pour des alternatives),
profil
se réfère à vos Profils de Matchmaking,attributs
incluent des valeurs pour vos règles de matchmaking, dans ce cas pour larègle de latences
,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'échantillon.
Cliquez sur Envoyer et examinez la réponse à votre demande de ticket de joueur :
id
est votre ID unique de ticket de matchmaking, conservez-le pour vérifier votre ticket plus tard,profil
confirme 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 en Groupe pour le matchmaking avec vos amis ou dans des salons,
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é assorti ou attribué à un serveur,created_at
fournit des informations sur le moment où le ticket du joueur a été créé pour l'usage de l'UI du jeu,status
indique l'état actuel du ticket, tous les tickets commencent dansSEARCHING
(voir Processus de Matchmaking pour les détails).
Créez un deuxième ticket en appuyant à nouveau sur Envoyer pour 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 de l'étape précédente et cliquez sur Envoyer.

Vérifiez l'attribution mise à jour pour votre ticket de joueur :
le statut est passé à
MATCH_FOUND
en premier, tout en gardantassignment
défini surnull
pour indiquer que les joueurs se sont accordés et qu'un serveur est en cours d'attribution,

Cliquez à nouveau sur Envoyer pour vérifier votre ticket, et examinez l'attribution mise à jour pour votre ticket de joueur :
le statut est passé à
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 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 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 transmises par leurs tickets,
facultativement 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 d'état des tickets tout au long du Processus de Matchmaking aux joueurs en utilisant l'UI en jeu pour une meilleure expérience de joueur. Voir :
Edgegap - SDK Matchmaking Unity Gen2,
importer un exemple simple et personnaliser selon vos besoins,
Betide Studio - Kit d'Intégration Unreal Engine Edgegap,
télécharger le projet exemple et personnaliser selon vos besoins.
Dans Client de Jeu, assurez-vous de gérer les erreurs non réessayables :
HTTP 404 Not Found
- le ticket a été supprimé,HTTP 500 Internal Server Error
- panne temporaire de 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 :
Lire 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'App) pour des paramètres spécifiques à la version, des paramètres (capacité des joueurs) et des secrets.
Lisez Variables d'Environnement Injectées (Déploiement) pour des informations de déploiement, telles que l'adresse IP, l'emplacement, ou plus encore.
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 UI sociale de type salon, ou un écran de chargement avec une barre de progression, pour indiquer que l'initialisation progresse.
Une fois que les Clients de Jeu sont complètement chargés, les joueurs chargent/voyagent vers la scène principale de jeu.
Facultativement, le 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 DELETE_URL Injecté, si :
aucun joueur ne rejoint le match,
tous les joueurs ont quitté le match,
la partie 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
