
Comment ajouter un matchmaking à un jeu de cartes à collectionner 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 TCG.
C'est aussi le seul système de matchmaking (à notre connaissance) avec des règles de matchmaking basées sur la latence pour fournir l'expérience de jeu 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 simple 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 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 cartes à collectionner multijoueur (TCG)
-> Cet article est basé sur la documentation de 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 de joueurs principal de matchmaking , à savoir :
Création de l'instance de matchmaker sur le Cluster d'hébergement partagé,
Définition des règles et des paramètres dans votre Configuration de matchmaker,
Et enfin, tester le flux de joueurs et gérer les Billets 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 TCG. Voilà, vous avez (techniquement) fait la moitié du chemin ! Vous aurez seulement besoin 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, 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 approfondit la fonction de chaque fonction de règles de matchmaking (« Explorer la Configuration »).
L'étape 3 (« Examiner les détails de l'instance ») concerne votre matchmaker personnel et spécifique pour vérifier 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 de Billet »), concerne le test des demandes de matchmaking des joueurs reçues par le matchmaker, appelées billets.
L'étape 5 (« Intégrer Matchmaking dans votre Jeu ») met en avant comment intégrer le matchmaker dans le projet de votre moteur.
Si vous rencontrez des difficultés de dépannage, notre Centre de formation propose des conseils supplémentaires en matière de dépannage.
1. Configuration du niveau gratuit
Inscrivez-vous pour votre compte Edgegap gratuit, et naviguez vers la page du tableau de bord Matchmaker.
De là, cliquez d'abord sur Créer un Matchmaker puis entrez :
Un nom pour votre matchmaker – qui est purement pour votre propre référence, par exemple
demarrage-rapide-dev,Ensuite, téléchargez l'exemple simple suivant en tant que configuration JSON ci-dessous pour votre jeu TCG :
(Petite piqûre de rappel pour vous assurer de changer le nom de l'application et la version pour correspondre à votre Application et Versions !)
Si aucune erreur de validation n'apparaît, appuyez 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 Exemple Simple.
Vous pouvez maintenant passer à l'étape suivante.
2. Explorer la Configuration
Règles de jeu TCG uniques
Spécifiquement pour les jeux TCG, vous pouvez définir plusieurs Profils de Matchmaking pour des règles et des paramètres de modes de jeu spécifiques :
restreindre le rang dans une différence entre deux joueurs pour des jeux plus décontractés,
restreindre la différence de rang pour ne permettre que les adversaires du même rang pour les jeux classés,
laisser les joueurs fournir leurs préférences de carte et choisir une carte adaptée à tout le monde,
ajouter une Interface de Sélection de Hub pour restreindre les adversaires aux Balises de Latence spécifiées,
restreindre la latence de matchmaking à un seuil maximum pour empêcher le jumelage de joueurs éloignés,
restreindre la 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'Appli lorsqu'un plus grand nombre de joueurs est autorisé,
Rejoindre en Groupe pour des lobbies prédéfinis ou pour remplir des équipes sans dépasser la taille des équipes.
Commencez avec les conditions idéales, et étendez les restrictions pour garantir des matchs rapides :
détendre 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 expansions pour les rangs les plus élevés (challengers), car moins de joueurs sont disponibles.
Créez des billets avec un rang supérieur pour les matchs de promotion, pour correspondre à des adversaires plus difficiles.
Définissez des profils de tricheurs séparés pour garantir que les tricheurs identifiés ou les joueurs avec une grande quantité 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 majeur.mineur.patch :
les versions
majeuresincluent des changements cassants et nécessitent une révision intégration,les versions
mineuresincluent des améliorations importantes rétrocompatibles,les versions
patchincluent des corrections de bugs 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 assurer que des plantages clients inattendus ou des billets abandonnés ne persistent pas et n'occupent pas vos ressources de matchmaker, les billets seront annulés après ticket_expiration_period changeant leur statut en CANCELLED puis supprimés définitivement 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'Appli avec la quantité prédéfinie de ressources CPU et mémoire (RAM) requises.
Les Règles de Matchmaking du jeu de règles initial doivent être respectées pour que les joueurs soient groupé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 les attributs de l'opérateur, par exemple
nombre_d_equipesoutaille_de_l_equipe.
Règle du Nombre de Joueurs
C'est une règle spéciale définissant combien de joueurs doivent correspondre pour initier l'assignation :
nombre_d_equipesse réfère au nombre d'équipes, 1 équipe peut être utilisée pour des modes coopératifs ou free-for-all,taille_de_l_equipese 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 des 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 trajet aller-retour (ping) contre toutes les balises disponibles, Gen2 ne considèrera que les matchs au sein d'une différence spécifique des valeurs de ping, mesurée contre les Balises de Ping. Cela présente une solution "douce" pour diviser votre base de joueurs, permettant des correspondances avec les régions voisines, améliorant particulièrement la vitesse de correspondance pour les régions moins peuplées. Utilisez latence_maxpour éviter les correspondances contre des joueurs situés loin.
Vous pouvez maintenant passer à l'étape suivante.
Notre exemple balises avec "différence": 50, "latence_max": 200 initialement :
Alice et Bob se correspondront, car Pékin est exclu (>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 correspondront pas, car | C-D | > 50 pour la Balise Dallas :
Charlie {Montréal : 5.7 Newark : 44.2, Dallas : 59.5, Pékin : 263.2} ; et
Dave {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 la 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.
Démarré à 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 openAPI utile que nous fournissons pour explorer le schéma de l'API.
Jeton d'auth est un jeton 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 API et du Jeton d'auth.
Vous pouvez maintenant passer à l'étape suivante.
4. Tester l'API de 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 comme un fichier sur votre disque (CTRL/CMD+S).
Ouvrez votre application Postman et connectez-vous à votre compte gratuit.
Importez votre swagger.json à partir de l'étape précédente :
gardez Postman Collection sélectionné,
sélectionnez Afficher les paramètres d'importation et changez le réglage 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é - « Authorization »
Valeur - insérez ici votre valeur AuthToken,
Ajouter à - En-tête.
Appuyez (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 joueur :
remarquez player_ip défini comme null - cela utilisera automatiquement l'adresse IP ajoutée à votre demande (voir Intégration de Serveur à Serveur pour des alternatives),
profilese réfère à vos Profils de Matchmaking,attributsinclus les valeurs pour vos règles de matchmaker, dans ce cas pour la règlelatences,la règle
nombre_de_joueursest la seule règle qui ne nécessite pas d'attributs dans les billets joueurs.
REMARQUE : Assurez-vous de faire référence à la configuration d'importation Swagger de l'échantillon.
Cliquez sur Envoyer et passez en revue la réponse à votre demande de billet joueur :
idest votre ID de billet de matchmaking unique, gardez ceci enregistré pour vérifier votre billet plus tard,profileconfirmant le choix des Profils de Matchmaking,group_idest un ID de groupe unique attribué à chaque billet, un joueur solo étant représenté comme un groupe de 1,voir Rejoindre en Groupe pour le matchmaking avec vos amis ou des lobbies,
player_ipest l'adresse IP publique résolue du joueur, quelle que soit la méthode d'identification utilisée,clusterest réglé à null poursignifier que l'intérêt n'a pas encore été correspondue ou assignée à un serveur,created_atfournit des informations sur la date de création du billet joueur à des fins d'utilisation de l'interface utilisateur du jeu,statusindique 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, de sorte que nos deux joueurs correspondent et qu'un serveur soit démarré.
Dans votre collection Matchmaker, sélectionnez {ticketId} et Lire un billet de matchmaking.
Entrez l'ID du billet de la réponse à l'étape précédente et cliquez sur Envoyer.

Passez en revue l'assignation mise à jour pour votre billet joueur :
le statut est passé à
MATCH_TROUVE, tout en gardantclusterréglé ànullpour indiquer que les joueurs ont été appariés et qu'un serveur est en cours d'assignation,

Appuyez à nouveau sur Envoyer pour vérifier votre billet, et passez en revue l'assignation mise à jour pour votre billet joueur :
le statut est passé à
HÔTE_ASSIGNÉavecclustercontenant 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 ID de billets 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 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égrez le Matchmaker dans votre Jeu
Le matchmaking d'Edgegap s'intègre :
avec le Client de Jeu, pour gérer les Billets Joueurs,
avec le Serveur de Jeu, pour :
traiter les préférences des joueurs transmises via leurs billets,
facultativement pour supporter le Remplissage 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 billet tout au long du Processus de Matchmaking aux joueurs en utilisant l'interface utilisateur du jeu pour la meilleure expérience utilisateur. Voir :
Edgegap – SDK Unity Gen2 Matchmaking,
importer l'exemple simple et personnalisez pour vos besoins,
Betide Studio – Kit d'intégration Edgegap pour Unreal Engine,
télécharger le projet exemple et personnalisez pour vos besoins.
Dans le 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 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 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 d'Appli) pour les paramètres spécifiques à la version, les paramètres (capacité des joueurs) et les secrets.
Lisez les Variables d'Environnement injectées (Déploiement) pour obtenir des informations de déploiement, telles que l'adresse IP, le lieu, 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 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 utilisateur de type lobby social, 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 de jeu principal.
Optionnellement, 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 en utilisant DELETE_URL Injecté, 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 du Matchmaker d'Edgegap ! Si vous souhaitez en savoir plus, lisez tout à ce sujet dans notre Centre de formation.
Écrit par
l'équipe Edgegap








