
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 à votre jeu de sport multijoueur
-> Cet article est basé sur Matchmaking documentation. Si vous rencontrez des problèmes ou des divergences, assurez-vous de vous référer au guide original, car ils sont plus souvent mis à jour.
L'exemple suivant vous aidera à tester le flux principal de matchmaking de joueurs, notamment :
Créer l'instance du matchmaker sur le cluster d'hébergement 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 est de créer un compte et d'utiliser notre exemple de jeu de stratégie. Voilà, vous êtes (techniquement) à mi-chemin ! Il vous suffira d'intégrer le matchmaker dans votre jeu (voir l'étape 5).
Maintenant, 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 de sport. L'étape 2 (« Explorer la configuration ») est notre « comment lire » qui examine 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 spécifique afin de s'assurer 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 billets »), concerne les tests de vos demandes de matchmaking de joueurs reçues par le matchmaker, appelées billets.
L'étape 5 (« Intégrer le matchmaking dans votre jeu ») souligne comment intégrer le matchmaker dans le projet de votre moteur.
Si vous avez des défis de dépannage, notre centre d'apprentissage a des conseils de dépannage supplémentaires.
1. Configuration de la version gratuite
Inscrivez-vous pour votre compte Edgegap gratuit, et naviguez jusqu'à 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 purement pour votre 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 de sport :
(rappel aimable de veiller à modifier le nom de l'application et la version pour qu'ils correspondent à vos 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 entraînera le démarrage d'un nouveau cluster gratuit, avec votre matchmaker Exemple Simple.
Vous pouvez maintenant passer à l'étape suivante.
2. Explorer la configuration
Règles de jeu de sport uniques
Spécifiquement pour les jeux de sport, vous pouvez définir plusieurs profils de matchmaking pour des règles et paramètres spécifiques aux modes de jeu :
restreindre le classement dans une différence entre deux joueurs pour des jeux plus décontractés,
restreindre la différence de classement pour n'autoriser que les adversaires avec le même rang pour les jeux classés,
laisser les joueurs indiquer leurs préférences de carte et choisir une carte convenant à tout le monde,
ajouter une interface de sélection de hub pour limiter les adversaires à des balises de ping spécifiées,
restreindre la latence du matchmaking à un seuil maximum pour éviter de jumeler des joueurs éloignés,
restreindre la latence du 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'application lorsqu'un plus grand nombre de joueurs est autorisé,
Joindre en groupe pour les pré-salles de jeux ou pour former des équipes sans dépasser la taille des équipes.
Commencez avec les conditions idéales, et élargissez les contraintes pour assurer des matchs rapides :
détendez lentement les restrictions de latence au fil du temps pour trouver plus de joueurs,
augmenter lentement la différence de rang autorisée pour trouver plus de joueurs,
augmenter le temps entre les extensions pour les rangs les plus élevés (défis), car moins de joueurs sont disponibles.
Créer des billets avec un rang plus élevé pour les matchs de promotion, pour affronter des adversaires plus coriaces.
Définir des profils de tricheur séparés pour s'assurer 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.
Version sémantique
Chaque nouvelle version utilise la version sémantique pour communiquer clairement l'impact des modifications en interprétant le format majeur.mineur.correctif :
les versions
majeuresincluent des modifications perturbantes et nécessitent un examen de l'intégration,les versions
mineuresincluent des améliorations importantes rétrocompatibles,les versions
correctivesincluent des corrections de bogues et des améliorations mineures.
Certaines 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 les plantages inattendus du client ou les tickets abandonnés ne restent pas en suspens et n'occupent pas vos ressources de matchmaker, les billets seront annulés après ticket_expiration_period entraînant le changement de leur statut en ANNULÉ et ensuite supprimés définitivement 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 vers les versions des applications 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 initial doivent être remplies pour que les joueurs soient regroupés, 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 les attributs d'opérateur, par exemple
nombre_d'équipesoutaille_d'équipe.
Règle de comptage des joueurs
C'est une règle spéciale définissant combien de joueurs doivent correspondre pour initier l'assignation :
nombre_d'équipesse réfère au nombre d'équipes, 1 équipe peut être utilisée pour des modes coopératifs ou chacun pour soi,taille_d'équipese 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 "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 latences
Utilisez cette règle pour fournir 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 prendra en compte que les matchs à l'intérieur d'une différence spécifique dans les valeurs de ping, mesurées contre les balises de ping. Cela présente une solution "douce" pour diviser votre base de joueurs, permettant le jumelage avec des régions voisines, améliorant particulièrement la vitesse de match pour les régions moins peuplées. Utilisez latence_max pour éviter 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_max": 200 initialement :
Alice et Bob se matcheront, car Pékin est ignoré (>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 matcheront 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 latences" 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 l'état de santé du service, 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 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 utilisateur de spécification 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 les serveurs 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 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 fichier swagger.json à partir de l'étape précédente :
gardez Collection Postman sélectionnée,
sélectionnez 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é - « Autorisation »
Valeur - insérez votre valeur AuthToken ici,
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 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 :
notez le player_ip défini sur null - cela utilisera l'adresse IP automatiquement ajoutée à votre demande (voir intégration serveur à serveur pour des alternatives),
profilse réfère à vos profils de matchmaking,attributsincluent des valeurs pour vos règles de matchmaker, dans ce cas pour lelatencesrègle,la règle
nombre_de_joueursest la seule règle qui ne nécessite aucun attribut dans les billets de joueur.
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 billet de joueur :
idest votre identifiant unique de billet de matchmaking, conservez-le pour vérifier votre billet plus tard,profilconfirmant le choix des profils de matchmaking,group_idest un identifiant de groupe unique attribué à chaque billet, un joueur solo est représenté comme un groupe de 1,voir Rejoindre en groupe pour le matchmaking avec vos amis ou salons,
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 billet n'a pas encore été jumelé ou attribué à un serveur,created_atfournit des informations sur le moment où le billet du joueur a été créé à des fins d'utilisation de l'interface utilisateur du jeu,statusindique l'état actuel du billet, tous les billets commencent àRECHERCHE(voir Processus de matchmaking pour les détails).
Créez un deuxième billet en appuyant à nouveau sur Envoyer, pour que nos deux joueurs se rencontrent et qu'un serveur soit démarré.
Dans votre collection Matchmaker, sélectionnez {ticketId} et Lire un billet de matchmaking.
Entrez l'identifiant du billet de la réponse à l'étape précédente et cliquez sur Envoyer.

Examinez l'affectation mise à jour pour votre billet de joueur :
le statut est passé à
MATCH_TROUVÉd'abord, tout en gardantassignmentdéfini surnullpour indiquer que les joueurs se sont assortis et qu'un serveur est en cours d'assignation,

Cliquez sur Envoyer à nouveau pour vérifier votre billet, et examinez l'affectation mise à jour pour votre billet de joueur :
le statut est passé à
HÔTE_ASSIGNÉavecassignmentcontenant des détails sur le serveur attribué.
Examinez votre nouveau déploiement dans notre tableau de bord :
notez que chaque déploiement est étiqueté avec tous les identifiants de 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 avez vérifié 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 construction.
Vous pouvez maintenant passer à l'étape suivante.
5. Intégrez le Matchmaker dans votre jeu
Le matchmaking d'Edgegap s'intègre :
avec Client de jeu, pour gérer les billets de joueur,
avec Serveur de jeu, pour :
traiter les préférences des joueurs transmises par le biais de leurs billets,
facultativement pour prendre en charge le remplissage pour ajouter ou remplacer des joueurs après avoir commencé.
Pour le client de jeu, nous recommandons de fournir des mises à jour du statut des billets tout au long du processus de matchmaking aux joueurs à l'aide de l'interface utilisateur du jeu pour la meilleure expérience de joueur. Voir :
Edgegap - SDK Unity Gen2 de matchmaking,
importer un exemple simple et personnalisez-le selon vos besoins,
Betide Studio - Kit d'intégration Edgegap Unreal Engine,
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 Non trouvé- le billet a été supprimé,HTTP 500 Erreur interne du serveur- panne temporaire de 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 :
Lisez pour 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'applications) pour des paramètres spécifiques à chaque version, des paramètres (capacité des joueurs) et des secrets.
Lisez Les variables d'environnement injectées (déploiement) pour des informations sur le déploiement, telles que l'adresse IP, la localisation ou plus encore.
Une fois les joueurs connectés, 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 hall 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 du jeu.
Facultativement, le serveur de jeu peut créer et gérer le remplissage 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 l'URL de suppression injectée, si :
aucun joueur ne rejoint le match,
tous les joueurs ont quitté le match,
le match se termine correctement.
Félicitations, vous avez complété l'intégration du Matchmaker Edgegap ! Si vous souhaitez en savoir davantage, lisez tout à ce sujet dans notre centre d'apprentissage.
Écrit par
l'équipe Edgegap








