
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 sur le matchmaking. Si vous rencontrez des problèmes ou des incohérences, veuillez vous assurer de vous référer à le guide original, car il est mis à jour plus fréquemment.
L'exemple suivant vous aidera à tester le flux de joueurs central de matchmaking , à savoir :
Création de l'instance de matchmaking sur le cluster d'hébergement partagé,
Définition 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 intégrer notre système de matchmaking à votre jeu :
La première étape est de créer un compte et d'utiliser notre exemple de jeu TCG. Voilà, vous avez (techniquement) fait la moitié du chemin ! Vous devrez seulement intégrer le matchmaking dans votre jeu (voir l'étape 5).
Maintenant, vous ne devez jamais suivre aveuglément un exemple de 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 guide « comment lire » qui explique la fonction de chaque règle de matchmaking (“Explorer la configuration”).
L'étape 3 (« Examiner les détails de l'instance ») couvre votre matchmaker personnel et spécifique afin de s'assurer qu'il est déployé et fonctionne avec le design de votre jeu.
L'étape 4, comme son nom l'indique (« 4. Tester l'API de tickets »), concerne le test des demandes de matchmaking faites par les joueurs pour s'assurer qu'elles 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 au sein du projet de votre moteur.
Si vous avez des problèmes de dépannage, notre Centre d'apprentissage approfondi a des conseils supplémentaires de dépannage.
1. Configurer la version gratuite
Inscrivez-vous pour votre compte Edgegap gratuit, et naviguez jusqu'à la page du tableau de bord du matchmaker.
À partir de là, cliquez sur Créer un matchmaking en premier, puis saisissez :
Un nom pour votre matchmaker – qui est purement à votre référence, par exemple
quickstart-dev
,Ensuite, téléchargez l'exemple simple suivant en tant que configuration JSON pour votre jeu TCG :
(petit rappel pour vous assurer de changer le nom
de l'application et le 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 entraînera le démarrage d'un nouveau cluster gratuit, avec votre matchmaker simple Exemple.
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 à une différence entre deux joueurs pour des jeux plus décontractés,
restreindre la différence de rang pour n'autoriser que des adversaires avec le même rang pour des jeux classés,
permettre aux joueurs de fournir leurs préférences de carte et de choisir une carte appropriée pour tout le monde,
ajouter un interface de sélection des hubs pour restreindre les adversaires à des balises de ping spécifiées,
restreindre la latence du matchmaking à un seuil maximum pour éviter d'apparier des joueurs trop éloignés,
restreindre la latence du matchmaking à une différence maximale pour maximiser l'équité de ping,
allouer plus de CPU ou de mémoire en utilisant différentes versions d'applications quand plus de joueurs sont autorisés,
Joindre en groupe pour des salons préfabriqués ou pour remplir des équipes sans dépasser les tailles d'équipe.
Commencez avec des conditions idéales et élargissez les restrictions pour garantir des matchs rapides :
relâchez lentement les restrictions de latence au fil du temps pour trouver plus de joueurs,
augmentez lentement la différence de rang autorisée pour trouver plus de joueurs,
augmentez 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 vous apparier avec des adversaires plus difficiles.
Définissez des profils de tricheurs distincts pour s'assurer 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.
Versionnement sémantique
Chaque nouvelle version utilise le versionnement sémantique pour communiquer clairement l'impact des changements en interprétant le format majeur.mineur.patch
:
les versions
majeures
incluent des changements majeurs et nécessitent une révision d'intégration,les versions
mineures
incluent des améliorations substantielles compatibles avec les versions précédentes,les versions
patch
incluent des corrections de bogues 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 garantir que les plantages clients inattendus ou les tickets abandonnés ne persistent pas et ne prennent pas de ressources de votre matchmaker, les tickets seront annulés après ticket_expiration_period
causant leur statut à changer 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 les profils de matchmaking. Chaque profil est une file d'attente de matchmaking complètement isolée, pointant vers versions d'application avec une quantité prédéfinie de CPU et de ressources mémoire (RAM) requises.
Les règles de matchmaking dans l'ensemble de règles initial 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 du match
,type de règle, également connu comme opérateur, par exemple -
nombre_joueurs
,et enfin les attributs de l'opérateur, par exemple
nombre_equipes
outaille_equipe
.
Règle du nombre de joueurs
C'est une règle spéciale définissant combien de joueurs doivent correspondre pour initier l'affectation :
nombre_equipes
fait référence au nombre d'équipes, 1 équipe peut être utilisée pour des modes coopératifs ou en libre concurrence,taille_equipe
fait référence 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 initiale.
Règle des 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 réponse aller-retour (ping) contre toutes les balises disponibles, Gen2 ne considérera que les matchs au sein d'une différence
spécifique dans les valeurs de ping, mesurée contre les balises de ping. Cela présente une solution « douce » pour diviser votre base de joueurs, permettant un appariement avec des régions voisines, améliorant particulièrement la vitesse des matchs pour les régions moins peuplées. Utilisez max_latency
pour éviter d'apparaître contre des joueurs situés loin.
Vous pouvez maintenant passer à l'étape suivante.
Notre exemple de règle balises
ci-dessus avec "difference": 50, "max_latency": 200
initialement :
Alice et Bob seront appariés, puisque Beijing 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 seront pas appariés, puisque | C-D | > 50 pour le Beacon 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 Latences" peuvent n'être définies qu'une seule fois dans vos règles de configuration initiale.
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 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'une de nos plages tarifaires.
URL de l'API sera utilisée par les clients de jeu et les serveurs de jeu pour communiquer avec Gen2.
URL de Swagger est une interface utilisateur pratique de spécification openAPI 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 en utilisant l'API, vous aurez besoin de l'URL de Swagger, de l'URL de l'API et du jeton d'authentification.
Vous pouvez maintenant passer à l'étape suivante.
4. Tester l'API de Tickets
En premier, ouvrez votre URL de Swagger pour inspecter votre schéma openAPI dans l'interface utilisateur 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
de l'étape précédente :
maintenez 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 à Exemple.
Confirmez l'importation, cela résultera en une nouvelle collection apparaissant dans la liste des Collections sur la 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 de 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 de Matchmaker, sélectionnez tickets et Créez un ticket de matchmaking, ouvrant un nouvel onglet.
Sélectionnez l'onglet Corps pour prévisualiser votre demande de ticket de joueur :
remarquez player_ip
réglé sur null
- cela provoquera l'utilisation de 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 les valeurs pour vos règles de matchmaker, dans ce cas pour la règlelatences
,la règle
nombre_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 de l'échantillon Swagger.
Cliquez sur Envoyer et examinez la réponse à votre demande de ticket de joueur :
id
est votre identifiant unique de ticket de matchmaking, gardez-le enregistré pour vérifier votre ticket plus tard,profil
confirmant le choix des profils de matchmaking,group_id
est un identifiant de groupe unique attribué à chaque ticket, un joueur solo est représenté comme un groupe de 1,voir Joindre en groupe pour le matchmaking avec vos amis ou salons,
player_ip
est l'adresse IP publique résolue du joueur, indépendamment de la méthode d'identification utilisée,assignment
est réglé sur null pour indiquer que le ticket n'a pas encore été apparié ou attribué à un serveur,created_at
fournit des informations sur quand le ticket de joueur a été créé pour l'utilisation de l'interface utilisateur de jeu,status
indique l'état actuel du ticket, tous les tickets commencent enSEARCHING
(voir Processus de matchmaking pour des détails).
Créez un second ticket en cliquant à nouveau sur Envoyer, afin que nos deux joueurs s'apparentent et qu'un serveur soit démarré.
Dans votre collection de Matchmaker, sélectionnez {ticketId} et Lire un ticket de matchmaking.
Entrez l'ID de ticket de la réponse dans l'étape précédente et cliquez sur Envoyer.

Examinez l'affectation mise à jour pour votre ticket de joueur :
le statut est passé à
MATCH_FOUND
au début, tout en maintenantassignment
réglé surnull
pour 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 ticket, et examinez l'affectation mise à jour pour votre ticket de joueur :
le statut est passé à
HOST_ASSIGNED
avec des détails sur le serveur attribué dansassignment
.
Inspectez votre nouveau déploiement dans notre tableau de bord :
remarquez que chaque déploiement est étiqueté avec tous les ID de tickets et profils pour une traçabilité accrue.

Essayez de vous connecter à partir de 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 vos tests sont terminés, Arrêtez votre déploiement pour libérer de la capacité dans votre compte pour le prochain build.
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 de joueurs,
avec le Serveur de Jeu, pour :
traiter les préférences des joueurs transmises via leurs tickets,
optionnellement pour supporter le remplissage pour ajouter ou remplacer des joueurs après le démarrage.
Pour le Client de Jeu, nous vous recommandons de fournir des mises à jour de l'état du ticket tout au long du processus de matchmaking aux joueurs en utilisant l'interface utilisateur en jeu pour la meilleure expérience possible. Voir :
Edgegap - SDK de 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 d'exemple et personnaliser selon vos besoins.
Dans le Client de Jeu, assurez-vous de traiter les erreurs non récupérables :
HTTP 404 Not Found
- le ticket a été supprimé,HTTP 500 Internal Server Error
- 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 de matchmaking initiales des joueurs.
Lisez les variables d'environnement injectées (versions d'application) pour des paramètres spécifiques à la version, des réglages (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.
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élection et chargement d'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 est en cours.
Une fois que les Clients de Jeu sont complètement chargés, les joueurs chargent/voyagent vers la scène principale de jeu.
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 soit 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 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
